35 lines
1.3 KiB
C#
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();
|
|
}
|