Example #1
0
        public void It_generates_the_correct_property_for_a_standard_reference_attribute_that_matches_an_item_in_the_json_environment_variable()
        {
            // Where's the environment variable
            // Arrange
            var it = new IdmCodeGenerator(null);
            var bindingDescription = new BindingDescription
            {
                DisplayName        = "Reference Attrbute",
                Description        = "A standard reference attribute",
                Required           = true, // should be ignored - reference attributes can't be required
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "Reference",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "PropertyName"
                },
            };

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.StandardReferenceAttributeWhereTypeFoundInJsonFile, result.Item1);
            ExAssert.AreEqual(TestData.StandardReferenceAttributeWhereTypeFoundInJsonFileTests, result.Item2);
        }
Example #2
0
        public void It_generates_the_correct_property_for_a_reference_attribute_doesnt_match_any_object_type()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName =
                    "Reference Attrbute",
                Description =
                    "A standard reference attribute",
                Required           = true, // should be ignored - reference attributes can't be required
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "Reference",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "PropertyName2"
                },
            };

            var it = new IdmCodeGenerator(null);


            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.ReferenceAttributeWhereTypeNotFound, result.Item1);
            ExAssert.AreEqual(TestData.ReferenceAttributeWhereTypeNotFoundTests, result.Item2);
        }
Example #3
0
        public void It_generates_the_correct_property_for_a_standard_reference_attribute_that_matches_an_object_type_name()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName =
                    "Reference Attrbute",
                Description =
                    "A standard reference attribute",
                Required           = true, // should be ignored - reference attributes can't be required
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "Reference",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "PropertyName"
                },
                // The generator needs the smarts of the generator or,
                // "How do I know that a "DisplayedOwner" is a "Person" object?
            };

            var it = new IdmCodeGenerator(null, null, @"[ { ""AttrName"": ""PropertyName"", ""ObjType"": ""Person"" } ]");

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.StandardReferenceAttributeWhereTypeMatchesName, result.Item1);
            ExAssert.AreEqual(TestData.StandardReferenceAttributeWhereTypeMatchesNameTests, result.Item2);
        }
Example #4
0
        public void It_generates_the_correct_property_for_a_non_required_boolean()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName =
                    "Boolean Attrbute",
                Description =
                    "A boolean attribute",
                Required           = false,
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "Boolean",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "PropertyName"
                },
            };

            var it = new IdmCodeGenerator(null);

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.BoolAttributeNotRequired, result.Item1);
            ExAssert.AreEqual(TestData.BoolAttributeNotRequiredTests, result.Item2);
        }
Example #5
0
        public void It_generates_the_correct_property_for_a_string_attribute_without_a_regular_expression()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName =
                    "First Choice for Summary Part I",
                Description =
                    "First Choice for Summary Part II",
                Required           = true,
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "String",
                    DisplayName = "Second Choice for Summary Part I",
                    Description = "Second Choice for Summary Part II",
                    Name        = "PropertyName"
                },
            };

            var it = new IdmCodeGenerator(null);

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.StringAttributeWithoutRegEx, result.Item1);
            ExAssert.AreEqual(TestData.StringAttributeWithoutRegExTests, result.Item2);
        }
Example #6
0
        public void It_generates_the_correct_property_and_tests_for_a_required_binary_attr()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName =
                    "Reference Attrbute",
                Description =
                    "A standard reference attribute",
                Required           = true,
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "Binary",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "PropertyName"
                },
            };

            var it = new IdmCodeGenerator(null);


            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.BinaryAttributeRequired, result.Item1);
            ExAssert.AreEqual(TestData.BinaryAttributeTestsRequired, result.Item2);
        }
Example #7
0
        public void It_handles_booleans_with_dashes()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName =
                    "Boolean Attrbute",
                Description =
                    "A boolean attribute",
                Required           = true,
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "Boolean",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "Property-Name"
                },
            };

            var it = new IdmCodeGenerator(null);

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.BoolAttributeWithDash, result.Item1);
            ExAssert.AreEqual(TestData.BoolAttributeWithDashTests, result.Item2);
        }
Example #8
0
        public void It_generates_the_correct_property_for_an_integer_thats_required()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName        = "My Display Name",
                Description        = "My Description",
                Required           = true,
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "Integer",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "PropertyName"
                },
            };

            var it = new IdmCodeGenerator(null);

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.IntegerAttribute, result.Item1);
            ExAssert.AreEqual(TestData.IntegerAttributeTests, result.Item2);
        }
Example #9
0
        public void It_generates_the_correct_class_for_an_object_type_with_a_multivalued_binary_attribute()
        {
            // Arrange
            var it = new IdmCodeGenerator(new Schema
            {
                Name                = "Foo",
                Description         = "Bar",
                BindingDescriptions = new List <BindingDescription>
                {
                    new BindingDescription
                    {
                        DisplayName        = "My Display Name",
                        Description        = "My Description",
                        Required           = true,
                        BoundAttributeType = new AttributeTypeDescription
                        {
                            Multivalued = true,
                            DataType    = "Binary",
                            DisplayName = "Doesn't matter",
                            Description = "Doesn't matter",
                            Name        = "Property-Name"
                        },
                    }
                }
            });

            // Act
            var result = it.Generate();

            // Assert
            ExAssert.AreEqual(TestData.ClassOutputWithMultivaluedBinaryAttribute, result.Item1);
            ExAssert.AreEqual(TestData.ClassOutputWithMultivaluedBinaryAttributeTests, result.Item2);
        }
Example #10
0
        public void It_handles_Multivalued_Reference_attributes()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName        = "My Display Name",
                Description        = "My Description",
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = true,
                    DataType    = "Reference",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "Property-Name"
                },
            };

            var it = new IdmCodeGenerator(null, new List <string> {
                "foo"
            },
                                          @"[ { ""AttrName"": ""ActionWorkflowInstance"", ""ObjType"": ""WorkflowInstance"" }, { ""AttrName"": ""Property-Name"", ""ObjType"": ""Model-Type"" } ]");


            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.MultiValuedReference, result.Item1);
            ExAssert.AreEqual(TestData.MultiValuedReferenceTests, result.Item2);
        }
Example #11
0
        public void It_handles_Multivalued_Binary_attributes()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName        = "My Display Name",
                Description        = "My Description",
                Required           = false,
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = true,
                    DataType    = "Binary",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "Property-Name"
                },
            };

            var it = new IdmCodeGenerator(null);


            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.MultiValuedBinary, result.Item1);
            ExAssert.AreEqual(TestData.MultivaluedBinaryTests, result.Item2);
        }
Example #12
0
        public void It_can_handle_non_required_multiValued_Integer_with_MaxAndMin()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName        = "My Display Name",
                Description        = "My Description",
                Required           = false,
                IntegerMinimum     = 2,
                IntegerMaximum     = 5,
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = true,
                    DataType    = "Integer",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "Property-Name"
                },
            };

            var it = new IdmCodeGenerator(null);

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.MultiValuedIntegerAttributeWithMinMax, result.Item1);
            ExAssert.AreEqual(TestData.MultiValuedIntegerAttributeWithMinMaxTests, result.Item2);
        }
Example #13
0
        public void It_can_handle_binary_attributes_with_dashes_in_the_name()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName =
                    "Reference Attrbute",
                Description =
                    "A standard reference attribute",
                Required           = true,
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "Binary",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "Property-Name"
                },
            };

            var it = new IdmCodeGenerator(null);


            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.BinaryAttributeWithDash, result.Item1);
            ExAssert.AreEqual(TestData.BinaryAttributeWithDashTests, result.Item2);
        }
Example #14
0
        public void It_can_handle_non_required_multi_valued_strings()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName        = "My Display Name",
                Description        = "My Description",
                Required           = false,
                StringRegex        = "[0-9]",
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = true,
                    DataType    = "String",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "Property-Name"
                },
            };

            var it = new IdmCodeGenerator(null);


            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.MultiValuedStringNonRequired, result.Item1);
            ExAssert.AreEqual(TestData.MultiValuedStringTestsNonRequired, result.Item2);
        }
Example #15
0
        public void It_handles_dashes_in_reference_AttrName()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName        = "Reference Attrbute",
                Description        = "A standard reference attribute",
                Required           = true, // should be ignored - reference attributes can't be required
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "Reference",
                    DisplayName = "Doesn't matter",
                    Description = "Doesn't matter",
                    Name        = "Property-Name"
                },
            };

            var it = new IdmCodeGenerator(null, new List <string> {
                "Property-Name"
            });

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.ReferenceAttrWithDashInName, result.Item1);
            ExAssert.AreEqual(TestData.ReferenceAttrWithDashInNameTests, result.Item2);
        }
Example #16
0
        public void It_generates_the_correct_property_for_a_binding_with_different_Description()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName        = "First Choice for Summary Part I",
                Description        = "Binding Description",
                Required           = true,
                StringRegex        = "abc",
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "String",
                    DisplayName = "Second Choice for Summary Part I",
                    Description = "Second Choice for Summary Part II",
                    Name        = "PropertyName"
                },
            };

            var it = new IdmCodeGenerator(null);

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.BindingWithDifferentDescription, result.Item1);
            ExAssert.AreEqual(TestData.BindingWithDifferentDescriptionTests, result.Item2);
        }
Example #17
0
        public void It_can_handle_attributes_with_dashes_in_the_name()
        {
            // Arrange
            var bindingDescription = new BindingDescription
            {
                DisplayName =
                    "First Choice for Summary Part I",
                Description =
                    "First Choice for Summary Part II",
                Required           = true,
                StringRegex        = "abc",
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "String",
                    DisplayName = "Second Choice for Summary Part I",
                    Description = "Second Choice for Summary Part II",
                    Name        = "Property-Name",
                },
            };

            var it = new IdmCodeGenerator(null);

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.StringAttributeWithDashInName, result.Item1);
            ExAssert.AreEqual(TestData.StringAttributeWithDashInNameTests, result.Item2);
        }
Example #18
0
        public void It_generates_the_correct_classes_for_an_empty_object_type()
        {
            // Arrange
            var it = new IdmCodeGenerator(new Schema
            {
                Name                = "Foo-Bar",
                Description         = "Bat",
                BindingDescriptions = new List <BindingDescription>()
            });

            // Act
            var result = it.Generate();

            // Assert
            ExAssert.AreEqual(TestData.EmptyClassOutput, result.Item1);
            ExAssert.AreEqual(TestData.TestClassTemplate, result.Item2);
        }
Example #19
0
        public void It_can_handle_class_names_that_have_dash()
        {
            // Arrange
            var it = new IdmCodeGenerator(new Schema
            {
                Name                = "Foo-Bar",
                Description         = "Bar",
                BindingDescriptions = new List <BindingDescription>()
            });

            // Act
            Tuple <string, string> result = it.Generate();

            // Assert
            ExAssert.AreEqual(TestData.ClassWithDash, result.Item1);
            ExAssert.AreEqual(TestData.ClassWithDashTests, result.Item2);
        }
Example #20
0
        public void It_generates_the_correct_property_and_tests_for_a_binding_thats_not_required()
        {
            // Arrange
            var regExString        = "8";
            var bindingDescription = new BindingDescription
            {
                DisplayName        = "First Choice for Summary Part I",
                Description        = "First Choice for Summary Part II",
                Required           = false,
                StringRegex        = regExString,
                BoundAttributeType = new AttributeTypeDescription
                {
                    Multivalued = false,
                    DataType    = "String",
                    DisplayName = "Second Choice for Summary Part I",
                    Description = "Second Choice for Summary Part II",
                    Name        = "PropertyName"
                },
            };
            var xeger         = new Xeger(regExString);
            var match         = xeger.Generate();
            var nonMatch      = @"flkj3332@!!!$

fd333
";
            var expectedTests = string.Format(TestData.BindingNotRequiredTests, match, nonMatch);

            var it = new IdmCodeGenerator(null);

            // Act
            Tuple <string, string> result = it.GenerateAPropertyAndItsTests(bindingDescription);

            // Assert
            ExAssert.AreEqual(TestData.BindingNotRequired, result.Item1);
            ExAssert.AreEqual(expectedTests, result.Item2);
        }