Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 160 additions & 40 deletions ProjectReferencesRuler.Tests/Rules/References/ReferencesRulerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ public void GiveMeComplaints_NoRules_NoComplaints()
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new List<ReferenceRule>());
rules: new List<ReferenceRule>()
);

var complaints = ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null));
var complaints = ruler.GiveMeComplaints(
new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null)
);

Assert.True(string.IsNullOrEmpty(complaints));
}
Expand All @@ -22,9 +25,15 @@ public void GiveMeComplaints_ForbiddenExplicitRule_ReturnsComplaints()
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new []{ new ReferenceRule("a", "b", RuleKind.Forbidden, description: "no no") });
rules: new[]
{
new ReferenceRule("a", "b", RuleKind.Forbidden, description: "no no"),
}
);

var complaints = ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null));
var complaints = ruler.GiveMeComplaints(
new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null)
);

Assert.False(string.IsNullOrEmpty(complaints));
Assert.Equal("Reference from a to b broke:\nno no", complaints);
Expand All @@ -35,9 +44,15 @@ public void GiveMeComplaints_ForbiddenGeneralRule_ReturnsComplaints()
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new []{ new ReferenceRule(".*", "b", RuleKind.Forbidden, description: "no no") });
rules: new[]
{
new ReferenceRule(".*", "b", RuleKind.Forbidden, description: "no no"),
}
);

var complaints = ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null));
var complaints = ruler.GiveMeComplaints(
new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null)
);

Assert.False(string.IsNullOrEmpty(complaints));
Assert.Equal("Reference from a to b broke:\nno no", complaints);
Expand All @@ -48,13 +63,16 @@ public void GiveMeComplaints_ForbiddenExplicitRuleWithExplicitOverridingRule_NoC
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new []
rules: new[]
{
new ReferenceRule("a", "b", RuleKind.Forbidden, description: "no no"),
new ReferenceRule("a", "b", RuleKind.Allowed, description: "yes yes")
});
new ReferenceRule("a", "b", RuleKind.Allowed, description: "yes yes"),
}
);

var complaints = ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null));
var complaints = ruler.GiveMeComplaints(
new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null)
);

Assert.True(string.IsNullOrEmpty(complaints));
}
Expand All @@ -64,13 +82,16 @@ public void GiveMeComplaints_ForbiddenGeneralRuleWithExplicitOverridingRule_NoCo
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new []
rules: new[]
{
new ReferenceRule("*", "b", RuleKind.Forbidden, description: "no no"),
new ReferenceRule("a", "b", RuleKind.Allowed, description: "yes yes")
});
new ReferenceRule("a", "b", RuleKind.Allowed, description: "yes yes"),
}
);

var complaints = ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null));
var complaints = ruler.GiveMeComplaints(
new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null)
);

Assert.True(string.IsNullOrEmpty(complaints));
}
Expand All @@ -79,13 +100,28 @@ public void GiveMeComplaints_ForbiddenGeneralRuleWithExplicitOverridingRule_NoCo
[InlineData(true, true)]
[InlineData(false, false)]
[InlineData(null, true)]
public void GiveMeComplaints_ForbiddenExplicitRuleWithPrivateAssets_MatchesPrivateAssetsToo(bool? isPrivateAssetsAllSet, bool hasComplaints)
public void GiveMeComplaints_ForbiddenExplicitRuleWithPrivateAssets_MatchesPrivateAssetsToo(
bool? isPrivateAssetsAllSet,
bool hasComplaints
)
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new []{ new ReferenceRule("a", "b", RuleKind.Forbidden, description: "no no", isPrivateAssetsAllSet: isPrivateAssetsAllSet) });

var complaints = ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null));
rules: new[]
{
new ReferenceRule(
"a",
"b",
RuleKind.Forbidden,
description: "no no",
isPrivateAssetsAllSet: isPrivateAssetsAllSet
),
}
);

var complaints = ruler.GiveMeComplaints(
new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null)
);

Assert.Equal(hasComplaints, !string.IsNullOrEmpty(complaints));
}
Expand All @@ -94,13 +130,28 @@ public void GiveMeComplaints_ForbiddenExplicitRuleWithPrivateAssets_MatchesPriva
[InlineData(true, true)]
[InlineData(false, false)]
[InlineData(null, true)]
public void GiveMeComplaints_ForbiddenExplicitRuleWithPrivateAssetsAndGenericRule_MatchesPrivateAssetsToo(bool? isPrivateAssetsAllSet, bool hasComplaints)
public void GiveMeComplaints_ForbiddenExplicitRuleWithPrivateAssetsAndGenericRule_MatchesPrivateAssetsToo(
bool? isPrivateAssetsAllSet,
bool hasComplaints
)
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new []{ new ReferenceRule(".*", ".*", RuleKind.Forbidden, description: "no no", isPrivateAssetsAllSet: isPrivateAssetsAllSet) });

var complaints = ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null));
rules: new[]
{
new ReferenceRule(
".*",
".*",
RuleKind.Forbidden,
description: "no no",
isPrivateAssetsAllSet: isPrivateAssetsAllSet
),
}
);

var complaints = ruler.GiveMeComplaints(
new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null)
);

Assert.Equal(hasComplaints, !string.IsNullOrEmpty(complaints));
}
Expand All @@ -109,13 +160,33 @@ public void GiveMeComplaints_ForbiddenExplicitRuleWithPrivateAssetsAndGenericRul
[InlineData("1.2.3", true)]
[InlineData("3.2.1", false)]
[InlineData(null, true)]
public void GiveMeComplaints_ForbiddenExplicitRuleWithVersion_MatchesVersion(string version, bool hasComplaints)
public void GiveMeComplaints_ForbiddenExplicitRuleWithVersion_MatchesVersion(
string version,
bool hasComplaints
)
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new []{ new ReferenceRule(".*", ".*", RuleKind.Forbidden, description: "no no", version: version) });

var complaints = ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: "1.2.3"));
rules: new[]
{
new ReferenceRule(
".*",
".*",
RuleKind.Forbidden,
description: "no no",
version: version
),
}
);

var complaints = ruler.GiveMeComplaints(
new Reference(
from: "a",
to: "b",
isPrivateAssetsAllSet: true,
versionOrNull: "1.2.3"
)
);

Assert.Equal(hasComplaints, !string.IsNullOrEmpty(complaints));
}
Expand All @@ -125,13 +196,33 @@ public void GiveMeComplaints_ForbiddenExplicitRuleWithVersionAndException_Matche
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new []
rules: new[]
{
new ReferenceRule(".*", ".*", RuleKind.Forbidden, description: "no no", version: "3.2.1"),
new ReferenceRule(".*", ".*", RuleKind.Allowed, description: "no no", version: "1.2.3")
});

var complaints = ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: "1.2.3"));
new ReferenceRule(
".*",
".*",
RuleKind.Forbidden,
description: "no no",
version: "3.2.1"
),
new ReferenceRule(
".*",
".*",
RuleKind.Allowed,
description: "no no",
version: "1.2.3"
),
}
);

var complaints = ruler.GiveMeComplaints(
new Reference(
from: "a",
to: "b",
isPrivateAssetsAllSet: true,
versionOrNull: "1.2.3"
)
);

Assert.True(string.IsNullOrEmpty(complaints));
}
Expand All @@ -141,30 +232,59 @@ public void GiveMeUnusedRulesComplaints_OptedOut_ReturnsNoComplaints()
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new[] { new ReferenceRule("a", "b", RuleKind.Forbidden, description: "no no") });
rules: new[]
{
new ReferenceRule("a", "b", RuleKind.Forbidden, description: "no no"),
}
);

ruler.GiveMeComplaints(new Reference(from: "x", to: "y", isPrivateAssetsAllSet: true, versionOrNull: null));
ruler.GiveMeComplaints(
new Reference(from: "x", to: "y", isPrivateAssetsAllSet: true, versionOrNull: null)
);
var complaints = ruler.GiveMeUnusedRulesComplaints();

Assert.True(string.IsNullOrEmpty(complaints));
}

[Fact]
public void GiveMeUnusedRulesComplaints_OptedIn_ReturnsOnlyUnusedRules()
public void GiveMeUnusedRulesComplaints_OptedIn_ReturnsOnlyUnusedExceptionRules()
{
var ruler = new ReferencesRuler(
patternParser: new RegexPatternParser(),
rules: new[]
{
new ReferenceRule("a", "b", RuleKind.Forbidden, description: "used"),
new ReferenceRule("x", "y", RuleKind.Forbidden, description: "unused")
new ReferenceRule(
"a",
"b",
RuleKind.Forbidden,
description: "unused forbidden - should not appear"
),
new ReferenceRule(
"a",
"b",
RuleKind.Allowed,
description: "used exception - should not appear"
),
new ReferenceRule("x", "y", RuleKind.Allowed, description: "unused exception"),
new ReferenceRule(
"m",
"n",
RuleKind.ExplicitlyForbidden,
description: "unused explicitly forbidden rule - should not appear"
),
},
complainAboutUnusedRules: true);
reportUnusedExceptionRules: true
);

ruler.GiveMeComplaints(new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null));
ruler.GiveMeComplaints(
new Reference(from: "a", to: "b", isPrivateAssetsAllSet: true, versionOrNull: null)
);
var complaints = ruler.GiveMeUnusedRulesComplaints();

Assert.Equal("Unused rules:\nunused", complaints);
Assert.Equal(
"Unused exception rules:\n[Allowed] from 'x' to 'y': unused exception",
complaints
);
}
}
}
Loading
Loading