public void schema_should_contains_simple_type_on_level_one_when_complex_type_exists()
        {
            var factory = new RequiredFieldFactory();
            var msg     = new SimpleWithComplexTypeTestMessage
            {
                FirstNestedComplexType = new FirstNestedComplexType()
            };

            var expectedRequiredField = new SimpleRequiredField(name: "StringProperty", level: 0, type: "System.String");

            factory.GetRequiredFields(msg.GetType()).ShouldContainEquivalentTo(expectedRequiredField, helper);
        }
        public void schema_should_contains_simple_type_on_level_two()
        {
            var factory = new RequiredFieldFactory();
            var msg     = new SimpleWithComplexTypeTestMessage
            {
                FirstNestedComplexType = new FirstNestedComplexType
                {
                    ThirdNestedComplexType = new ThirdNestedComplexType()
                }
            };

            var expectedRequiredField = new SimpleRequiredField(name: "ThirdNestedDateTimeProperty", level: 2, type: "System.DateTime");

            factory.GetRequiredFields(msg.GetType()).ShouldContainEquivalentTo(expectedRequiredField, helper);
        }
        public void schema_should_contains_complex_type()
        {
            var factory = new RequiredFieldFactory();
            var msg     = new SimpleWithComplexTypeTestMessage
            {
                FirstNestedComplexType = new FirstNestedComplexType
                {
                    FirstBoolProperty   = true,
                    FirstStringProperty = "NestedString"
                }
            };

            var expectedRequiredField = new ClassRequiredField(name: "FirstNestedComplexType", level: 0, type: "FirstNestedComplexType");

            factory.GetRequiredFields(msg.GetType()).ShouldContainEquivalentTo(expectedRequiredField, helper);
        }