예제 #1
0
        public void PostBlog_Should_Return_Created()
        {
            mockService.Setup(service => service.CreateBlog(It.IsAny <Blog>()))
            .Returns(blogForTest);

            var result = controller.PostBlog(new CreateBlogRequest());

            var action = Assert.IsAssignableFrom <CreatedAtActionResult>(result.Result);
        }
        public void PostBlogAddsBlog()
        {
            // Arrange
            BlogInfo blogInfo = new BlogInfo
            {
                Description = "New Testing",
                Title       = "New Testy's Blog"
            };

            _wordPressBlogReaderMock.Setup(m => m.VerifyBlog(It.IsAny <string>())).Returns(blogInfo);

            // Act
            IHttpActionResult actionResult =
                _controller.PostBlog(
                    new BlogModel
            {
                BlogID      = 0,
                BlogType    = BlogTypes.WordPress,
                CreatedDate = new DateTime(2015, 12, 2, 14, 55, 32),
                Approved    = false,
                AuthorEmail = "*****@*****.**",
                AuthorName  = "TestNew McTesterson",
                Description = "New Testing",
                Link        = "http://testy.wordpress.com",
                Title       = "New Testy's Blog"
            });

            // Assert
            // Verify:
            //  Add is called just once with Blog object
            //  Unit of work is committed just once
            //  HTTP result is CreatedAtRouteNegotiatedContentResult
            //  Location header is set in created result
            _blogRepositoryMock.Verify(p => p.Add(It.IsAny <Blog>()), Times.Once);
            _unitOfWorkMock.Verify(uow => uow.Commit(), Times.Once);
            Assert.IsInstanceOfType
                (actionResult, typeof(CreatedAtRouteNegotiatedContentResult <BlogModel>));
            var createdResult = actionResult as CreatedAtRouteNegotiatedContentResult <BlogModel>;

            Assert.IsNotNull(createdResult);
            Assert.AreEqual(createdResult.RouteName, "DefaultApi");
        }