Forráskód Böngészése

Fix a bug in Phase.
Add more test coverage.

Sam Jaffe 5 éve
szülő
commit
e3d21a44ea

+ 1 - 1
src/main/lombok/org/leumasjaffe/recipe/model/Phase.java

@@ -15,7 +15,7 @@ public class Phase extends Observable.Instance implements CompoundRecipeComponen
 	int id = 0; // TODO Fix this
 	int[] dependsOn = {}; // decltype(id)[]
 	String vessel = "";
-	Preparation preparation = new Preparation();
+	Preparation preparation = new Preparation(Duration.ZERO, this::getIngredients);
 	List<Step> cooking = new ArrayList<>();
 	Rest rest = new Rest();
 	

+ 48 - 0
src/test/java/org/leumasjaffe/recipe/controller/AddPhaseActionTest.java

@@ -0,0 +1,48 @@
+package org.leumasjaffe.recipe.controller;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
+import static org.mockito.Mockito.*;
+
+import javax.swing.JPanel;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.leumasjaffe.recipe.model.Element;
+import org.leumasjaffe.recipe.view.PhasePanel;
+import org.mockito.InjectMocks;
+import org.mockito.Spy;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+class AddPhaseActionTest {
+	
+	@Spy Element model;
+	@Spy JPanel view;
+	@InjectMocks AddPhaseAction action;
+	
+	@BeforeEach
+	void setUp() {
+		action.setModel(model);
+	}
+
+	@Test
+	void testAddsElementToModelOnTrigger() {
+		assertThat(model.getPhases(), hasSize(0));
+
+		action.actionPerformed(null);
+		
+		assertThat(model.getPhases(), hasSize(1));
+	}
+
+
+	@Test
+	void testAddsElementToViewOnTrigger() {
+		verify(view, never()).add(any(PhasePanel.class));
+
+		action.actionPerformed(null);
+		
+		verify(view).add(any(PhasePanel.class));
+	}
+}

+ 41 - 0
src/test/java/org/leumasjaffe/recipe/model/PhaseTest.java

@@ -25,6 +25,47 @@ class PhaseTest {
 		assertEquals(Duration.ZERO, phase.getDuration());
 	}
 	
+	@Test
+	void testCollatedDurationSumsStepDurations() {
+		final Phase phase = new Phase();
+		final Step step = new Step();
+		step.setDuration(new Duration("10 s"));
+		phase.getCooking().add(step);
+		phase.getCooking().add(step);
+
+		assertEquals(new Duration("20 s"), phase.getCollatedDuration().totalTime);
+	}
+	
+	@Test
+	void testCollatedDurationIgnoresPrepIfNoPrepIngredients() {
+		final Phase phase = new Phase();
+		phase.getPreparation().setDuration(new Duration("15 s"));
+		final Step step = new Step();
+		step.setDuration(new Duration("10 s"));
+		phase.getCooking().add(step);
+
+		assertEquals(Duration.ZERO, phase.getCollatedDuration().prepTime);
+		assertEquals(new Duration("10 s"), phase.getCollatedDuration().totalTime);
+		
+		step.getIngredients().add(new Ingredient("", "-", new Amount("1 ct")));
+		assertEquals(new Duration("15 s"), phase.getCollatedDuration().prepTime);
+		assertEquals(new Duration("25 s"), phase.getCollatedDuration().totalTime);
+	}
+	
+	@Test
+	void testCollatedDurationIgnoresRestIfWhereIsNone() {
+		final Phase phase = new Phase();
+		phase.getRest().setDuration(new Duration("15 s"));
+		final Step step = new Step();
+		step.setDuration(new Duration("10 s"));
+		phase.getCooking().add(step);
+
+		assertEquals(new Duration("10 s"), phase.getCollatedDuration().totalTime);
+
+		phase.getRest().setWhere(Rest.Where.REFRIGERATOR);
+		assertEquals(new Duration("25 s"), phase.getCollatedDuration().totalTime);
+	}
+	
 	@Test
 	void testSumsTogetherStepDurations() {
 		final Phase phase = new Phase();