public void GetOrCreateProjectComponentAsync_ShouldCreateComponentIfItDoesNotExist() { //Arrange var projectComponentDto = new ProjectComponentDtoBuilder().Build(); var existingProject = new Project { Id = _random.NextPositive(), Code = projectComponentDto.ProjectCode }; _projectServiceMock.Setup(service => service.GetOrCreateProjectAsync(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(existingProject); var addedComponent = new ProjectComponent { Id = _random.NextPositive(), Code = projectComponentDto.ComponentCode }; _projectComponentRepositoryMock.Setup(repo => repo.GetSingleAsync(It.IsAny <int>(), It.IsAny <string>())).Throws <DataNotFoundException>(); _projectComponentRepositoryMock.Setup(repo => repo.AddAsync(It.IsAny <ProjectComponent>())).ReturnsAsync(addedComponent); //Act var result = _service.GetOrCreateProjectComponentAsync(projectComponentDto).Result; //Assert _projectComponentRepositoryMock.Verify(repo => repo.GetSingleAsync(existingProject.Id, addedComponent.Code), Times.Once()); _projectComponentRepositoryMock.Verify(repo => repo.AddAsync(It.IsAny <ProjectComponent>()), Times.Once); Assert.That(result, Is.EqualTo(addedComponent)); }
public void PostProjectTestRun_ShouldReturnBadRequestIfPostedModelIsInvalid() { //Arrange var errorKey = Guid.NewGuid().ToString(); var errorMessage = Guid.NewGuid().ToString(); _controller.ModelState.AddModelError(errorKey, errorMessage); var projectComponentDto = new ProjectComponentDtoBuilder().Build(); var postedModel = new CreateProjectTestRunModelBuilder().WithProjectComponent(projectComponentDto).Build(); //Act var badRequestResult = _controller.PostProjectTestRun(postedModel).Result as BadRequestObjectResult; //Assert Assert.That(badRequestResult, Is.Not.Null); Assert.That(badRequestResult.Value, Has.One.Matches((KeyValuePair <string, object> kv) => kv.Key == errorKey)); _testResultConverterMock.Verify(converter => converter.From(It.IsAny <IEnumerable <TestResultModel> >(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <Exercise>()), Times.Never); _testRunServiceMock.Verify(repo => repo.RegisterRunAsync(It.IsAny <TestRun>()), Times.Never); }
public void PostProjectTestRun_ShouldSaveItInTheRepository() { //Arrange var component = new ProjectComponent { Id = _random.NextPositive(), Code = _random.NextPositive().ToString() }; _assignmentServiceMock.Setup(service => service.GetOrCreateProjectComponentAsync(It.IsAny <ProjectComponentDto>())) .ReturnsAsync(component); var projectComponentDto = new ProjectComponentDtoBuilder().WithComponentCode(component.Code).Build(); var postedModel = new CreateProjectTestRunModelBuilder() .WithProjectComponent(projectComponentDto) .WithSourceCode() .Build(); TestPostAssignmentTestRun(() => _controller.PostProjectTestRun(postedModel), postedModel, component); _assignmentServiceMock.Verify(service => service.GetOrCreateProjectComponentAsync(postedModel.ProjectComponent), Times.Once); }