public void TraverseNodeTypesInheritance_Traverses_Nodes_From_Root_To_Its_Derived_Node_Types()
        {
            // Arrange
            var serviceTemplate = new ToscaServiceTemplate();

            serviceTemplate.NodeTypes.Add("device", new ToscaNodeType());
            serviceTemplate.NodeTypes.Add("switch", new ToscaNodeType {
                DerivedFrom = "device"
            });
            serviceTemplate.NodeTypes.Add("router", new ToscaNodeType {
                DerivedFrom = "device"
            });

            var cloudServiceArchive = new ToscaCloudServiceArchive(new ToscaMetadata());

            cloudServiceArchive.AddToscaServiceTemplate("sample.yaml", serviceTemplate);

            // Act
            var discoveredNodeTypeNames = new List <string>();

            cloudServiceArchive.TraverseNodeTypesInheritance(
                (nodeTypeName, nodeType) => { discoveredNodeTypeNames.Add(nodeTypeName); });

            // Assert
            discoveredNodeTypeNames.ShouldBeEquivalentTo(new[]
                                                         { "tosca.nodes.Root", "tosca.nodes.BlockStorage", "tosca.nodes.Compute", "device", "switch", "router" });
        }