package no.met.metadataeditor.widget; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import no.met.metadataeditor.EditorWidgetView; import no.met.metadataeditor.dataTypes.EditorVariableContent; import no.met.metadataeditor.dataTypes.attributes.DataAttribute; import no.met.metadataeditor.dataTypes.attributes.StringAttribute; import org.junit.Test; public class EditorWidgetTest { @Test public void testGenerateWidgetViewSingleValue() { StringAttribute sa = new StringAttribute(); sa.addAttribute("str", "dummy"); List<EditorVariableContent> evcl = createEditorVariableContent(sa); EditorWidget ew = generateStringWidget("some_var", 1, 1); ew.generateWidgetViews(evcl); List<EditorWidgetView> ewv = ew.getWidgetViews(); assertEquals(1, ewv.size()); assertEquals(ewv.get(0).valuesAsAttriubte(), sa); } @Test public void testGenerateWidgetViewMultiValue() { StringAttribute sa1 = new StringAttribute(); sa1.addAttribute("str", "dummy1"); StringAttribute sa2 = new StringAttribute(); sa2.addAttribute("str", "dummy2"); StringAttribute sa3 = new StringAttribute(); sa3.addAttribute("str", "dummy3"); List<EditorVariableContent> evcl = createEditorVariableContent(sa1, sa2, sa3); EditorWidget ew = generateStringWidget("some_var", 1, 1); ew.generateWidgetViews(evcl); List<EditorWidgetView> ewv = ew.getWidgetViews(); assertEquals(3, ewv.size()); assertEquals(ewv.get(0).valuesAsAttriubte(), sa1); assertEquals(ewv.get(1).valuesAsAttriubte(), sa2); assertEquals(ewv.get(2).valuesAsAttriubte(), sa3); } @Test public void testGenerateWidgetViewMinOccurs() { StringAttribute sa = new StringAttribute(); sa.addAttribute("str", "dummy1"); StringAttribute created = new StringAttribute(); created.addAttribute("str", ""); List<EditorVariableContent> evcl = createEditorVariableContent(sa); EditorWidget ew = generateStringWidget("some_var", 2, 2); ew.generateWidgetViews(evcl); List<EditorWidgetView> ewv = ew.getWidgetViews(); assertEquals(2, ewv.size()); assertEquals(ewv.get(0).valuesAsAttriubte(), sa); assertEquals(ewv.get(1).valuesAsAttriubte(), created); } @Test public void testGenerateWidgetViewChildren() { StringAttribute sa = new StringAttribute(); sa.addAttribute("str", "dummy1"); StringAttribute childSa1 = new StringAttribute(); childSa1.addAttribute("str", "dummy2"); StringAttribute childSa2 = new StringAttribute(); childSa2.addAttribute("str", "dummy3"); StringAttribute createdSa = new StringAttribute(); createdSa.addAttribute("str", ""); List<EditorVariableContent> evcl = createEditorVariableContent(sa); addChildVariableContent(evcl.get(0), "child1", childSa1); addChildVariableContent(evcl.get(0), "child2", childSa2); EditorWidget child1 = generateStringWidget("child1", 0, 1); EditorWidget child2 = generateStringWidget("child2", 4, 4); EditorWidget ew = generateStringWidget("some_var", 1, 1, child1, child2); ew.generateWidgetViews(evcl); List<EditorWidgetView> ewv = ew.getWidgetViews(); assertEquals(1, ewv.size()); assertEquals(ewv.get(0).valuesAsAttriubte(), sa); assertEquals(1, ewv.get(0).getChildren().get(0).getWidgetViews().size()); assertEquals(childSa1, ewv.get(0).getChildren().get(0).getWidgetViews().get(0).valuesAsAttriubte()); assertEquals(4, ewv.get(0).getChildren().get(1).getWidgetViews().size()); assertEquals(childSa2, ewv.get(0).getChildren().get(1).getWidgetViews().get(0).valuesAsAttriubte()); assertEquals(createdSa, ewv.get(0).getChildren().get(1).getWidgetViews().get(1).valuesAsAttriubte()); assertEquals(createdSa, ewv.get(0).getChildren().get(1).getWidgetViews().get(2).valuesAsAttriubte()); assertEquals(createdSa, ewv.get(0).getChildren().get(1).getWidgetViews().get(3).valuesAsAttriubte()); } @Test public void testGetContentSingleValue(){ EditorWidget ew = generateStringWidget("test", 0, 1); addStringWidgetViews(ew, "dummy123"); List<EditorVariableContent> evcl = ew.getContent(); assertEquals(1, evcl.size()); assertEquals("dummy123", evcl.get(0).getAttrs().getAttribute("str") ); } @Test public void testGetContentMultiValue(){ EditorWidget ew = generateStringWidget("test", 0, 5); addStringWidgetViews(ew, "dummy123"); addStringWidgetViews(ew, "dummy321"); addStringWidgetViews(ew, "dummy333"); List<EditorVariableContent> evcl = ew.getContent(); assertEquals(3, evcl.size()); assertEquals("dummy123", evcl.get(0).getAttrs().getAttribute("str") ); assertEquals("dummy321", evcl.get(1).getAttrs().getAttribute("str") ); assertEquals("dummy333", evcl.get(2).getAttrs().getAttribute("str") ); } @Test public void testGetContentWithChildren(){ EditorWidget child1 = generateStringWidget("child1", 0, 1); EditorWidget child2 = generateStringWidget("child2", 0, 3); EditorWidget ew = generateStringWidget("test", 0, 1, child1, child2); EditorWidgetView parentEwv = addStringWidgetViews(ew, "parent"); // widget views need to be attached to the widgets in the parent's editor widget view addStringWidgetViews(parentEwv.getChildren().get(0), "child1 value"); addStringWidgetViews(parentEwv.getChildren().get(1), "child2_1"); addStringWidgetViews(parentEwv.getChildren().get(1), "child2_2"); addStringWidgetViews(parentEwv.getChildren().get(1), "child2_3"); List<EditorVariableContent> evcl = ew.getContent(); assertEquals(1, evcl.size()); assertEquals("parent", evcl.get(0).getAttrs().getAttribute("str") ); Map<String, List<EditorVariableContent>> childContent = evcl.get(0).getChildren(); assertTrue(childContent.containsKey("child1")); assertEquals(1, childContent.get("child1").size()); assertEquals("child1 value", childContent.get("child1").get(0).getAttrs().getAttribute("str")); assertTrue(childContent.containsKey("child2")); assertEquals(3, childContent.get("child2").size()); assertEquals("child2_1", childContent.get("child2").get(0).getAttrs().getAttribute("str")); assertEquals("child2_2", childContent.get("child2").get(1).getAttrs().getAttribute("str")); assertEquals("child2_3", childContent.get("child2").get(2).getAttrs().getAttribute("str")); } private List<EditorVariableContent> createEditorVariableContent(DataAttribute... attributes){ List<EditorVariableContent> evcl = new ArrayList<>(); for( DataAttribute attr : attributes ){ EditorVariableContent evc = new EditorVariableContent(); evc.setAttrs(attr); evcl.add(evc); } return evcl; } private void addChildVariableContent(EditorVariableContent parentContent, String name, DataAttribute... childAttributes){ List<EditorVariableContent> childContent = createEditorVariableContent(childAttributes); parentContent.addChild(name, childContent); } private EditorWidgetView addStringWidgetViews(EditorWidget widget, String attrValue){ Map<String, String> values = new HashMap<>(); values.put("str", attrValue); EditorWidgetView ewv = widget.createWidgetView(values); widget.getWidgetViews().add(ewv); return ewv; } private EditorWidget generateStringWidget(String variableName, int minOccurs, int maxOccurs, EditorWidget... children){ EditorWidget widget = new StringWidget(); widget.setVariableName(variableName); widget.setMinOccurs(minOccurs); widget.setMaxOccurs(maxOccurs); widget.setAttributeClass(StringAttribute.class); List<EditorWidget> childWidgets = new ArrayList<>(); for( EditorWidget child : children ){ childWidgets.add(child); } widget.setChildren(childWidgets); return widget; } }