public void PostExerciseTestRun_ShouldNotCreateNewTestsIfUserIsAStudent() { //Arrange var exercise = new Exercise { Id = _random.NextPositive(), Code = Guid.NewGuid().ToString() }; _assignmentServiceMock.Setup(service => service.GetOrCreateExerciseAsync(It.IsAny <ExerciseDto>())) .ReturnsAsync(exercise); var exerciseDto = new ExerciseDtoBuilder().WithExerciseCode(exercise.Code).Build(); var postedModel = new CreateExerciseTestRunModelBuilder() .WithExercise(exerciseDto) .WithSourceCode() .Build(); _controller = CreateControllerWithUserInContext(Role.Constants.Student); //Act _controller.PostExerciseTestRun(postedModel).Wait(); //Assert _assignmentServiceMock.Verify(service => service.LoadTestsForAssignmentAsync(exercise), Times.Once); _assignmentServiceMock.Verify( service => service.LoadOrCreateTestsForAssignmentAsync(It.IsAny <Assignment>(), It.IsAny <IEnumerable <string> >()), Times.Never); }
public void PostExerciseTestRun_ShouldReturnBadRequestIfPostedModelIsInvalid() { //Arrange var errorKey = Guid.NewGuid().ToString(); var errorMessage = Guid.NewGuid().ToString(); _controller.ModelState.AddModelError(errorKey, errorMessage); var exerciseDto = new ExerciseDtoBuilder().Build(); var postedModel = new CreateExerciseTestRunModelBuilder().WithExercise(exerciseDto).Build(); //Act var badRequestResult = _controller.PostExerciseTestRun(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 PostExerciseTestRun_ShouldSaveItInTheRepository() { //Arrange var exercise = new Exercise { Id = _random.NextPositive(), Code = Guid.NewGuid().ToString() }; _assignmentServiceMock.Setup(service => service.GetOrCreateExerciseAsync(It.IsAny <ExerciseDto>())) .ReturnsAsync(exercise); var exerciseDto = new ExerciseDtoBuilder().WithExerciseCode(exercise.Code).Build(); var postedModel = new CreateExerciseTestRunModelBuilder() .WithExercise(exerciseDto) .WithSourceCode() .Build(); TestPostAssignmentTestRun(() => _controller.PostExerciseTestRun(postedModel), postedModel, exercise); _assignmentServiceMock.Verify(service => service.GetOrCreateExerciseAsync(postedModel.Exercise), Times.Once); }