StepPanelTest.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package org.leumasjaffe.recipe.view;
  2. import static org.junit.jupiter.api.Assertions.*;
  3. import static org.hamcrest.MatcherAssert.assertThat;
  4. import static org.hamcrest.collection.IsArrayWithSize.arrayWithSize;
  5. import static org.hamcrest.number.OrderingComparison.greaterThanOrEqualTo;
  6. import static org.mockito.Mockito.*;
  7. import java.util.ArrayList;
  8. import java.util.Arrays;
  9. import java.util.List;
  10. import org.junit.jupiter.api.BeforeEach;
  11. import org.junit.jupiter.api.Test;
  12. import org.junit.jupiter.api.extension.ExtendWith;
  13. import org.junit.platform.runner.JUnitPlatform;
  14. import org.junit.runner.RunWith;
  15. import org.leumasjaffe.mock.MockObserverListener;
  16. import org.leumasjaffe.observer.ObserverDispatch;
  17. import org.leumasjaffe.recipe.model.Amount;
  18. import org.leumasjaffe.recipe.model.Duration;
  19. import org.leumasjaffe.recipe.model.Ingredient;
  20. import org.leumasjaffe.recipe.model.Step;
  21. import org.mockito.Mock;
  22. import org.mockito.junit.jupiter.MockitoExtension;
  23. @ExtendWith(MockitoExtension.class)
  24. @RunWith(JUnitPlatform.class)
  25. class StepPanelTest extends SwingTestCase {
  26. List<Ingredient> ingredients;
  27. @Mock Step stuff;
  28. StepPanel panel;
  29. @BeforeEach
  30. void setUp() {
  31. Duration dur = new Duration(Duration.Display.SECONDS, 0, 30);
  32. ingredients = new ArrayList<>(Arrays.asList(new Ingredient("Onion", "Sliced", new Amount("100 g"))));
  33. doReturn(dur).when(stuff).getDuration();
  34. doReturn("These are test instructions").when(stuff).getInstruction();
  35. doReturn(ingredients).when(stuff).getIngredients();
  36. panel = new StepPanel(0, stuff);
  37. }
  38. @Test
  39. void testFilledOutWithContent() {
  40. assertEquals("Step 1", panel.getLblIndex().getText());
  41. assertEquals("These are test instructions", panel.getTxtpnInstructions().getText());
  42. assertThat(panel.getPanelIngredients().getComponents(),
  43. arrayWithSize(greaterThanOrEqualTo(1)));
  44. }
  45. // TODO: Write tests for modifying the txtpnInstructions
  46. @Test
  47. void testPropogatesNotifications() {
  48. final MockObserverListener listener = spy(MockObserverListener.class);
  49. listener.setObserved(stuff);
  50. // setObserved invokes our callback.
  51. clearInvocations(listener);
  52. ObserverDispatch.notifySubscribers(ingredients.get(0));
  53. verify(listener, atLeast(1)).updateWasSignalled();
  54. }
  55. }