public void CalculateValidationRuleDataTypeTest(FieldType fieldType)
        {
            // Arrange
            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(fieldType)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(fieldType)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(fieldType)
                }
            };

            // Act
            var rules = _classUnderTest.CalculateValidationRules(fieldInformation);

            // Assert
            rules.Should().HaveCount(1);

            rules.Single().PropertyName.Should().Be(fieldType.ToString());
            rules.Single().JsonName.Should().Be(fieldType.ToString());
            rules.Single().IsDynamicField.Should().BeTrue();
            rules.Single().Rules.Should().HaveCount(0);
        }
Example #2
0
        public void AnalyseModelIsNullTest()
        {
            // Arrange
            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(FieldType.Text)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.Text)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.Text, nameof(DynamicFieldValue.ValueString), "Let's get dangerous")
                }
            };

            // Act
            var result = _classUnderTest.Analyse(null, fieldInformation);

            // Assert
            result.Result.Should().HaveCount(1);
            result.Result.ContainsKey(nameof(FieldType.Text) + "Assignment").Should().BeTrue();
        }
        public void CalculateValidationRuleNoRulesTest(FieldType fieldType)
        {
            // Arrange
            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(fieldType)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(fieldType)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(fieldType)
                }
            };

            // Act
            var rules = _classUnderTest.CalculateValidationRules(fieldInformation);

            // Assert
            rules.Should().HaveCount(0);
        }
Example #4
0
        public void AnalyseMissingFieldValueTest()
        {
            // Arrange
            var alpha = new Alpha
            {
                FieldValues = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.TextMultiline, nameof(DynamicFieldValue.ValueString), "Let's get dangerous")
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(FieldType.Text)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.Text)
                },
                Values = alpha.FieldValues
            };

            // Act
            var result = _classUnderTest.Analyse(alpha, fieldInformation);

            // Assert
            result.Result.ContainsKey(nameof(FieldType.Text) + "Assignment").Should().BeFalse();
        }
Example #5
0
        public void AnalyseDuplicateAssignmentTest()
        {
            // Arrange
            var alpha = new Alpha
            {
                FieldValues = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.Text, nameof(DynamicFieldValue.ValueString), "Let's get dangerous")
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(FieldType.Text)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.Text),
                    ConfigurationHelper.CreateAssignment(FieldType.Text)
                },
                Values = alpha.FieldValues
            };

            // Act
            var result = _classUnderTest.Analyse(alpha, fieldInformation);

            // Assert
            result.Result[nameof(FieldType.Text) + "Assignment"].Id.Should().Be(nameof(FieldType.Text) + "Value");
            result.Result[nameof(FieldType.Text) + "Assignment"].Value.Should().Be("Let's get dangerous");
            result.Result[nameof(FieldType.Text) + "Assignment"].Type.Should().Be(typeof(string));
        }
        public void CalculateValidationRulesNotEqualsToDataRowTest(FieldType fieldType, string propertyValueName, object defaultValue)
        {
            // Arrange
            var fieldDefinition = ConfigurationHelper.CreateDefinition(fieldType, null);

            fieldDefinition.Configurations = new List <DynamicFieldConfiguration>
            {
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "DarkwingDuck"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "LaunchpadMcQuack"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsDefault
                }
            };

            typeof(DynamicFieldConfiguration).GetProperty(propertyValueName).SetValue(fieldDefinition.Configurations.Last(), defaultValue);

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    fieldDefinition
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(fieldType)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(fieldType)
                }
            };

            // Act
            var rules = _classUnderTest.CalculateValidationRules(fieldInformation);

            // Assert
            rules.Should().HaveCount(1);

            var rule = rules.Single();

            rule.PropertyName.Should().Be(fieldType.ToString());
            rule.JsonName.Should().Be(fieldType.ToString());
            rule.IsDynamicField.Should().BeTrue();

            rule.Rules.First(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("DarkwingDuck");
            rule.Rules.First(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(defaultValue?.ToString());
            rule.Rules.Last(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("LaunchpadMcQuack");
            rule.Rules.Last(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(defaultValue?.ToString());
        }
Example #7
0
        public void AnalyseInvalidFieldInformationTest()
        {
            // Arrange
            var alpha = new Alpha
            {
                FieldValues = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.Text, nameof(DynamicFieldValue.ValueString), "Let's get dangerous")
                }
            };

            var fieldInformationNoDefinitions = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>(),
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.Text)
                },
                Values = alpha.FieldValues
            };
            var fieldInformationNoAssignments = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(FieldType.Text)
                },
                Assignments = new List <DynamicFieldAssignment>(),
                Values      = alpha.FieldValues
            };
            var fieldInformationNoFieldValues = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(FieldType.Text)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.Text)
                },
                Values = new List <DynamicFieldValue>()
            };


            // Act
            var resultNoDefinitions = _classUnderTest.Analyse(alpha, fieldInformationNoDefinitions);
            var resultNoAssignments = _classUnderTest.Analyse(alpha, fieldInformationNoAssignments);
            var resultNoFieldValues = _classUnderTest.Analyse(alpha, fieldInformationNoFieldValues);

            // Assert
            resultNoDefinitions.Result.Should().HaveCount(2);
            resultNoAssignments.Result.Should().HaveCount(2);
            resultNoFieldValues.Result.Should().HaveCount(2);
        }
Example #8
0
        public void AnalyseValidationIgnoreTest()
        {
            // Arrange
            var alpha = new Alpha
            {
                Beta    = "Darkwing Duck",
                Gamma   = "MegaVolt",
                Epsilon = new Alpha
                {
                    Beta  = "beta",
                    Gamma = "gamme",
                    Delta = new Omega
                    {
                        Stigma = 666
                    }
                },
                FieldValues = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.Text, nameof(DynamicFieldValue.ValueString), "Let's get dangerous")
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(FieldType.Text)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.Text)
                },
                Values = alpha.FieldValues
            };

            // Act
            var result = _classUnderTest.Analyse(alpha, fieldInformation);

            // Assert
            result.Result.Should().HaveCount(3);
            result.Result.ContainsKey(nameof(FieldType.Text) + "Assignment").Should().BeTrue();

            result.Result[nameof(Alpha.Beta)].Id.Should().Be(nameof(Alpha.Beta));
            result.Result[nameof(Alpha.Beta)].Value.Should().Be(alpha.Beta);
            result.Result[nameof(Alpha.Beta)].Type.Should().Be(typeof(string));

            result.Result[nameof(Alpha.Gamma)].Id.Should().Be(nameof(Alpha.Gamma));
            result.Result[nameof(Alpha.Gamma)].Value.Should().Be(alpha.Gamma);
            result.Result[nameof(Alpha.Gamma)].Type.Should().Be(typeof(string));
        }
        public void CalculateValidationRulesEqualsToTest()
        {
            // Arrange
            var fieldDefinition = ConfigurationHelper.CreateDefinition(FieldType.Text, null);

            fieldDefinition.Configurations = new List <DynamicFieldConfiguration>
            {
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.EqualsTo, ValueString = "DarkwingDuck"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.EqualsTo, ValueString = "LaunchpadMcQuack"
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    fieldDefinition
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.Text)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.Text)
                }
            };

            // Act
            var rules = _classUnderTest.CalculateValidationRules(fieldInformation);

            // Assert
            rules.Should().HaveCount(1);

            var rule = rules.Single();

            rule.PropertyName.Should().Be(nameof(FieldType.Text));
            rule.JsonName.Should().Be(nameof(FieldType.Text));
            rule.IsDynamicField.Should().BeTrue();
            rule.Rules.Should().HaveCount(2);
            rule.Rules[0].Rule.Should().Be("EqualsTo");
            rule.Rules[0].PropertyName.Should().Be("DarkwingDuck");
            rule.Rules[1].Rule.Should().Be("EqualsTo");
            rule.Rules[1].PropertyName.Should().Be("LaunchpadMcQuack");
        }
        public void CalculateValidationRulesRangeTest()
        {
            // Arrange
            var fieldDefinition = ConfigurationHelper.CreateDefinition(FieldType.NumberInteger, null);

            fieldDefinition.Configurations = new List <DynamicFieldConfiguration>
            {
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.Minimum, ValueInteger = 5
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.Maximum, ValueInteger = 10
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    fieldDefinition
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.NumberInteger)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.NumberInteger)
                }
            };

            // Act
            var rules = _classUnderTest.CalculateValidationRules(fieldInformation);

            // Assert
            rules.Should().HaveCount(1);

            rules.Single().PropertyName.Should().Be("NumberInteger");
            rules.Single().JsonName.Should().Be("NumberInteger");
            rules.Single().IsDynamicField.Should().BeTrue();
            rules.Single().Rules.Should().HaveCount(3);
            rules.Single().Rules[0].Rule.Should().Be("Number");
            rules.Single().Rules[1].Rule.Should().Be("DecimalPlaces");
            rules.Single().Rules[1].Value.Should().Be(0);
            rules.Single().Rules[2].Rule.Should().Be("Range");
            rules.Single().Rules[2].Minimum.Should().Be(5);
            rules.Single().Rules[2].Maximum.Should().Be(10);
        }
        public void CalculateValidationRulesStringLengthTest()
        {
            // Arrange
            var fieldDefinition = ConfigurationHelper.CreateDefinition(FieldType.Text, null);

            fieldDefinition.Configurations = new List <DynamicFieldConfiguration>
            {
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.MinLength, ValueInteger = 5
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.MaxLength, ValueInteger = 10
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    fieldDefinition
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.Text)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.Text)
                }
            };

            // Act
            var rules = _classUnderTest.CalculateValidationRules(fieldInformation);

            // Assert
            rules.Should().HaveCount(1);

            rules.Single().PropertyName.Should().Be("Text");
            rules.Single().JsonName.Should().Be("Text");
            rules.Single().IsDynamicField.Should().BeTrue();
            rules.Single().Rules.Should().HaveCount(2);
            rules.Single().Rules.First().Rule.Should().Be("MinLength");
            rules.Single().Rules.First().Value.Should().Be(5);
            rules.Single().Rules.Last().Rule.Should().Be("MaxLength");
            rules.Single().Rules.Last().Value.Should().Be(10);
        }
Example #12
0
        public void AnalyseDataTypesDataRowTest(FieldType fieldType, string valuePropertyName, Type type, object value)
        {
            // Arrange
            var alpha = new Alpha
            {
                Beta        = "Darkwing Duck",
                Gamma       = "MegaVolt",
                FieldValues = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(fieldType, valuePropertyName, value)
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(fieldType)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(fieldType)
                },
                Values = alpha.FieldValues
            };

            // Act
            var result = _classUnderTest.Analyse(alpha, fieldInformation);

            // Assert
            result.Result.Should().HaveCount(3);

            result.Result[nameof(Alpha.Beta)].Id.Should().Be(nameof(Alpha.Beta));
            result.Result[nameof(Alpha.Beta)].Value.Should().Be(alpha.Beta);
            result.Result[nameof(Alpha.Beta)].Type.Should().Be(typeof(string));

            result.Result[nameof(Alpha.Gamma)].Id.Should().Be(nameof(Alpha.Gamma));
            result.Result[nameof(Alpha.Gamma)].Value.Should().Be(alpha.Gamma);
            result.Result[nameof(Alpha.Gamma)].Type.Should().Be(typeof(string));

            result.Result[fieldType.ToString() + "Assignment"].Id.Should().Be(fieldType.ToString() + "Value");
            result.Result[fieldType.ToString() + "Assignment"].Value.Should().Be(value);
            result.Result[fieldType.ToString() + "Assignment"].Type.Should().Be(type);
        }
        public void CalculateValidationRuleDecimalPlacesTest(FieldType fieldType, int decimalPlaces)
        {
            // Arrange
            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(fieldType, FieldConfigurationType.DecimalPlaces)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(fieldType)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(fieldType)
                }
            };

            fieldInformation.Definitions.Single().Configurations.Single().ValueInteger = decimalPlaces;

            // Act
            var rules = _classUnderTest.CalculateValidationRules(fieldInformation);

            // Assert
            rules.Should().HaveCount(1);
            rules.Single().DataType.Should().Be("number");
            rules.Single().PropertyName.Should().Be(fieldType.ToString());
            rules.Single().JsonName.Should().Be(fieldType.ToString());
            rules.Single().IsDynamicField.Should().BeTrue();

            rules.Single().Rules.Should().HaveCount(2);
            rules.Single().Rules[0].Rule.Should().Be("Number");
            rules.Single().Rules[1].Rule.Should().Be("DecimalPlaces");
            rules.Single().Rules[1].Value.Should().Be(decimalPlaces);
        }
        public void CalculateValidationRulesNotEqualsToTest()
        {
            // Arrange
            var guidOne  = Guid.NewGuid();
            var guidTwo  = Guid.NewGuid();
            var dateTime = DateTime.UtcNow;

            var fieldDefinitionDecimal = ConfigurationHelper.CreateDefinition(FieldType.NumberDecimal, null);

            fieldDefinitionDecimal.Configurations = new List <DynamicFieldConfiguration>
            {
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "DarkwingDuck"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "LaunchpadMcQuack"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsDefault, ValueDecimal = 5m
                }
            };

            var fieldDefinitionDateTime = ConfigurationHelper.CreateDefinition(FieldType.DateTime, null);

            fieldDefinitionDateTime.Configurations = new List <DynamicFieldConfiguration>
            {
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "DarkwingDuck"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "LaunchpadMcQuack"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsDefault, ValueDateTime = dateTime
                }
            };

            var fieldDefinitionComboxBoxGuid = ConfigurationHelper.CreateDefinition(FieldType.ComboxBoxGuid, null);

            fieldDefinitionComboxBoxGuid.Configurations = new List <DynamicFieldConfiguration>
            {
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "DarkwingDuck"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "LaunchpadMcQuack"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsDefault, ValueGuid = guidOne
                }
            };

            var fieldDefinitionGuid = ConfigurationHelper.CreateDefinition(FieldType.Guid, null);

            fieldDefinitionGuid.Configurations = new List <DynamicFieldConfiguration>
            {
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "DarkwingDuck"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsTo, ValueString = "LaunchpadMcQuack"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.NotEqualsDefault, ValueGuid = guidTwo
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    fieldDefinitionDecimal,
                    fieldDefinitionDateTime,
                    fieldDefinitionComboxBoxGuid,
                    fieldDefinitionGuid
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.NumberDecimal),
                    ConfigurationHelper.CreateAssignment(FieldType.DateTime),
                    ConfigurationHelper.CreateAssignment(FieldType.ComboxBoxGuid),
                    ConfigurationHelper.CreateAssignment(FieldType.Guid)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.NumberDecimal),
                    ConfigurationHelper.CreateField(FieldType.DateTime),
                    ConfigurationHelper.CreateField(FieldType.ComboxBoxGuid),
                    ConfigurationHelper.CreateField(FieldType.Guid)
                }
            };

            // Act
            var rules = _classUnderTest.CalculateValidationRules(fieldInformation);

            // Assert
            rules.Should().HaveCount(4);

            var ruleDecimal = rules.Single(r => r.PropertyName == nameof(FieldType.NumberDecimal));

            ruleDecimal.JsonName.Should().Be(nameof(FieldType.NumberDecimal));
            ruleDecimal.IsDynamicField.Should().BeTrue();
            ruleDecimal.Rules.First(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("DarkwingDuck");
            ruleDecimal.Rules.First(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(5m.ToString(CultureInfo.InvariantCulture));
            ruleDecimal.Rules.Last(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("LaunchpadMcQuack");
            ruleDecimal.Rules.Last(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(5m.ToString(CultureInfo.InvariantCulture));

            var ruleDateTime = rules.Single(r => r.PropertyName == nameof(FieldType.DateTime));

            ruleDateTime.JsonName.Should().Be(nameof(FieldType.DateTime));
            ruleDateTime.IsDynamicField.Should().BeTrue();
            ruleDateTime.Rules.First(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("DarkwingDuck");
            ruleDateTime.Rules.First(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(dateTime.ToString("yyyy-MM-ddTHH:mm:ss"));
            ruleDateTime.Rules.Last(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("LaunchpadMcQuack");
            ruleDateTime.Rules.Last(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(dateTime.ToString("yyyy-MM-ddTHH:mm:ss"));

            var ruleComboxBoxGuid = rules.Single(r => r.PropertyName == nameof(FieldType.ComboxBoxGuid));

            ruleComboxBoxGuid.JsonName.Should().Be(nameof(FieldType.ComboxBoxGuid));
            ruleComboxBoxGuid.IsDynamicField.Should().BeTrue();
            ruleComboxBoxGuid.Rules.First(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("DarkwingDuck");
            ruleComboxBoxGuid.Rules.First(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(guidOne.ToString());
            ruleComboxBoxGuid.Rules.Last(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("LaunchpadMcQuack");
            ruleComboxBoxGuid.Rules.Last(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(guidOne.ToString());

            var ruleGuid = rules.Single(r => r.PropertyName == nameof(FieldType.Guid));

            ruleGuid.JsonName.Should().Be(nameof(FieldType.Guid));
            ruleGuid.IsDynamicField.Should().BeTrue();
            ruleGuid.Rules.First(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("DarkwingDuck");
            ruleGuid.Rules.First(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(guidTwo.ToString());
            ruleGuid.Rules.Last(r => r.Rule == "NotEqualsTo").PropertyName.Should().Be("LaunchpadMcQuack");
            ruleGuid.Rules.Last(r => r.Rule == "NotEqualsTo").DefaultValue.Should().Be(guidTwo.ToString());
        }
        public void CalculateValidationRulesRangeBetweenTest(FieldType fieldType)
        {
            // Arrange
            var fieldDefinition = ConfigurationHelper.CreateDefinition(fieldType, null);

            fieldDefinition.Configurations = new List <DynamicFieldConfiguration>
            {
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.RangeBetween
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.RangeBetweenFrom, ValueString = fieldType.ToString() + "ValueFrom"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.RangeBetweenTo, ValueString = fieldType.ToString() + "ValueTo"
                },
                new DynamicFieldConfiguration {
                    ConfigurationType = FieldConfigurationType.AllowNull
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(fieldType, null, "From"),
                    ConfigurationHelper.CreateDefinition(fieldType, null, "To"),
                    fieldDefinition
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(fieldType, "From"),
                    ConfigurationHelper.CreateAssignment(fieldType, "To"),
                    ConfigurationHelper.CreateAssignment(fieldType)
                },
                Values = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(fieldType, "From"),
                    ConfigurationHelper.CreateField(fieldType, "To"),
                    ConfigurationHelper.CreateField(fieldType)
                }
            };

            // Act
            var rules = _classUnderTest.CalculateValidationRules(fieldInformation);

            // Assert
            rules.Should().HaveCount(3);

            var ruleFrom = rules.Last();

            ruleFrom.PropertyName.Should().Be(fieldType.ToString());
            ruleFrom.JsonName.Should().Be(fieldType.ToString());
            ruleFrom.IsDynamicField.Should().BeTrue();
            ruleFrom.Rules.Should().HaveCount(3);
            ruleFrom.Rules[0].Rule.Should().Be("Number");
            ruleFrom.Rules[1].Rule.Should().Be("DecimalPlaces");
            ruleFrom.Rules[1].Value.Should().Be(0);
            ruleFrom.Rules[2].Rule.Should().Be("RangeBetween");
            ruleFrom.Rules[2].PropertyNameFrom.Should().Be(fieldType.ToString() + "ValueFrom");
            ruleFrom.Rules[2].PropertyNameTo.Should().Be(fieldType.ToString() + "ValueTo");
            ruleFrom.Rules[2].PropertyNameFromAllowNull.Should().BeTrue();
            ruleFrom.Rules[2].PropertyNameToAllowNull.Should().BeTrue();
        }
Example #16
0
        public void AnalyseDataTypesTest()
        {
            // Arrange
            var guidOne = Guid.NewGuid();
            var guidTwo = Guid.NewGuid();

            var alpha = new Alpha
            {
                Beta        = "Darkwing Duck",
                Gamma       = "MegaVolt",
                FieldValues = new List <DynamicFieldValue>
                {
                    ConfigurationHelper.CreateField(FieldType.NumberDecimal, nameof(DynamicFieldValue.ValueDecimal), 3.5m),
                    ConfigurationHelper.CreateField(FieldType.DateTime, nameof(DynamicFieldValue.ValueDateTime), DateTime.Today),
                    ConfigurationHelper.CreateField(FieldType.Guid, nameof(DynamicFieldValue.ValueGuid), guidOne),
                    ConfigurationHelper.CreateField(FieldType.ComboxBoxGuid, nameof(DynamicFieldValue.ValueGuid), guidTwo)
                }
            };

            var fieldInformation = new FieldInformation <DynamicFieldDefinition, DynamicFieldAssignment, DynamicFieldValue, string, int>
            {
                Definitions = new List <DynamicFieldDefinition>
                {
                    ConfigurationHelper.CreateDefinition(FieldType.NumberDecimal),
                    ConfigurationHelper.CreateDefinition(FieldType.DateTime),
                    ConfigurationHelper.CreateDefinition(FieldType.Guid),
                    ConfigurationHelper.CreateDefinition(FieldType.ComboxBoxGuid)
                },
                Assignments = new List <DynamicFieldAssignment>
                {
                    ConfigurationHelper.CreateAssignment(FieldType.NumberDecimal),
                    ConfigurationHelper.CreateAssignment(FieldType.DateTime),
                    ConfigurationHelper.CreateAssignment(FieldType.Guid),
                    ConfigurationHelper.CreateAssignment(FieldType.ComboxBoxGuid)
                },
                Values = alpha.FieldValues
            };

            // Act
            var result = _classUnderTest.Analyse(alpha, fieldInformation);

            // Assert
            result.Result.Should().HaveCount(6);

            result.Result[nameof(Alpha.Beta)].Id.Should().Be(nameof(Alpha.Beta));
            result.Result[nameof(Alpha.Beta)].Value.Should().Be(alpha.Beta);
            result.Result[nameof(Alpha.Beta)].Type.Should().Be(typeof(string));

            result.Result[nameof(Alpha.Gamma)].Id.Should().Be(nameof(Alpha.Gamma));
            result.Result[nameof(Alpha.Gamma)].Value.Should().Be(alpha.Gamma);
            result.Result[nameof(Alpha.Gamma)].Type.Should().Be(typeof(string));

            result.Result[nameof(FieldType.NumberDecimal) + "Assignment"].Id.Should().Be(nameof(FieldType.NumberDecimal) + "Value");
            result.Result[nameof(FieldType.NumberDecimal) + "Assignment"].Value.Should().Be(3.5m);
            result.Result[nameof(FieldType.NumberDecimal) + "Assignment"].Type.Should().Be(typeof(decimal));

            result.Result[nameof(FieldType.DateTime) + "Assignment"].Id.Should().Be(nameof(FieldType.DateTime) + "Value");
            result.Result[nameof(FieldType.DateTime) + "Assignment"].Value.Should().Be(DateTime.Today);
            result.Result[nameof(FieldType.DateTime) + "Assignment"].Type.Should().Be(typeof(DateTime));

            result.Result[nameof(FieldType.Guid) + "Assignment"].Id.Should().Be(nameof(FieldType.Guid) + "Value");
            result.Result[nameof(FieldType.Guid) + "Assignment"].Value.Should().Be(guidOne);
            result.Result[nameof(FieldType.Guid) + "Assignment"].Type.Should().Be(typeof(Guid));

            result.Result[nameof(FieldType.ComboxBoxGuid) + "Assignment"].Id.Should().Be(nameof(FieldType.ComboxBoxGuid) + "Value");
            result.Result[nameof(FieldType.ComboxBoxGuid) + "Assignment"].Value.Should().Be(guidTwo);
            result.Result[nameof(FieldType.ComboxBoxGuid) + "Assignment"].Type.Should().Be(typeof(Guid));
        }