Skip to content
Snippets Groups Projects
RecipeSearchTest.java 2.35 KiB
Newer Older
package mi.hdm.recipes;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.NullAndEmptySource;
import org.junit.jupiter.params.provider.ValueSource;

import java.util.List;

import static org.junit.jupiter.api.Assertions.assertEquals;

class RecipeSearchTest {
    private final static Recipe r1 = ValidObjectsPool.getValidRecipeOne();
    private final static Recipe r2 = ValidObjectsPool.getValidRecipeTwo();

    private final static Category c1 = ValidObjectsPool.getValidCategoryOne();
    private final static Category c2 = ValidObjectsPool.getValidCategoryTwo();

    private List<Recipe> recipes;
    //private RecipeSearch underTest; //not needed when methods are static

    @BeforeEach
    public void setup() {
        recipes = List.of(r1, r2);
        //underTest = new RecipeSearch(recipes); //not needed when methods are static
    @ParameterizedTest
    @NullAndEmptySource
    @ValueSource(strings = {"   \n", ".", "!", "..."})
    public void testSearchByEmptyQuery(String input) {
        assertEquals(recipes, RecipeSearch.searchByQuery(recipes, input));
    @ParameterizedTest
    @ValueSource(strings = {"valid", "valid!", "...valid"})
    public void testSearchByNameQuery(String query) {
        //given
        List<Recipe> expected = List.of(r1);

        //when
        List<Recipe> result = RecipeSearch.searchByQuery(recipes, query);

        //expected
        assertEquals(expected, result);
    }

    @Test
    public void testSearchByIngredientsQuery() {
        //given
        List<Recipe> expected = List.of(r1);
        String query = "Apple ";

        //when
        List<Recipe> result = RecipeSearch.searchByQuery(recipes, query);
    @ParameterizedTest
    @NullAndEmptySource
    public void testSearchByEmptyCategories(List<Category> input) {
        assertEquals(recipes, RecipeSearch.searchByCategory(recipes, input));
        assertEquals(List.of(r1, r2), RecipeSearch.searchByCategory(recipes, List.of(c1)));
        assertEquals(List.of(r2), RecipeSearch.searchByCategory(recipes, List.of(c1, c2)));
        assertEquals(List.of(r2), RecipeSearch.searchByCategory(recipes, List.of(c2)));