public IRule?Construct(PackageReferenceRuleData data) { if (string.IsNullOrEmpty(data.Name)) { return(null); } return(new PackageReferenceRule(data)); }
public void PackageReferenceRuleShouldNotBeConstructableWhenNameIsMissing() { // Arrange var data = new PackageReferenceRuleData(); var sut = new RuleFactory(); // Act var actual = sut.Construct(data); // Assert Assert.Null(actual); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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; }