Files
TrainigPlaner/tests/TrainingPlanner.Tests/ExerciseSearchTests.cs
T
2026-09-30 15:05:05 +03:00

35 lines
1.3 KiB
C#

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<LibraryExercise> Names(params string[] names)
=> names.Select(name => new LibraryExercise { Name = name }).ToList();
}