Example #1
0
        public void Setup()
        {
            _createGitLabGroupCommand      = A.Fake <ICreateGitLabGroupCommand>();
            _createGitLabProjectCommand    = A.Fake <ICreateGitLabProjectCommand>();
            _pushToGitLabRepositoryCommand = A.Fake <IPushToGitLabRepositoryCommand>();
            _gitLabProjectFactory          = A.Fake <IGitLabProjectFactory>();
            _gitLabGroupFactory            = A.Fake <IGitLabGroupFactory>();

            _pushToRepositoryResponse = new PushToRepositoryResponse()
            {
                Successful = true
            };

            _group               = new Group();
            _project             = new Project();
            _createSolutionModel = new CreateSolutionModel();

            A.CallTo(() => _pushToGitLabRepositoryCommand.ExecuteAsync(A <PushToRepositoryRequest> ._))
            .Returns(_pushToRepositoryResponse);

            A.CallTo(() => _createGitLabGroupCommand.ExecuteAsync(A <Group> ._)).Returns(_group);
            A.CallTo(() => _createGitLabProjectCommand.ExecuteAsync(A <Project> ._)).Returns(_project);

            _sut = new CreateGitLabSolutionCommand(_createGitLabGroupCommand, _createGitLabProjectCommand,
                                                   _pushToGitLabRepositoryCommand, _gitLabProjectFactory, _gitLabGroupFactory);
        }
        public async Task <ActionResponse> ExecuteAsync(CreateSolutionModel model, Action <CreateSolutionModel, string> notifyAction)
        {
            var template = await _getTemplateByIdQuery.ExecuteAsync(model.SolutionTemplateId);

            await _gitService.CloneProjectAsync(template.RepositoryUrl, (s) => {});

            return(new ActionResponse());
        }
Example #3
0
 public void Setup()
 {
     Sut = Get <ICreateOctopusSolutionCommand>();
     _createSolutionModel = new CreateSolutionModel()
     {
         OctopusProjectName = "Divisions",
         OctopusGroupId     = "ProjectGroups-1",
         OctopusLifeCycleId = "Lifecycles-1"
     };
 }
Example #4
0
        public void Setup()
        {
            _sut = new GitLabProjectFactory();

            _model = new CreateSolutionModel()
            {
                GitLabProjectName        = "Divisions Admin",
                GitLabProjectDescription = "Project Description"
            };

            _groupId = "123";
        }
Example #5
0
        public void ExecuteCommand_ReturnsSuccessfulResult()
        {
            _createSolutionModel = new CreateSolutionModel()
            {
                VisualStudioSolutionName   = "Divisions",
                VisualStudioSubprojectName = "Admin"
            };

            _sut.ExecuteAsync(_createSolutionModel, (model, s) => { });

            Assert.That(AssertDirectoryExists);
        }
Example #6
0
 public void Setup()
 {
     Sut = Get <ICreateGitLabSolutionCommand>();
     _createSolutionModel = new CreateSolutionModel()
     {
         VisualStudioSolutionName   = "Divisions",
         VisualStudioSubprojectName = "Admin",
         GitLabProjectName          = "Divisions Admin App",
         GitLabGroupName            = "Divisions",
         GitLabGroupPath            = "divisions",
         GitLabProjectDescription   = "Divisions Admin Application"
     };
 }
        public async Task <CreateSolutionResponse> ExecuteAsync(CreateSolutionModel model,
                                                                Action <CreateSolutionModel, string> notifyAction)
        {
            notifyAction(model, "Solution creation process started");

            var visualStudioResponse = await _createVisualStudioSolutionCommand.ExecuteAsync(model, notifyAction);

            var gitLabResponse = await _createTeamcitySolutionCommand.ExecuteAsync(model, notifyAction);

            var teamCityResponse = await _createTeamcitySolutionCommand.ExecuteAsync(model, notifyAction);

            return(new CreateSolutionResponse());
        }
        public async Task <ActionResponse> ExecuteAsync(CreateSolutionModel model, Action <CreateSolutionModel, string> notifyAction)
        {
            // Clean working directory
            _directoryService.DeleteDirectory(_configuration.WorkingDirectory);
            var directory = _directoryService.CreateDirectory(_configuration.DownloadDirectory);
            // Clone template repository
            await _cloneSolutionTemplateCommand.ExecuteAsync(model, notifyAction);

            _directoryService.CopyDirectory(directory.FullName, _configuration.WorkingDirectory);
            await _updateSolutionFileNamespacesCommand.ExecuteAsync(model, notifyAction);

            // download template and unzip into location
            return(await _cloneSolutionTemplateCommand.ExecuteAsync(model, notifyAction));
        }
        public IList <ValidationResult> Validate(CreateSolutionModel model)
        {
            foreach (var rule in ValidationRules)
            {
                var isValid = rule.RuleExpression.Compile()(model);

                var result = new ValidationResult()
                {
                    IsValid = isValid, Message = rule.Message
                };
                ValidationResults.Add(result);
            }

            return(ValidationResults);
        }
        public async Task <ActionResponse> ExecuteAsync(CreateSolutionModel model, Action <CreateSolutionModel, string> notifyAction)
        {
            var cloneProjectScript = new PowershellScript("Convert-Solution.ps1", s => {});

            cloneProjectScript.AddArgument("solutionName", model.VisualStudioSolutionName);
            cloneProjectScript.AddArgument("projectName", model.VisualStudioSubprojectName);
            cloneProjectScript.AddArgument("workingDirPath", _configuration.WorkingDirectory);

            var result = await Task.Run(() => cloneProjectScript.ExecuteAync());

            return(new ActionResponse()
            {
                Success = result.Suceess,
                Errors = result.ErrorMessages
            });
        }
        public ActionResponse Eval(CreateSolutionModel model)
        {
            var teamcityResults = new TeamCityValidationRules().Validate(model);

            var response = new ActionResponse()
            {
                Success = true
            };

            if (teamcityResults.Any(res => !res.IsValid))
            {
                response.Success = false;
                response.Errors  = teamcityResults.Select(res => res.Message);
            }

            return(response);
        }
Example #12
0
 public IActionResult CreateSolution(CreateSolutionModel model)
 {
     if (ModelState.IsValid)
     {
         var entity = new Solution.Domain.Solution();
         model.CopyTo(entity);
         entity.SolutionId     = Guid.NewGuid();
         entity.OrganizationId = CurrentUser.OrganizationId;
         entity.PublisherId    = CurrentUser.SystemUserId;
         entity.CreatedBy      = CurrentUser.SystemUserId;
         entity.CreatedOn      = DateTime.Now;
         entity.InstalledOn    = DateTime.Now;
         _solutionService.Create(entity);
         return(CreateSuccess(new { id = entity.SolutionId }));
     }
     return(CreateFailure(GetModelErrors()));
 }
Example #13
0
        public void UpdateNamespacesInFiles_ReturnsSuccessfullFlag()
        {
            var expectedSolutionFileName = "Divisions.Admin.sln";

            _createSolutionModel = new CreateSolutionModel()
            {
                VisualStudioSolutionName   = "Divisions",
                VisualStudioSubprojectName = "Admin"
            };

            var result = _Sut.ExecuteAsync(_createSolutionModel, (s, m) => { });

            result.Wait();

            Assert.That(result.Result.Success, Is.True, "The update script failed to execute: {0}", result.Result.Errors.FirstOrDefault());
            Assert.That(AssertFileHasBeenRenamed(expectedSolutionFileName));
        }
Example #14
0
        public async Task <CreateOctopusSolutionResponse> ExecuteAsync(CreateSolutionModel model,
                                                                       Action <CreateSolutionModel, string> notifyAction)
        {
            // get group or create new
            var project = new ProjectResource()
            {
                Name           = model.OctopusProjectName,
                ProjectGroupId = model.OctopusGroupId,
                LifecycleId    = model.OctopusLifeCycleId
            };

            project = await _createOctopusProjectCommand.ExecuteAsync(project);

            return(new CreateOctopusSolutionResponse()
            {
                Project = project
            });
        }
        public async Task <CreateTeamCitySolutionResponse> ExecuteAsync(CreateSolutionModel model, Action <CreateSolutionModel, string> notifyAction)
        {
            notifyAction(model, "Teamcity build started");
            Project parentProject;

            await _createVisualStudioSolutionCommand.ExecuteAsync(model, notifyAction);

            // Create Main Project
            if (model.NewParentProject)
            {
                var mainProjectModel = _modelFactory.Create(model.TeamCityNewParentProjectName);
                parentProject = await _createProjectCommand.ExecuteAsync(mainProjectModel);
            }
            else
            {
                parentProject = await _getProjectQuery.Execute(model.TeamCityParentProjectId);
            }

            // Create Sub Project
            var subProjectModel = _modelFactory.Create(model.TeamCitySubprojectName, parentProject.Id);

            var subProject = await _createProjectCommand.ExecuteAsync(subProjectModel);

            // Create Build
            var build = await _createBuildCommand.ExecuteAsync(subProject.Id);

            var param = await _updateBuildParameterCommand.Execute(build, "SolutionName", model.VisualStudioSolutionName);

            // Create VCS Root and attach to build
            var vcsModel = _vcsModelFactory.Create(model.TeamCitySubprojectName + " master", subProject.Id, model.SourceControlUrl);
            var vcs      = await _createVcsRootCommand.Execute(vcsModel, build.Id);

            notifyAction(model, "Teamcity build complete");

            return(new CreateTeamCitySolutionResponse()
            {
                ParentProject = parentProject,
                SubProject = subProject,
                TypVcsRoot = vcs
            });
        }
        public async Task <CreateGitLabSolutionResponse> ExecuteAsync(CreateSolutionModel model,
                                                                      Action <CreateSolutionModel, string> notifyAction)
        {
            var group    = _gitLabGroupFactory.Create(model.GitLabProjectName, model.GitLabGroupPath);
            var newGroup = await _createGitLabGroupCommand.ExecuteAsync(group);

            var project = _gitLabProjectFactory.Create(model.GitLabProjectName, model.GitLabProjectDescription, newGroup.Id);

            project = await _createGitLabProjectCommand.ExecuteAsync(project);

            var pushRequest = new PushToRepositoryRequest()
            {
                RepositoryUrl = project.HttpUrl
            };
            var repoResponse = await _pushToGitLabRepositoryCommand.ExecuteAsync(pushRequest);

            return(new CreateGitLabSolutionResponse()
            {
                Group = newGroup,
                Project = project,
                PushToRepositorySuccessful = repoResponse.Successful
            });
        }
Example #17
0
 private void NotifyAction(CreateSolutionModel model, string message)
 {
 }
Example #18
0
        public IActionResult CreateSolution()
        {
            CreateSolutionModel model = new CreateSolutionModel();

            return(View(model));
        }