public void ShouldReportSuccessWhenNoMethodsInProject() { //GIVEN var context = new NScanDriver(); context.HasProject("MyProject") .WithRootNamespace("MyProject") .With(File("lol.cs").Containing( Class("MySpecification"))); context.Add(RuleDemandingThat().Project("*MyProject*").HasDecoratedMethods("*Specification", "Should*")); //WHEN context.PerformAnalysis(); //THEN context.ReportShouldContain( HasMethodsNotDecoratedWithAttribute("*MyProject*", "*Specification", "Should*").Ok()); }
public void ShouldReportSuccessWhenAllProjectsHaveSpecifiedFramework() { //GIVEN var context = new NScanDriver(); context.HasProject("MyProject") .WithTargetFramework(TargetFramework.Default); context.Add( RuleDemandingThat().Project("*MyProject*") .HasProperty("TargetFramework", TargetFramework.Default)); //WHEN context.PerformAnalysis(); //THEN context.ReportShouldContain( HasProperty("*MyProject*", "TargetFramework", TargetFramework.Default).Ok()); }
public void ShouldReportSuccessWhenNoProjectHasSpecifiedPackageReference() { //GIVEN var projectName = Any.String(); var packageName = Any.String(); var context = new NScanDriver(); context.HasProject(projectName); context.Add(RuleDemandingThat().Project(projectName).IndependentOfPackage(packageName)); //WHEN context.PerformAnalysis(); //THEN context.ReportShouldContain( ProjectIndependentOfMessage.ProjectIndependentOfPackage(projectName, packageName).Ok()); context.ShouldIndicateSuccess(); }
public void ShouldReportFailureWhenProjectsHasSpecifiedPackageReferenceDirectly() { //GIVEN var projectName = Any.String(); var packageName = Any.String(); var context = new NScanDriver(); context.HasProject(projectName).WithPackages(packageName); context.Add(RuleDemandingThat().Project(projectName).IndependentOfPackage(packageName)); //WHEN context.PerformAnalysis(); //THEN context.ReportShouldContain( ProjectIndependentOfMessage.ProjectIndependentOfPackage(projectName, packageName).Error() .ViolationPath(projectName)); context.ShouldIndicateFailure(); }
ShouldReportErrorWhenMultipleNestedFilesOfSingleProjectAreInWrongNamespaceEvenThoughSomeAreInTheRightOne() { //GIVEN var context = new NScanDriver(); context.HasProject("MyProject") .WithRootNamespace("MyProject") .With(FileWithNamespace($"Domain{Path.DirectorySeparatorChar}lol4.cs", "MyProject.Domain")) .With(FileWithNamespace($"Domain{Path.DirectorySeparatorChar}lol5.cs", "MyProject")); context.Add(RuleDemandingThat().Project("*MyProject*").HasCorrectNamespaces()); //WHEN context.PerformAnalysis(); //THEN context.ReportShouldContain(HasCorrectNamespacesMessage .HasCorrectNamespaces("*MyProject*").Error() .ExpectedNamespace("MyProject", "MyProject") .ButFoundIncorrectNamespaceFor($"Domain{Path.DirectorySeparatorChar}lol5.cs", "MyProject")); context.ReportShouldNotContainText("lol4"); }
public void ShouldReportErrorWhenMultipleFilesOfSingleProjectAreInWrongNamespaceEvenThoughSomeAreInTheRightOne() { //GIVEN var context = new NScanDriver(); context.HasProject("MyProject") .WithRootNamespace("MyProject") .With(FileWithNamespace("lol1.cs", "WrongNamespace")) .With(FileWithNamespace("lol2.cs", "WrongNamespace")) .With(FileWithNamespace("lol3.cs", "MyProject")); context.Add(RuleDemandingThat().Project("*MyProject*").HasCorrectNamespaces()); //WHEN context.PerformAnalysis(); //THEN context.ReportShouldContain( HasCorrectNamespacesMessage.HasCorrectNamespaces("*MyProject*").Error() .ExpectedNamespace("MyProject", "MyProject") .ButFoundIncorrectNamespaceFor("lol1.cs", "WrongNamespace") .ExpectedNamespace("MyProject", "MyProject") .ButFoundIncorrectNamespaceFor("lol2.cs", "WrongNamespace")); context.ReportShouldNotContainText("lol3"); }