public async Task CreateActionResult_ReturnsNotFoundObjectResultForNonexistentSession() { // Arrange var nonExistentSessionId = 999; string testName = "test name"; string testDescription = "test description"; var mockRepo = new Mock <IBrainstormSessionRepository>(); var controller = new IdeasController(mockRepo.Object); var newIdea = new NewIdeaModel() { Description = testDescription, Name = testName, SessionId = nonExistentSessionId }; // Act var result = await controller.CreateActionResult(newIdea); // Assert Assert.That(result, Is.TypeOf <ActionResult <BrainstormSession> >()); var actionResult = result as ActionResult <BrainstormSession>; Assert.That(actionResult.Result, Is.TypeOf <NotFoundObjectResult>()); }
public async Task Create_ReturnNewCreatedIdeaForSession() { int testSessionId = 123; string testName = "test name"; string testDescription = "test description"; var testSession = GetTestSession(); var mockRepo = new Mock <IBrainstormSessionRepository>(); mockRepo.Setup(repo => repo.GetByIdAsync(testSessionId)) .ReturnsAsync(testSession); var controller = new IdeasController(mockRepo.Object); var newIdea = new NewIdeaModel() { Description = testDescription, Name = testName, SessionId = testSessionId }; mockRepo.Setup(x => x.UpdateAsync(testSession)) .Returns(Task.CompletedTask) .Verifiable(); var result = await controller.CreateActionResult(newIdea); var actionResult = Assert.IsType <ActionResult <BrainstormSession> >(result); var createAtActionResult = Assert.IsType <CreatedAtActionResult>(actionResult.Result); var returnValue = Assert.IsType <BrainstormSession>(createAtActionResult.Value); mockRepo.Verify(); Assert.Equal(2, returnValue.Ideas.Count); Assert.Equal(testName, returnValue.Ideas.LastOrDefault().Name); Assert.Equal(testDescription, returnValue.Ideas.LastOrDefault().Description); }
public async Task CreateActionResult_ReturnsBadRequest_GivenInvalidModel() { // Arrange & Act var mockRepo = new Mock <IBrainstormSessionRepository>(); var controller = new IdeasController(mockRepo.Object); controller.ModelState.AddModelError("error", "some error"); // Act var result = await controller.CreateActionResult(model : null); // Assert var actionResult = Assert.IsType <ActionResult <BrainstormSession> >(result); Assert.IsType <BadRequestObjectResult>(actionResult.Result); }
public async Task IdeasController_CreateActionResult_LogErrorMessage_WhenModelStateIsInvalid() { // Arrange & Act var mockRepo = new Mock <IBrainstormSessionRepository>(); var controller = new IdeasController(mockRepo.Object); controller.ModelState.AddModelError("error", "some error"); // Act await controller.CreateActionResult(model : new NewIdeaModel()); // Assert var logEntries = this.appender.GetEvents(); Assert.True(logEntries.Any(l => l.Level == Level.Error), "Expected Error messages in the logs"); }
public async Task CreateActionResult_ReturnsNewlyCreatedIdeaForSession() { // Arrange int testSessionId = 123; string testName = "test name"; string testDescription = "test description"; var testSession = GetTestSession(); var mockRepo = new Mock <IBrainstormSessionRepository>(); mockRepo.Setup(repo => repo.GetByIdAsync(testSessionId)) .ReturnsAsync(testSession); var controller = new IdeasController(mockRepo.Object); var newIdea = new NewIdeaModel() { Description = testDescription, Name = testName, SessionId = testSessionId }; mockRepo.Setup(repo => repo.UpdateAsync(testSession)) .Returns(Task.CompletedTask) .Verifiable(); // Act var result = await controller.CreateActionResult(newIdea); // Assert Assert.That(result, Is.TypeOf <ActionResult <BrainstormSession> >()); var actionResult = result as ActionResult <BrainstormSession>; Assert.That(actionResult.Result, Is.TypeOf <CreatedAtActionResult>()); var createdAtActionResult = actionResult.Result as CreatedAtActionResult; Assert.That(createdAtActionResult.Value, Is.TypeOf <BrainstormSession>()); var returnValue = createdAtActionResult.Value as BrainstormSession; mockRepo.Verify(); Assert.AreEqual(2, returnValue.Ideas.Count()); Assert.AreEqual(testName, returnValue.Ideas.LastOrDefault().Name); Assert.AreEqual(testDescription, returnValue.Ideas.LastOrDefault().Description); }