Пример #1
0
        public async Task DeleteAsync_ShouldReturnDeletedEntityTest()
        {
            var post = new Post();

            _serviceMock.Setup(x => x.DeleteAsync(It.IsAny <int>())).ReturnsAsync(new PostDTO());
            _mapperMock.Setup(x => x.Map <PostDTO, Post>(It.IsAny <PostDTO>())).Returns(post);
            var actionResult = await _controller.DeleteAsync(It.IsAny <int>());

            var deletedOkResult = actionResult as OkObjectResult;

            Assert.IsNotNull(deletedOkResult);
            Assert.IsNotNull(deletedOkResult.Value);
            Assert.AreEqual(deletedOkResult.Value as Post, post);
        }
Пример #2
0
        public async Task DeleteAsync_PostId_DeleteSuccessReturnsNoContent(
            [Frozen] Mock <IPostService> _postService)
        {
            //Arrange
            int id  = 1;
            var Sut = new PostsController(_postService.Object, _mapper.Object);

            //Act
            var actual = await Sut.DeleteAsync(id);

            //Assert
            _postService.Verify(x => x.RemovePost(It.IsAny <Post>()));
            Assert.NotNull(actual);
            Assert.IsType <NoContentResult>(actual);
        }
        public async Task TestCrudAsync()
        {
            var controller = new PostsController(new AppDb());
            int newPostId;

            // create
            {
                var newPost = new Post {
                    Title    = "post 1",
                    Content  = "first post",
                    AuthorId = _fixture.Author.Id
                };
                var result = await controller.CreateAsync(newPost);

                var response = Assert.IsType <OkObjectResult>(result);
                Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
                var post = Assert.IsType <Post>(response.Value);
                Assert.Equal(newPost.Title, post.Title);
                Assert.Equal(newPost.Content, post.Content);
                Assert.Equal(_fixture.Author.Id, post.AuthorId);
                Assert.True(newPost.Id > 0);
                newPostId = newPost.Id;
            }
            // update
            {
                var updatePost = new Post {
                    Title    = "title 3",
                    Content  = "content 3",
                    AuthorId = _fixture.Author.Id
                };
                var result = await controller.UpdateAsync(newPostId, updatePost);

                var response = Assert.IsType <OkObjectResult>(result);
                Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
                var Post = Assert.IsType <Post>(response.Value);
                Assert.Equal(updatePost.Title, Post.Title);
                Assert.Equal(updatePost.Content, Post.Content);
            }
            // list
            {
                var result = await controller.ListAsync();

                var response = Assert.IsType <OkObjectResult>(result);
                Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
                var Posts         = Assert.IsType <List <Post> >(response.Value);
                var filteredPosts = Posts.Where(m => _fixture.Posts.Exists(n => n.Id == m.Id) || m.Id == newPostId);
                Assert.Equal(4, filteredPosts.Count());
                var i = 3;
                foreach (var Post in filteredPosts)
                {
                    Assert.Equal(Post.Title, $"title {i}");
                    Assert.Equal(Post.Content, $"content {i}");
                    i--;
                }
            }
            // get
            {
                var result = await controller.GetAsync(_fixture.Posts[0].Id);

                var response = Assert.IsType <OkObjectResult>(result);
                Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
                var post = Assert.IsType <Post>(response.Value);
                Assert.NotNull(post.Author);
                Assert.Equal(_fixture.Posts[0].Author.Name, post.Author.Name);
            }
            // delete
            {
                var result = await controller.DeleteAsync(newPostId);

                var response = Assert.IsType <OkResult>(result);
                Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
            }
        }