diff --git a/src/main/java/de/ozgcloud/formcycle/formdata/FormStructureParser.java b/src/main/java/de/ozgcloud/formcycle/formdata/FormStructureParser.java index 589ca3f994d61e783146be4eeff4843c9d10bb0a..d490d348b63297732673f58956244a594103f48d 100644 --- a/src/main/java/de/ozgcloud/formcycle/formdata/FormStructureParser.java +++ b/src/main/java/de/ozgcloud/formcycle/formdata/FormStructureParser.java @@ -58,7 +58,7 @@ class FormStructureParser { } List<FormNode> getResultNodes(XItem xItem) { - if (CONTAINER_NAME_ANTRAGSTELLER.equalsIgnoreCase(xItem.getName()) || containerNodes.isEmpty()) { + if (CONTAINER_NAME_ANTRAGSTELLER.equalsIgnoreCase(xItem.getName())) { return resultNodes; } return getNextContainerNode(xItem.getParentId()).map(FormNode::getNestedElements).orElse(resultNodes); diff --git a/src/test/java/de/ozgcloud/formcycle/formdata/FormStructureParserITCase.java b/src/test/java/de/ozgcloud/formcycle/formdata/FormStructureParserITCase.java index 5efd169066f0e1a74979ff151efc1f592a915db4..68004af775c1a2c9ca0091a1c65ee31dd1c407dd 100644 --- a/src/test/java/de/ozgcloud/formcycle/formdata/FormStructureParserITCase.java +++ b/src/test/java/de/ozgcloud/formcycle/formdata/FormStructureParserITCase.java @@ -37,7 +37,6 @@ class FormStructureParserITCase { private static final String FS_CONTAINER_ID = "xi-fs-n"; private static final String NESTED_ITEM_ID1 = "nested1"; - private static final String NESTED_ITEM_ID2 = "nested2"; private static final String NEXT_ITEM_ID = "new-item"; @Test @@ -59,49 +58,35 @@ class FormStructureParserITCase { } @Test - void shouldNotParseTextItem() { - var structureParser = new FormStructureParser(createItem(SPAN)); - - var formNodes = structureParser.parse(); + void shouldNotParseSpanItem() { + var formNodes = new FormStructureParser(createItem(SPAN)).parse(); assertThat(formNodes).isEmpty(); } - @Test - void shouldParseAllInputItems() { - var formNodes = new FormStructureParser(StructureMockFactory.create()).parse(); - - assertThat(formNodes).hasSize(2); - } - @Test void shouldParseNestedFieldSetContainer() { - var expectedFsNode = FormNodeTestFactory.createBuilder().values(null).itemId(FS_CONTAINER_ID).build(); - var expectedTfNode = FormNodeTestFactory.createBuilder().values(null).itemId(NEXT_ITEM_ID).build(); - var formNodes = new FormStructureParser(initNestedMap()).parse(); assertThat(formNodes).hasSize(2); - var containerNodes = formNodes.get(0).getNestedElements(); - assertThat(containerNodes).hasSize(2).first().usingRecursiveComparison().ignoringFields("nestedElements").isEqualTo(expectedFsNode); - assertThat(containerNodes.get(1)).usingRecursiveComparison().ignoringFields("nestedElements").isEqualTo(expectedTfNode); + assertHasContainerNodes(formNodes.get(0)); + assertThat(formNodes.get(1).getItemId()).isEqualTo(ITEM_ID); } - @Test - void shouldParseItemsInFieldSet() { - var expectedTfNode = FormNodeTestFactory.createBuilder().values(null).itemId(NESTED_ITEM_ID1).build(); - - var fieldSetNodes = new FormStructureParser(initNestedMap()).parse().get(0).getNestedElements().get(0).getNestedElements(); + private void assertHasContainerNodes(FormNode containerNode) { + var expectedFieldSetNode = FormNodeTestFactory.createBuilder().values(null).itemId(FS_CONTAINER_ID).build(); + var expectedTextFieldNode = FormNodeTestFactory.createBuilder().values(null).itemId(NEXT_ITEM_ID).build(); - assertThat(fieldSetNodes).hasSize(1).first().usingRecursiveComparison().ignoringFields("nestedElements").isEqualTo(expectedTfNode); + var containerNodes = containerNode.getNestedElements(); + assertThat(containerNodes).hasSize(2); + assertThat(containerNodes.get(0)).usingRecursiveComparison().isEqualTo(expectedFieldSetNode); + assertThat(containerNodes.get(1)).usingRecursiveComparison().isEqualTo(expectedTextFieldNode); } private Map<String, XItem> initNestedMap() { var containerWithItem = createPageItem(); containerWithItem.put(CONTAINER_ITEM_ID, getMock(CONTAINER, PAGE_ITEM_ID)); containerWithItem.put(FS_CONTAINER_ID, getMock(FIELD_SET, FS_CONTAINER_ID, CONTAINER_ITEM_ID, ITEM_TITLE, ITEM_NAME)); - containerWithItem.put(NESTED_ITEM_ID1, getMock(TEXT_FIELD, NESTED_ITEM_ID1, FS_CONTAINER_ID, ITEM_TITLE, ITEM_NAME)); - containerWithItem.put(NESTED_ITEM_ID2, getMock(SPAN, NESTED_ITEM_ID2, FS_CONTAINER_ID, ITEM_TITLE, ITEM_NAME)); containerWithItem.put(NEXT_ITEM_ID, getMock(TEXT_FIELD, NEXT_ITEM_ID, CONTAINER_ITEM_ID, ITEM_TITLE, ITEM_NAME)); containerWithItem.put(ITEM_ID, getMock(CHECKBOX, PAGE_ITEM_ID)); diff --git a/src/test/java/de/ozgcloud/formcycle/formdata/FormStructureParserTest.java b/src/test/java/de/ozgcloud/formcycle/formdata/FormStructureParserTest.java index de1666dace03a124f3b51103b6f1448504d58b02..049f1bc247f8a2c9eec1c1f67e83b3fe53d86d4a 100644 --- a/src/test/java/de/ozgcloud/formcycle/formdata/FormStructureParserTest.java +++ b/src/test/java/de/ozgcloud/formcycle/formdata/FormStructureParserTest.java @@ -239,7 +239,7 @@ class FormStructureParserTest { @Nested class TestGetResultNodes { - protected List<FormNode> expectedResultNodes = List.of(FormNodeTestFactory.create()); + private final List<FormNode> expectedResultNodes = List.of(FormNodeTestFactory.create()); @BeforeEach void init() { @@ -265,37 +265,42 @@ class FormStructureParserTest { assertThat(nodes).isSameAs(expectedResultNodes); } - @Test - void shouldReturnRootWhenNoParentNode() { - injectContainerNodes(); + @Nested + class TestGetNextContainer { - var nodes = structureParser.getResultNodes(getMock(CONTAINER)); + @BeforeEach + void init() { + injectContainerNodes(); + } - assertThat(nodes).isSameAs(expectedResultNodes); - } + @Test + void shouldReturnRootWhenNoParentNode() { + var nodes = structureParser.getResultNodes(getMock(CONTAINER)); - @Test - void shouldCallGetNextContainerNode() { - var parentId = "parentId"; - var xItem = getMock(CONTAINER); - when(xItem.getParentId()).thenReturn(parentId); - injectContainerNodes(); + assertThat(nodes).isSameAs(expectedResultNodes); + } - structureParser.getResultNodes(xItem); + @Test + void shouldCallGetNextContainerNode() { + var parentId = "parentId"; + var xItem = getMock(CONTAINER); + when(xItem.getParentId()).thenReturn(parentId); - verify(structureParser).getNextContainerNode(parentId); - } + structureParser.getResultNodes(xItem); - @Test - void shouldReturnNestedNodes() { - injectContainerNodes(); - var formNode = FormNodeTestFactory.create(); - doReturn(Optional.of(formNode)).when(structureParser).getNextContainerNode(anyString()); - var expectedNestedCollection = formNode.getNestedElements(); + verify(structureParser).getNextContainerNode(parentId); + } - var nodes = structureParser.getResultNodes(getMock(CONTAINER)); + @Test + void shouldReturnNestedNodes() { + var formNode = FormNodeTestFactory.create(); + doReturn(Optional.of(formNode)).when(structureParser).getNextContainerNode(anyString()); + var expectedNestedCollection = formNode.getNestedElements(); - assertThat(nodes).isSameAs(expectedNestedCollection); + var nodes = structureParser.getResultNodes(getMock(CONTAINER)); + + assertThat(nodes).isSameAs(expectedNestedCollection); + } } } @@ -357,4 +362,5 @@ class FormStructureParserTest { containerNodesField.set(structureParser, containerNodes); return containerNodes; } + } \ No newline at end of file