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>());
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
        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);
        }