浏览代码

Add test for RecipeCardPanel.

Sam Jaffe 5 年之前
父节点
当前提交
614fa83921

+ 3 - 2
src/main/lombok/org/leumasjaffe/recipe/model/Element.java

@@ -1,5 +1,6 @@
 package org.leumasjaffe.recipe.model;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Stream;
 
@@ -10,8 +11,8 @@ import lombok.EqualsAndHashCode;
 
 @Data @EqualsAndHashCode(callSuper=false)
 public class Element extends Observable.Instance implements CompoundRecipeComponent {
-	String name;
-	List<Phase> phases;
+	String name = "";
+	List<Phase> phases = new ArrayList<>();
 
 	@Override
 	public Stream<Ingredient> getIngredientsAsStream() {

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

@@ -15,7 +15,7 @@ public class RecipeCard implements CompoundRecipeComponent {
 	String description;
 	int servings;
 	// TODO: Nutrition information
-	Optional<ImageIcon> photo; // TODO JSONIZATION	
+	Optional<ImageIcon> photo = Optional.empty(); // TODO JSONIZATION	
 	List<Element> elements = new ArrayList<>();
 	
 	@Override

+ 3 - 4
src/main/lombok/org/leumasjaffe/recipe/view/RecipeCardPanel.java

@@ -9,16 +9,15 @@ import org.leumasjaffe.recipe.model.RecipeCard;
 import org.leumasjaffe.recipe.view.summary.SummaryPanel;
 
 import lombok.AccessLevel;
-import lombok.Getter;
 import lombok.experimental.FieldDefaults;
 
 import javax.swing.JPanel;
 
 @SuppressWarnings("serial")
-@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
+@FieldDefaults(level=AccessLevel.PRIVATE)
 public class RecipeCardPanel extends JSplitPane implements FileController.ViewModel {
-	@Getter(AccessLevel.PACKAGE) SummaryPanel summaryPanel;
-	@Getter(AccessLevel.PACKAGE) JPanel rightPanel;
+	SummaryPanel summaryPanel;
+	JPanel rightPanel;
 	
 	public RecipeCardPanel() {
 		rightPanel = new JPanel();

+ 39 - 0
src/test/java/org/leumasjaffe/recipe/view/RecipeCardPanelTest.java

@@ -0,0 +1,39 @@
+package org.leumasjaffe.recipe.view;
+
+import static org.mockito.Mockito.*;
+
+import java.util.Arrays;
+
+import javax.swing.JPanel;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.runner.RunWith;
+import org.leumasjaffe.recipe.model.Element;
+import org.leumasjaffe.recipe.model.RecipeCard;
+import org.leumasjaffe.recipe.view.summary.SummaryPanel;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+@RunWith(JUnitPlatform.class)
+class RecipeCardPanelTest extends SwingTestCase {
+	
+	@Mock SummaryPanel summaryPanel;
+	@Mock JPanel rightPanel;
+	@InjectMocks RecipeCardPanel panel;
+	
+	@Test
+	void testAddsEachElementToEachMember() {
+		RecipeCard card = new RecipeCard();
+		card.setElements(Arrays.asList(new Element(), new Element()));
+		
+		panel.setModel(card);
+		
+		verify(summaryPanel, times(2)).addElement(any());
+		verify(rightPanel, times(2)).add(any(ElementPanel.class));
+	}
+
+}