public void GetExerciseResultsForUserShouldReturnExerciseDetailsIfParamatersAreValid() { //Arrange var existingExercise = new ExerciseBuilder().Build(); var userId = _random.NextPositive(); _exerciseRepositoryMock.Setup(repo => repo.GetSingleWithTestsAndCourseAsync(It.IsAny <int>())) .ReturnsAsync(existingExercise); var returnedExerciseResultDto = new AssignmentResultDto(); _exerciseServiceMock.Setup(service => service.GetResultsForUserAsync(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <DateTime?>())) .ReturnsAsync(returnedExerciseResultDto); var returnedTestRunInfo = new ExerciseTestRunInfoDto(); _exerciseServiceMock .Setup(service => service.GetUserTestRunInfoForExercise(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <DateTime?>())) .ReturnsAsync(returnedTestRunInfo); var returnedModel = new ExerciseDetailModel(); _exerciseConverterMock .Setup(converter => converter.ToExerciseDetailModel(It.IsAny <Exercise>(), It.IsAny <AssignmentResultDto>(), It.IsAny <ExerciseTestRunInfoDto>())) .Returns(returnedModel); _controller.ControllerContext = new ControllerContextBuilder().WithUser(userId.ToString()).WithRole(Role.Constants.Student).Build(); //Act var actionResult = _controller.GetExerciseResultsForUser(existingExercise.Id, userId, null).Result as OkObjectResult; //Assert Assert.That(actionResult, Is.Not.Null); Assert.That(actionResult.Value, Is.EqualTo(returnedModel)); _exerciseRepositoryMock.Verify(repo => repo.GetSingleWithTestsAndCourseAsync(existingExercise.Id), Times.Once); _exerciseServiceMock.Verify(service => service.GetResultsForUserAsync(existingExercise.Id, userId, null), Times.Once); _exerciseConverterMock.Verify(converter => converter.ToExerciseDetailModel(existingExercise, returnedExerciseResultDto, returnedTestRunInfo), Times.Once); }