public void AddProjectRequest(string name, string template, Action<ProjectRequest> configuration = null)
        {
            var request = new ProjectRequest(name, template);
            if (configuration != null) configuration(request);

            _projects.Add(request);
        }
        public void Configure(TemplateChoices choices, ProjectRequest request)
        {
            choices.Options = choices.Options ?? new string[0];

            var option = choices.Selections.Has(Name)
                ? FindOption(choices.Selections[Name])
                : Options.FirstOrDefault(x => choices.Options.Any(o => o.EqualsIgnoreCase(x.Name))) ?? Options.First();

            request.Alterations.AddRange(option.Alterations);
        }
        public void SetUp()
        {
            theSelection = new OptionSelection{Name = "select"};
            theSelection.Options.Add(new Option("a", "a1", "a2"));
            theSelection.Options.Add(new Option("b", "b1", "b2"));
            theSelection.Options.Add(new Option("c", "c1", "c2"));

            theChoices = new TemplateChoices();
            theRequest = new ProjectRequest("MyFoo", "baseline");
        }
        public void copies_project_substitutions()
        {
            executePlan(x =>
            {
                x.AddTemplate("Simple");
                var projectRequest = new ProjectRequest("MyProject", "Simple");
                projectRequest.Substitutions.Set("something-class", "MyProjectClass");

                x.AddProjectRequest(projectRequest);
            });

            thePlan.CurrentProject.Substitutions.ValueFor("something-class")
                   .ShouldEqual("MyProjectClass");
        }
        public void copy_file_in_project_alteration()
        {
            executePlan(x =>
            {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");
                projectRequest.Alterations.Add("Assets");

                x.AddProjectRequest(projectRequest);
            });

            assertFileExists("src", "MyProject", "content", "images", "fake.bmp");
        }
        public void assembly_reference_in_project()
        {
            executePlan(x =>
            {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");

                x.AddProjectRequest(projectRequest);
            });

            assertFileExists("src", "MyProject", "MyProject.csproj");

            var csProjFile = CsProjFile.LoadFrom("integrated".AppendPath("src", "MyProject", "MyProject.csproj"));
            csProjFile.Find<AssemblyReference>("System.Configuration").ShouldNotBeNull(); // this reference is NOT in the default
            csProjFile.Find<AssemblyReference>("System.Security").ShouldNotBeNull(); // this reference is NOT in the default
        }
        public ProjectRequest BuildProjectRequest(TemplateChoices choices)
        {
            var request = new ProjectRequest(choices.ProjectName, Template);
            request.Alterations.AddRange(Alterations);

            if (DotNetVersion.IsNotEmpty())
            {
                request.Version = DotNetVersion;
            }

            if (choices.Options != null)
            {
                choices.Options.Each(o =>
                {
                    var opt = FindOption(o);
                    if (opt == null)
                    {
                        if (!tryResolveSelection(o, choices))
                        {
                            if (opt == null)
                                throw new Exception("Unknown option '{0}' for project type {1}".ToFormat(o, Name));
                        }
                    }
                    else
                    {
                        request.Alterations.AddRange(opt.Alterations);
                    }

                });
            }

            if (Selections != null)
            {
                Selections.Each(selection => selection.Configure(choices, request));
            }

            choices.Inputs.Each((key, value) => request.Substitutions.Set(key, value));

            return request;
        }
        public void write_template_plan_preview_smoke_tester()
        {
            writePreview(x =>
            {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");
                projectRequest.Alterations.Add("Assets");

                x.AddProjectRequest(projectRequest);
            });
        }
 public void AddProjectRequest(ProjectRequest request)
 {
     _projects.Add(request);
 }
        public void gitignore_directive_in_project()
        {
            executePlan(x =>
            {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");
                projectRequest.Alterations.Add("FubuBottle");

                x.AddProjectRequest(projectRequest);
            });

            readFile(".gitignore").ShouldContain("Gemfile.lock");
        }
        public void pick_up_AssemblyInfo_transform_from_project_alteration()
        {
            executePlan(x =>
            {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");
                projectRequest.Alterations.Add("FubuBottle");

                x.AddProjectRequest(projectRequest);
            });

            var contents = readFile("src", "MyProject", "Properties", "AssemblyInfo.cs");
            contents.ShouldContain("using FubuMVC.Core;");
            contents.ShouldContain("[assembly: FubuModule]");
        }
示例#12
0
        public void SetUp()
        {
            var input = new NewCommandInput
            {
                SolutionName = "NewThing",
                Profile = "web-app",
            };

            TemplateRequest request = input.CreateRequestForSolution();

            project = request.Projects.Single();
        }
        public void execute_with_testing_project()
        {
            executePlan(x => {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");

                x.AddProjectRequest(projectRequest);

                x.AddTestingRequest(new ProjectRequest("MyProject.Testing", "unit-testing", "MyProject"));
            });

            var csProjFile = CsProjFile.LoadFrom("integrated".AppendPath("src", "MyProject.Testing", "MyProject.Testing.csproj"));

            csProjFile.All<ProjectReference>().Single()
                      .ProjectName.ShouldEqual("MyProject");
        }
示例#14
0
 public void AddTestingRequest(ProjectRequest request)
 {
     _testingProjects.Add(request);
 }
        public void writes_the_saved_template_substitutions_per_project()
        {
            executePlan(x =>
            {
                x.AddTemplate("Simple");
                var projectRequest = new ProjectRequest("MyProject", "Simple");
                projectRequest.Substitutions.Set("Foo", "Bar");

                x.AddProjectRequest(projectRequest);
            });

            assertFileExists("src", "MyProject", Substitutions.ConfigFile);
            readFile("src", "MyProject", Substitutions.ConfigFile).ShouldContain("Foo=Bar");
        }
        public void writes_out_ripple_import_file()
        {
            executePlan(x =>
            {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");

                x.AddProjectRequest(projectRequest);
            });

            var contents = readFile(TemplatePlan.RippleImportFile);

            contents.ShouldContain("MyProject: FubuMVC.Core, RavenDb.Server/2.0.0.0");
        }
        public void testing_project_adds_a_copy_references_step()
        {
            executePlan(x =>
            {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");

                x.AddProjectRequest(projectRequest);

                x.AddTestingRequest(new ProjectRequest("MyProject.Testing",  "unit-testing", "MyProject"));
            });

            var step = thePlan.Steps.OfType<CopyProjectReferences>().Single();
            step.OriginalProject.ShouldEqual("MyProject");
        }
        public void reads_in_code_files()
        {
            executePlan(x =>
            {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");

                x.AddProjectRequest(projectRequest);
            });

            var csProjFile = CsProjFile.LoadFrom("integrated".AppendPath("src", "MyProject", "MyProject.csproj"));
            csProjFile.Find<CodeFile>("SomeClass.cs").ShouldNotBeNull();
        }
        private void buildProjectPlan(TemplatePlan plan, ProjectRequest proj)
        {
            var projectPlan = new ProjectPlan(proj.Name) {DotNetVersion = proj.Version ?? DotNetVersion.V40};
            plan.Add(projectPlan);

            proj.Substitutions.CopyTo(projectPlan.Substitutions);

            var planner = new ProjectPlanner();
            if (proj.Template.IsNotEmpty())
            {
                planner.CreatePlan(_library.Find(TemplateType.Project, proj.Template), plan);
            }

            _library.Find(TemplateType.Alteration, proj.Alterations)
                    .Each(template => planner.CreatePlan(template, plan));
        }
        public void copy_project_folders_in_alteration()
        {
            executePlan(x => {
                x.AddTemplate("Simple");

                var projectRequest = new ProjectRequest("MyProject", "Simple");
                projectRequest.Alterations.Add("Assets");

                x.AddProjectRequest(projectRequest);
            });

            assertDirectoryExists("src", "MyProject", "content");
            assertDirectoryExists("src", "MyProject", "content", "scripts");
            assertDirectoryExists("src", "MyProject", "content", "styles");
            assertDirectoryExists("src", "MyProject", "content", "images");
        }