package org.leumasjaffe.recipe.view.summary; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsArrayWithSize.arrayWithSize; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; import java.util.Arrays; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.platform.runner.JUnitPlatform; import org.junit.runner.RunWith; import org.leumasjaffe.observer.ObserverDispatch; import org.leumasjaffe.recipe.model.Amount; import org.leumasjaffe.recipe.model.Ingredient; import org.leumasjaffe.recipe.view.SwingTestCase; import org.leumasjaffe.recipe.model.Element; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) @RunWith(JUnitPlatform.class) class ElementPanelTest extends SwingTestCase { @Mock Element stuff; ElementPanel panel; @BeforeEach void setUp() { doReturn("Curry").when(stuff).getName(); doReturn(Arrays.asList( new Ingredient("Onions", "", new Amount("100 g")), new Ingredient("Garlic", "", new Amount("2 tsp")))) .when(stuff).getIngredients(); panel = new ElementPanel(stuff); } @Test void testHasContent() { assertEquals("Curry", panel.getLblProductName().getText()); assertThat(panel.getPanelIngredients().getComponents(), arrayWithSize(2)); } @Test void testRegeneratesListWhenProductNotify() { doReturn(Arrays.asList(new Ingredient("Onions", "", new Amount("100 g")))) .when(stuff).getIngredients(); ObserverDispatch.notifySubscribers(stuff); waitForSwing(); assertThat(panel.getPanelIngredients().getComponents(), arrayWithSize(1)); } }