IngredientPanelTest.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package org.leumasjaffe.recipe.view;
  2. import static org.junit.jupiter.api.Assertions.*;
  3. import static org.mockito.Mockito.*;
  4. import org.junit.jupiter.api.BeforeEach;
  5. import org.junit.jupiter.api.Test;
  6. import org.junit.jupiter.api.extension.ExtendWith;
  7. import org.junit.platform.runner.JUnitPlatform;
  8. import org.junit.runner.RunWith;
  9. import org.leumasjaffe.mock.MockObserverListener;
  10. import org.leumasjaffe.observer.ObserverDispatch;
  11. import org.leumasjaffe.recipe.model.Amount;
  12. import org.leumasjaffe.recipe.model.Ingredient;
  13. import org.mockito.Spy;
  14. import org.mockito.junit.jupiter.MockitoExtension;
  15. @ExtendWith(MockitoExtension.class)
  16. @RunWith(JUnitPlatform.class)
  17. class IngredientPanelTest extends SwingTestCase {
  18. @Spy MockObserverListener listener;
  19. Ingredient stuff;
  20. IngredientPanel panel;
  21. @BeforeEach
  22. void setUp() {
  23. stuff = new Ingredient("Onions", "Sliced", new Amount("100 g"));
  24. panel = new IngredientPanel(stuff);
  25. listener.setObserved(stuff);
  26. // setObserved invokes our callback.
  27. clearInvocations(listener);
  28. }
  29. @Test
  30. void testFilledOutWithContent() {
  31. assertEquals("Onions", panel.getTxtName().getText());
  32. assertEquals("Sliced", panel.getTxtPreparation().getText());
  33. assertEquals("100", panel.getTxtAmount().getText());
  34. assertEquals("g", panel.getTxtUnit().getText());
  35. }
  36. @Test
  37. void testContentIsEditable() {
  38. assertTrue(panel.getTxtName().isEditable());
  39. assertTrue(panel.getTxtPreparation().isEditable());
  40. assertTrue(panel.getTxtAmount().isEditable());
  41. assertTrue(panel.getTxtUnit().isEditable());
  42. }
  43. @Test
  44. void testIsSubscribedToUpdates() {
  45. stuff.setName("Bacon");
  46. assertEquals("Onions", panel.getTxtName().getText());
  47. ObserverDispatch.notifySubscribers(stuff);
  48. assertEquals("Bacon", panel.getTxtName().getText());
  49. // TODO: I need to add hook-ups for the rest of the fields, too
  50. }
  51. // TODO: I need to add hook-ups for the rest of the fields, too
  52. @Test
  53. void testViewUpdateAltersModel() {
  54. panel.getTxtName().setText("Bacon");
  55. waitForSwing();
  56. assertEquals("Bacon", stuff.getName());
  57. }
  58. // TODO: I need to add hook-ups for the rest of the fields, too
  59. @Test
  60. void testViewUpdateSendsNotify() {
  61. panel.getTxtName().setText("Bacon");
  62. waitForSwing();
  63. verify(listener).updateWasSignalled();
  64. }
  65. }