Ejemplo n.º 1
0
        public async Task Should_add_error_if_validating_data_with_unknown_field()
        {
            var data =
                new NamedContentData()
                .AddField("unknown",
                          new ContentFieldData());

            await data.ValidateAsync(languagesConfig.ToResolver(), errors, schema);

            errors.Should().BeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("Not a known field.", "unknown")
            });
        }
Ejemplo n.º 2
0
        public async Task Should_add_error_if_required_data_field_is_not_in_bag()
        {
            schema = schema.AddOrUpdateField(new NumberField(1, "my-field", Partitioning.Invariant, new NumberFieldProperties {
                IsRequired = true
            }));

            var data =
                new NamedContentData();

            await data.ValidateAsync(context, schema, languagesConfig.ToResolver(), errors);

            errors.ShouldBeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("my-field is required", "my-field")
            });
        }
Ejemplo n.º 3
0
        public async Task Should_not_add_error_if_nested_separator_not_defined()
        {
            schema = schema.AddArray(1, "my-field", Partitioning.Invariant, f => f.
                                     AddUI(2, "my-nested"));

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .AddJsonValue(
                              JsonValue.Array(
                                  JsonValue.Object())));

            await data.ValidateAsync(languagesConfig.ToResolver(), errors, schema);

            Assert.Empty(errors);
        }
Ejemplo n.º 4
0
        public async Task Should_add_error_if_validating_data_with_invalid_localizable_field()
        {
            schema = schema.AddOrUpdateField(new NumberField(1, "my-field", Partitioning.Language, new NumberFieldProperties {
                IsRequired = true
            }));

            var data =
                new NamedContentData();

            await data.ValidateAsync(context, schema, languagesConfig.ToResolver(), errors);

            errors.ShouldBeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("my-field (de) is required", "my-field"),
                new ValidationError("my-field (en) is required", "my-field")
            });
        }
Ejemplo n.º 5
0
        public async Task Should_add_error_if_required_data_string_field_is_not_in_bag()
        {
            schema = schema.AddString(1, "my-field", Partitioning.Invariant,
                                      new StringFieldProperties {
                IsRequired = true
            });

            var data =
                new NamedContentData();

            await data.ValidateAsync(languagesConfig.ToResolver(), errors, schema);

            errors.Should().BeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("Field is required.", "my-field")
            });
        }
Ejemplo n.º 6
0
        public async Task Should_not_add_error_if_required_field_has_no_value_for_optional_language()
        {
            var optionalConfig =
                LanguagesConfig.Create(Language.ES, Language.IT).Update(Language.IT, true, false, null);

            schema = schema.AddOrUpdateField(new StringField(1, "my-field", Partitioning.Language, new StringFieldProperties {
                IsRequired = true
            }));

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .AddValue("es", "value"));

            await data.ValidateAsync(context, schema, optionalConfig.ToResolver(), errors);

            Assert.Empty(errors);
        }
Ejemplo n.º 7
0
        public async Task Should_add_error_if_data_contains_invalid_language()
        {
            schema = schema.AddOrUpdateField(new NumberField(1, "my-field", Partitioning.Language));

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .AddValue("de", 1)
                          .AddValue("xx", 1));

            await data.ValidateAsync(context, schema, languagesConfig.ToResolver(), errors);

            errors.ShouldBeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("my-field has an unsupported language value 'xx'", "my-field")
            });
        }
Ejemplo n.º 8
0
        public async Task Should_add_error_if_data_contains_invalid_language()
        {
            schema = schema.AddNumber(1, "my-field", Partitioning.Language);

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .AddValue("de", 1)
                          .AddValue("xx", 1));

            await data.ValidateAsync(languagesConfig.ToResolver(), errors, schema);

            errors.Should().BeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("Not a known language.", "my-field(xx)")
            });
        }
Ejemplo n.º 9
0
        public async Task Should_add_error_if_non_localizable_data_field_contains_language()
        {
            schema = schema.AddOrUpdateField(new NumberField(1, "my-field", Partitioning.Invariant));

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .AddValue("es", 1)
                          .AddValue("it", 1));

            await data.ValidateAsync(context, schema, languagesConfig.ToResolver(), errors);

            errors.ShouldBeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("my-field has an unsupported invariant value 'es'", "my-field"),
                new ValidationError("my-field has an unsupported invariant value 'it'", "my-field")
            });
        }
Ejemplo n.º 10
0
        public async Task Should_add_error_if_validating_data_with_invalid_field()
        {
            schema = schema.AddOrUpdateField(new NumberField(1, "my-field", Partitioning.Invariant, new NumberFieldProperties {
                MaxValue = 100
            }));

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .SetValue(1000));

            await data.ValidateAsync(context, schema, languagesConfig.ToResolver(), errors);

            errors.ShouldBeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("my-field must be less than '100'", "my-field")
            });
        }
Ejemplo n.º 11
0
        public async Task Should_add_error_if_data_contains_unsupported_language()
        {
            schema = schema.AddNumber(1, "my-field", Partitioning.Language);

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .AddValue("es", 1)
                          .AddValue("it", 1));

            await data.ValidateAsync(context, schema, languagesConfig.ToResolver(), errors);

            errors.ShouldBeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("my-field(es): Not a known language.", "my-field(es)"),
                new ValidationError("my-field(it): Not a known language.", "my-field(it)")
            });
        }
Ejemplo n.º 12
0
        public async Task Should_add_error_if_non_localizable_data_field_contains_language()
        {
            schema = schema.AddNumber(1, "my-field", Partitioning.Invariant);

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .AddValue("es", 1)
                          .AddValue("it", 1));

            await data.ValidateAsync(languagesConfig.ToResolver(), errors, schema);

            errors.Should().BeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("Not a known invariant value.", "my-field(es)"),
                new ValidationError("Not a known invariant value.", "my-field(it)")
            });
        }
Ejemplo n.º 13
0
        public async Task Should_add_error_if_validating_data_with_invalid_field()
        {
            schema = schema.AddNumber(1, "my-field", Partitioning.Invariant,
                                      new NumberFieldProperties {
                MaxValue = 100
            });

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .AddValue("iv", 1000));

            await data.ValidateAsync(languagesConfig.ToResolver(), errors, schema);

            errors.Should().BeEquivalentTo(
                new List <ValidationError>
            {
                new ValidationError("Must be less or equal to 100.", "my-field")
            });
        }
Ejemplo n.º 14
0
        public async Task Should_not_add_error_if_required_field_has_no_value_for_optional_language()
        {
            var optionalConfig =
                LanguagesConfig.English
                .Set(Language.ES)
                .Set(Language.IT, true)
                .Remove(Language.EN);

            schema = schema.AddString(1, "my-field", Partitioning.Language,
                                      new StringFieldProperties {
                IsRequired = true
            });

            var data =
                new NamedContentData()
                .AddField("my-field",
                          new ContentFieldData()
                          .AddValue("es", "value"));

            await data.ValidateAsync(optionalConfig.ToResolver(), errors, schema);

            Assert.Empty(errors);
        }
Ejemplo n.º 15
0
        public async Task Should_add_error_if_field_object_is_defined()
        {
            var schema =
                new Schema("my-schema")
                .AddUI(1, "my-ui1", Partitioning.Invariant)
                .AddUI(2, "my-ui2", Partitioning.Invariant);

            var data =
                new NamedContentData()
                .AddField("my-ui1", new ContentFieldData())
                .AddField("my-ui2", new ContentFieldData()
                          .AddValue("iv", null));

            var dataErrors = new List <ValidationError>();

            await data.ValidateAsync(x => InvariantPartitioning.Instance, dataErrors, schema);

            dataErrors.Should().BeEquivalentTo(
                new[]
            {
                new ValidationError("Value must not be defined.", "my-ui1"),
                new ValidationError("Value must not be defined.", "my-ui2")
            });
        }
Ejemplo n.º 16
0
        public Task ValidateAsync(NamedContentData data)
        {
            var ctx = CreateValidationContext();

            return(data.ValidateAsync(ctx, schemaEntity.SchemaDef, appEntity.PartitionResolver(), message));
        }