@Test
void transformProperties() {

    // region *** build the TopologyTemplate ***
    TTopologyTemplate topology = new TTopologyTemplate();
    topology.addNodeTemplate(nodeTemplates.get("test_node_3"));
    // endregion
    TServiceTemplate serviceTemplate = new TServiceTemplate();
    serviceTemplate.setTopologyTemplate(topology);
    EdmmConverter edmmConverter = new EdmmConverter(nodeTypes, relationshipTypes, nodeTypeImplementations,
        relationshipTypeImplementations, artifactTemplates, edmmTypeExtendsMapping, edmm1to1Mapping);
    EntityGraph transform = edmmConverter.transform(serviceTemplate);
    assertNotNull(transform);
    assertEquals(20, transform.vertexSet().size());
    assertTrue(transform.vertexSet().stream().anyMatch(entity ->
        entity instanceof MappingEntity
            && entity.getName().equals("properties")
    ));
    Stream.of("os_family", "public_key", "ssh_port").forEach(key -> {
        assertTrue(transform.vertexSet().stream().anyMatch(entity ->
            entity instanceof MappingEntity
                && entity.getName().equals(key)
                && entity.getParent().isPresent()
                && entity.getParent().get().getName().equals("properties")
                && entity.getChildren().size() == 1
        ));
    });
    Stream.of("os_family", "public_key", "ssh_port").forEach(key -> {
        assertTrue(transform.vertexSet().stream().anyMatch(entity ->
            entity instanceof ScalarEntity
                && entity.getName().equals(key)
                && !((ScalarEntity) entity).getValue().isEmpty()
                && entity.getParent().isPresent()
                && entity.getParent().get().getName().equals("properties")
        ));
    });
}