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));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }