using TrainingPlanner.Application; using TrainingPlanner.Domain; namespace TrainingPlanner.Tests; public class ExerciseSearchTests { [Fact] public void ExactAndPrefixMatchesComeBeforeMatchesInsideName() { var exercises = Names("Обратный жим", "Жим гантелей", "Жим", "Приседания"); var result = ExerciseSearch.Find(exercises, " ЖИМ "); Assert.Equal(new[] { "Жим", "Жим гантелей", "Обратный жим" }, result.Select(exercise => exercise.Name)); } [Fact] public void AllWordsMustMatchIgnoringTheirOrderAndYoSpelling() { var result = ExerciseSearch.Find(Names("Жим гантелей лёжа", "Жим штанги лёжа", "Жим гантелей стоя"), "ЛЕЖА гант"); Assert.Single(result); Assert.Equal("Жим гантелей лёжа", result[0].Name); } [Fact] public void EmptyQueryReturnsAllExercisesAndUnknownQueryReturnsNone() { var exercises = Names("Тяга", "Жим"); Assert.Equal(2, ExerciseSearch.Find(exercises, " ").Count); Assert.Empty(ExerciseSearch.Find(exercises, "Приседания")); } private static List Names(params string[] names) => names.Select(name => new LibraryExercise { Name = name }).ToList(); }