Пример #1
0
        public IRule?Construct(PropertyRuleData data)
        {
            if (string.IsNullOrEmpty(data.Name))
            {
                return(null);
            }

            return(new PropertyRule(data));
        }
Пример #2
0
        public void PropertyRuleShouldNotBeConstructableWhenNameIsMissing()
        {
            // Arrange
            var data = new PropertyRuleData();
            var sut  = new RuleFactory();

            // Act
            var actual = sut.Construct(data);

            // Assert
            Assert.Null(actual);
        }
Пример #3
0
        public void PropertyRuleShouldBeConstructable()
        {
            // Arrange
            var data = new PropertyRuleData
            {
                Name = Guid.NewGuid().ToString()
            };
            var sut = new RuleFactory();

            // Act
            var actual = sut.Construct(data);

            // Assert
            Assert.NotNull(actual);
        }
Пример #4
0
        public async Task ValidateShouldFailWhenNonOptionalPropertyIsMissing()
        {
            // Arrange
            var project = new ProjectBuilder().Build();

            var data = new PropertyRuleData
            {
                Name     = "Required-Property",
                Required = true
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.True(actual.IsError);
        }
Пример #5
0
        public async Task ValidateShouldFailWhenForbiddenPropertyIsFound()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithPropertyGroup().WithProperty("Forbidden-Property", "true").Build();

            var data = new PropertyRuleData
            {
                Forbidden = true,
                Name      = "Forbidden-Property"
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.True(actual.IsError);
        }
Пример #6
0
        public async Task ValidateShouldFailWhenPropertyHasWrongValue()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithPropertyGroup()
                          .WithProperty("Property", "invalid")
                          .Build();

            var data = new PropertyRuleData
            {
                Name  = "Property",
                Value = "valid"
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.True(actual.IsError);
        }
Пример #7
0
        public async Task ValidateShouldSucceedWhenPropertyExists()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithPropertyGroup()
                          .WithProperty("TreatWarningsAsErrors", "true")
                          .Build();

            var data = new PropertyRuleData
            {
                Name     = "TreatWarningsAsErrors",
                Required = true
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.False(actual.IsError);
        }
Пример #8
0
        public async Task ValidateShouldFailWhenPropertyIsFoundTooFewTimes()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithPropertyGroup()
                          .WithProperty("Property", "value")
                          .WithPropertyGroup()
                          .WithProperty("Property", "value")
                          .Build();

            var data = new PropertyRuleData
            {
                Name = "Property",
                MinimumOccurrences = 3
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.True(actual.IsError);
        }
Пример #9
0
 public ConfigBuilder WithProperty(PropertyRuleData data)
 {
     _properties.Add(data);
     return(this);
 }
Пример #10
0
 public PropertyRule(PropertyRuleData data)
 {
     _data = data;
 }