package org.leumasjaffe.recipe.view; import static org.mockito.Mockito.*; import javax.swing.JFormattedTextField; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.leumasjaffe.observer.ObservableListener; import org.leumasjaffe.observer.ObserverDispatch; import org.leumasjaffe.recipe.controller.ReplaceChildrenAction; import org.leumasjaffe.recipe.model.Ingredient; import org.leumasjaffe.recipe.model.Phase; import org.leumasjaffe.recipe.model.Preparation; import org.leumasjaffe.recipe.viewmodel.ScaleFactor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) class PreparationPanelTest extends SwingTestCase { @Mock ObservableListener durationController; @Mock ReplaceChildrenAction controller; Preparation stuff = new Preparation(); @Mock Phase parent; @InjectMocks PreparationPanel panel = new PreparationPanel(new ScaleFactor()); @BeforeEach void setUp() { doReturn(stuff).when(parent).getPreparation(); panel.setModel(parent); } @Test void testHasContent() { verify(durationController, times(1)).setObserved(same(stuff)); verify(controller, times(1)).accept(any(), same(stuff)); } @Test void testUpdatesNumberOfChildrenWhenNotified() { ObserverDispatch.notifySubscribers(parent); verify(controller, times(2)).accept(any(), same(stuff)); } }