package org.leumasjaffe.recipe.view; 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.leumasjaffe.mock.MockObserverListener; import org.leumasjaffe.observer.ObserverDispatch; import org.leumasjaffe.recipe.model.Duration; import org.leumasjaffe.recipe.model.Phase; import org.leumasjaffe.recipe.model.Preparation; import org.leumasjaffe.recipe.model.Rest; import org.leumasjaffe.recipe.model.Step; import org.leumasjaffe.recipe.viewmodel.ScaleFactor; import org.mockito.Mock; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) class PhasePanelTest extends SwingTestCase { @Spy MockObserverListener listener; final Preparation prep = new Preparation(); final Step stub = new Step(); final Rest rest = new Rest(Rest.Where.REFRIGERATOR, new Duration("10 s"), Duration.ZERO); @Mock Phase stuff; PhasePanel panel; @BeforeEach void setUp() { doReturn(Arrays.asList(stub)).when(stuff).getCooking(); doReturn(prep).when(stuff).getPreparation(); doReturn(rest).when(stuff).getRest(); panel = new PhasePanel(stuff, new ScaleFactor()); listener.setObserved(stuff); // setObserved() calls update clearInvocations(listener); } @Test void testPropogatesSignalFromSteps() { ObserverDispatch.notifySubscribers(stub); verify(listener).updateWasSignalled(); } @Test void testPropogatesSignalFromPrep() { ObserverDispatch.notifySubscribers(prep); verify(listener).updateWasSignalled(); } @Test void testPropogatesSignalFromRest() { ObserverDispatch.notifySubscribers(rest); verify(listener).updateWasSignalled(); } }