diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/WeeklyMenuServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/WeeklyMenuServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..2481f75ddd9ba3bcd6f599a52f3a637f2feb1538 --- /dev/null +++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/WeeklyMenuServiceTest.java @@ -0,0 +1,52 @@ +package ntnu.idatt2016.v233.SmartMat.service.user; + +import ntnu.idatt2016.v233.SmartMat.service.WeeklyMenuService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.util.Arrays; +import java.util.List; + +import ntnu.idatt2016.v233.SmartMat.dto.response.WeeklyMenuResponse; +import ntnu.idatt2016.v233.SmartMat.repository.RecipeRepository; + +import static org.mockito.Mockito.*; +import static org.junit.jupiter.api.Assertions.*; + +class WeeklyMenuServiceTest { + + @InjectMocks + private WeeklyMenuService weeklyMenuService; + + @Mock + private RecipeRepository recipeRepository; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + } + + @Test + void testGetTop5RecipesWithProducts() { + long groupId = 1L; + + Object[] row1 = new Object[] {1, "Recipe 1", 10L, "Product 1", "Description 1", true}; + Object[] row2 = new Object[] {2, "Recipe 2", 15L, "Product 2", "Description 2", false}; + List<Object[]> rawData = Arrays.asList(row1, row2); + + when(recipeRepository.findTop5RecipesWithProductsRaw(groupId)).thenReturn(rawData); + + List<WeeklyMenuResponse> result = weeklyMenuService.getTop5RecipesWithProducts(groupId); + + assertEquals(2, result.size()); + assertEquals("Recipe 1", result.get(0).getRecipeName()); + assertEquals(10L, result.get(0).getEan()); + assertEquals("Product 1", result.get(0).getItemName()); + assertEquals("Recipe 2", result.get(1).getRecipeName()); + assertEquals(15L, result.get(1).getEan()); + assertEquals("Product 2", result.get(1).getItemName()); + } +}