public void schema_should_contains_datetime_field()
        {
            var msg = new SimpleTypesTestMessage
            {
                DateTimeProperty = DateTime.Now
            };
            var factory = new RequiredFieldFactory();
            var expectedRequiredField = new SimpleRequiredField(name: "DateTimeProperty", level: 0, type: "System.DateTime");

            factory.GetRequiredFields(msg.GetType()).ShouldContainEquivalentTo(expectedRequiredField, helper);
        }
        public void schema_should_contains_byte_field()
        {
            var msg = new SimpleTypesTestMessage
            {
                BoolProperty = true
            };
            var factory = new RequiredFieldFactory();
            var expectedRequiredField = new SimpleRequiredField(name: "ByteProperty", level: 0, type: "System.Byte");

            factory.GetRequiredFields(msg.GetType()).ShouldContainEquivalentTo(expectedRequiredField, helper);
        }
        public void schema_should_contains_string_field()
        {
            var msg = new SimpleTypesTestMessage
            {
                IntTestProperty = 100
            };
            var factory = new RequiredFieldFactory();
            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_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);
        }