Exemple #1
0
        public IRule?Construct(PackageReferenceRuleData data)
        {
            if (string.IsNullOrEmpty(data.Name))
            {
                return(null);
            }

            return(new PackageReferenceRule(data));
        }
Exemple #2
0
        public void PackageReferenceRuleShouldNotBeConstructableWhenNameIsMissing()
        {
            // Arrange
            var data = new PackageReferenceRuleData();
            var sut  = new RuleFactory();

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

            // Assert
            Assert.Null(actual);
        }
Exemple #3
0
        public void PackageReferenceRuleShouldBeConstructable()
        {
            // Arrange
            var data = new PackageReferenceRuleData
            {
                Name = Guid.NewGuid().ToString()
            };
            var sut = new RuleFactory();

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

            // Assert
            Assert.NotNull(actual);
        }
Exemple #4
0
        public async Task ValidateShouldSucceedWhenOptionalReferenceIsMissing()
        {
            // Arrange
            var project = new ProjectBuilder().Build();

            var data = new PackageReferenceRuleData
            {
                Required = false,
                Name     = "Package"
            };

            var sut = new PackageReferenceRule(data);

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

            // Assert
            Assert.False(actual.IsError);
        }
Exemple #5
0
        public async Task ValidateShouldFailWhenRequiredReferenceIsMissing()
        {
            // Arrange
            var project = new ProjectBuilder().Build();

            var data = new PackageReferenceRuleData
            {
                Required = true,
                Name     = "Package"
            };

            var sut = new PackageReferenceRule(data);

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

            // Assert
            Assert.True(actual.IsError);
        }
Exemple #6
0
        public async Task ValidateShouldSucceedWhenPackageHasCorrectVersion()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithItemGroup()
                          .WithPackageReference("Package", "1.2.3")
                          .Build();

            var data = new PackageReferenceRuleData
            {
                Version = "^1.0.0",
                Name    = "Package"
            };

            var sut = new PackageReferenceRule(data);

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

            // Assert
            Assert.False(actual.IsError);
        }
Exemple #7
0
        public async Task ValidateShouldSucceedWhenOptionalPackageIsReferenced()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithItemGroup()
                          .WithPackageReference("Package", "1.2.3")
                          .Build();

            var data = new PackageReferenceRuleData
            {
                Name     = "Package",
                Required = false
            };

            var sut = new PackageReferenceRule(data);

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

            // Assert
            Assert.False(actual.IsError);
        }
Exemple #8
0
        public async Task ValidateShouldFailWhenVersionIsInvalidSemanticVersion()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithItemGroup()
                          .WithPackageReference("Package", "1.2.3")
                          .Build();

            var data = new PackageReferenceRuleData
            {
                Version = "^1.0",
                Name    = "Package"
            };

            var sut = new PackageReferenceRule(data);

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

            // Assert
            Assert.True(actual.IsError);
        }
Exemple #9
0
        public async Task ValidateShouldFailWhenForbiddenReferenceExists()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithItemGroup()
                          .WithPackageReference("Package", "1.0")
                          .Build();

            var data = new PackageReferenceRuleData
            {
                Forbidden = true,
                Name      = "Package"
            };

            var sut = new PackageReferenceRule(data);

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

            // Assert
            Assert.True(actual.IsError);
        }
Exemple #10
0
        public async Task ValidateShouldSucceedWhenAssetValueNoneIsSpecifiedInConfig(AssetsProperty property)
        {
            // Arrange
            var projectBuilder = new ProjectBuilder()
                                 .WithItemGroup()
                                 .WithPackageReference("Package", "1.0");

            var data = new PackageReferenceRuleData
            {
                Name = "Package"
            };

            if (property == AssetsProperty.Include)
            {
                data.IncludeAssets = new[] { "none" }
            }
            ;
            else if (property == AssetsProperty.Exclude)
            {
                data.ExcludeAssets = new[] { "none" }
            }
            ;
            else if (property == AssetsProperty.Private)
            {
                data.PrivateAssets = new[] { "none" }
            }
            ;

            var project = projectBuilder.Build();
            var sut     = new PackageReferenceRule(data);

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

            // Assert
            Assert.False(actual.IsError);
        }
Exemple #11
0
        public async Task ValidateShouldFailWhenAssetsInProjectDoesNotContainAllValues(AssetsProperty property)
        {
            // Arrange
            var projectBuilder = new ProjectBuilder()
                                 .WithItemGroup();

            var data = new PackageReferenceRuleData
            {
                Name = "Package"
            };

            if (property == AssetsProperty.Include)
            {
                projectBuilder     = projectBuilder.WithPackageReference("Package", "1.0", false, "build");
                data.IncludeAssets = new[] { "compile", "build" };
            }
            else if (property == AssetsProperty.Exclude)
            {
                projectBuilder     = projectBuilder.WithPackageReference("Package", "1.0", false, null, "build");
                data.ExcludeAssets = new[] { "compile", "build" };
            }
            else if (property == AssetsProperty.Private)
            {
                projectBuilder     = projectBuilder.WithPackageReference("Package", "1.0", false, null, null, "build");
                data.PrivateAssets = new[] { "compile", "build" };
            }

            var project = projectBuilder.Build();
            var sut     = new PackageReferenceRule(data);

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

            // Assert
            Assert.True(actual.IsError);
        }
Exemple #12
0
        public async Task ValidateShouldSucceedWhenSingleAssetMatches(AssetsProperty property)
        {
            // Arrange
            var projectBuilder = new ProjectBuilder()
                                 .WithItemGroup();

            var data = new PackageReferenceRuleData
            {
                Name = "Package"
            };

            if (property == AssetsProperty.Include)
            {
                projectBuilder     = projectBuilder.WithPackageReference("Package", "1.0", false, "build");
                data.IncludeAssets = new[] { "build" };
            }
            else if (property == AssetsProperty.Exclude)
            {
                projectBuilder     = projectBuilder.WithPackageReference("Package", "1.0", false, null, "build");
                data.ExcludeAssets = new[] { "build" };
            }
            else if (property == AssetsProperty.Private)
            {
                projectBuilder     = projectBuilder.WithPackageReference("Package", "1.0", false, null, null, "build");
                data.PrivateAssets = new[] { "build" };
            }

            var project = projectBuilder.Build();
            var sut     = new PackageReferenceRule(data);

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

            // Assert
            Assert.False(actual.IsError);
        }
 public ConfigBuilder WithPackage(PackageReferenceRuleData data)
 {
     _packageReferences.Add(data);
     return(this);
 }
 public PackageReferenceRule(PackageReferenceRuleData data)
 {
     _data = data;
 }