IngredientPanelTest.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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. stuff.setPreparation("Cut into Lardons");
  47. stuff.setAmount(new Amount("0.25 lb"));
  48. assertEquals("Onions", panel.getTxtName().getText());
  49. ObserverDispatch.notifySubscribers(stuff);
  50. assertEquals("Bacon", panel.getTxtName().getText());
  51. assertEquals(100.0, panel.getTxtAmount().getValue());
  52. assertEquals("g", panel.getTxtUnit().getText());
  53. assertEquals("Cut into Lardons", panel.getTxtPreparation().getText());
  54. }
  55. @Test
  56. void testViewUpdateToNameAltersModel() {
  57. panel.getTxtName().setText("Bacon");
  58. waitForSwing();
  59. assertEquals("Bacon", stuff.getName());
  60. }
  61. @Test
  62. void testViewUpdateToPreparationAltersModel() {
  63. panel.getTxtPreparation().setText("Cut into Lardons");
  64. waitForSwing();
  65. assertEquals("Cut into Lardons", stuff.getPreparation());
  66. }
  67. @Test
  68. void testViewUpdateToAmountDoesNotAltersModel() {
  69. panel.getTxtAmount().setValue(0.25);
  70. waitForSwing();
  71. assertEquals(100.0, stuff.getAmount().getValue());
  72. }
  73. @Test
  74. void testViewUpdateToUnitDoesNotAltersModel() {
  75. panel.getTxtUnit().setText("lb");
  76. waitForSwing();
  77. assertEquals("g", stuff.getAmount().unitName());
  78. }
  79. @Test
  80. void testUpdateToNameSendsNotify() {
  81. panel.getTxtName().setText("Bacon");
  82. waitForSwing();
  83. verify(listener).updateWasSignalled();
  84. }
  85. @Test
  86. void testUpdateToPreparationSendsNotify() {
  87. panel.getTxtPreparation().setText("Cut into Lardons");
  88. waitForSwing();
  89. verify(listener).updateWasSignalled();
  90. }
  91. @Test
  92. void testUpdateToAmountSendsNotify() {
  93. panel.getTxtAmount().setValue(0.25);
  94. waitForSwing();
  95. verify(listener, never()).updateWasSignalled();
  96. }
  97. @Test
  98. void testUpdateToUnitSendsNotify() {
  99. panel.getTxtUnit().setText("lb");
  100. waitForSwing();
  101. verify(listener, never()).updateWasSignalled();
  102. }
  103. }