public void create_solution_add_project_save_and_reload_2() { // Yeah, this is a big bang test. Just go with it. var solution = Solution.CreateNew("TestSolution", "Lib1.TestSolution"); var reference = solution.AddProject("TestProject"); reference.ProjectGuid.ShouldNotEqual(Guid.Empty); reference.ProjectName.ShouldEqual("TestProject"); reference.RelativePath.ShouldEqual("TestProject".AppendPath("TestProject.csproj")); var plan = new ProjectPlan(reference.ProjectName); CodeFileTemplate.Class("Foo").Alter(reference.Project, plan); CodeFileTemplate.Class("Bar").Alter(reference.Project, plan); solution.Save(); File.Exists("TestSolution".AppendPath("Lib1.TestSolution.sln")).ShouldBeTrue(); File.Exists("TestSolution".AppendPath("TestProject", "TestProject.csproj")).ShouldBeTrue(); var solution2 = Solution.LoadFrom("TestSolution".AppendPath("Lib1.TestSolution.sln")); var reference2 = solution2.FindProject("TestProject"); reference2.ShouldNotBeNull(); var project2 = reference2.Project; project2.ShouldNotBeNull(); project2.All <CodeFile>().OrderBy(x => x.Include) .Select(x => x.Include) .ShouldHaveTheSameElementsAs("Bar.cs", "Foo.cs"); }
public void add_deeper_class_to_root_of_project() { CodeFileTemplate.Class(Path.Combine("Bar", "Doer")).Alter(theProject, thePlan); var file = "Templated".AppendPath("TemplatedProject", "Bar", "Doer.cs"); File.Exists(file).ShouldBeTrue(); new FileSystem().ReadStringFromFile(file).ShouldEqualWithLineEndings(@" namespace TemplatedProject.Bar { public class Doer { } } ".Trim()); theProject.All <CodeFile>().Any(x => x.Include == "Bar\\Doer.cs") .ShouldBeTrue(); }
public void add_simple_class_to_root_of_project() { CodeFileTemplate.Class("Foo").Alter(theProject, thePlan); var file = "Templated".AppendPath("TemplatedProject", "Foo.cs"); File.Exists(file).ShouldBeTrue(); new FileSystem().ReadStringFromFile(file).ShouldEqualWithLineEndings(@" namespace TemplatedProject { public class Foo { } } ".Trim()); theProject.All <CodeFile>().Any(x => x.Include == "Foo.cs") .ShouldBeTrue(); }
public void add_simple_class_that_has_substitutions_on_its_name() { thePlan.Substitutions.Set("%SHORT_NAME%", "MyFoo"); CodeFileTemplate.Class("%SHORT_NAME%Registry").Alter(theProject, thePlan); var file = "Templated".AppendPath("TemplatedProject", "MyFooRegistry.cs"); File.Exists(file).ShouldBeTrue(); new FileSystem().ReadStringFromFile(file).ShouldEqualWithLineEndings(@" namespace TemplatedProject { public class MyFooRegistry { } } ".Trim()); theProject.All <CodeFile>().Any(x => x.Include == "MyFooRegistry.cs") .ShouldBeTrue(); }