public void DeleteNonExistingNewsShouldReturnNotFound()
        {
            var controller = new NewsController(this.mock.NewsRepositoryMock.Object);
            this.SetupController(controller);
            
            var response = controller.DeleteNews(12).ExecuteAsync(CancellationToken.None).Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(response.StatusCode, HttpStatusCode.NotFound);
        }
        public void Deleteing_Non_Existing_Item_Should_Return_BadRequest()
        {
            var mockContext = new Mock<INewsData>();

            mockContext.Setup(c => c.News)
                .Returns(_mocks.NewsRepoMock.Object);

            var newsController = new NewsController(mockContext.Object);
            SetupController(newsController);

            var response = newsController.DeleteNews(1000000).ExecuteAsync(CancellationToken.None).Result;

            Assert.AreEqual(response.StatusCode, HttpStatusCode.BadRequest);

            mockContext.Verify(c => c.SaveChanges(), Times.Never);
        }
        public void TestDeleteUnexistingNews()
        {
            var controller = new NewsController(repoMock.Object);
            SetupController(controller, "News");

            repoMock.Setup(repo => repo.Find(It.IsAny<object>())).Returns(null as News);

            var result = controller.DeleteNews(22).ExecuteAsync(new CancellationToken()).Result;
            Assert.AreEqual(HttpStatusCode.BadRequest, result.StatusCode);
        }
        public void TestDeleteValidNews()
        {
            var controller = new NewsController(repoMock.Object);
            SetupController(controller, "News");

            var news = new News { Title = "Zaglavie", Content = "dadadada" };
            repoMock.Setup(repo => repo.Find(It.IsAny<object>())).Returns(news);

            var result = controller.DeleteNews(22).ExecuteAsync(new CancellationToken()).Result;
            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
        }
        public void Delete_NonExisting_News_Should_Return_400BadRequest()
        {
            // Arrange
            int id = this.GenerateNonExistingId();

            var mockContext = new Mock<INewsData>();
            mockContext.Setup(c => c.News)
                .Returns(this.mock.NewsRepositoryMock.Object);

            var newsController = new NewsController(mockContext.Object);
            this.SetupController(newsController);

            // Act
            var response = newsController.DeleteNews(id)
                .ExecuteAsync(CancellationToken.None).Result;

            // Assert
            var fakeNewsAfterDeleting = this.mock.NewsRepositoryMock.Object.All().ToList();
            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            mockContext.Verify(c => c.SaveChanges(), Times.Never);
            Assert.AreEqual(5, fakeNewsAfterDeleting.Count);
        }
        public void Delete_Existing_News_Should_Return_200OK_And_Delete_News_From_Repository()
        {
            // Arrange
            var fakeNewsBeforeDeleting = this.mock.NewsRepositoryMock.Object.All().ToList();

            var fakeNewsToDelte = fakeNewsBeforeDeleting[0];

            var mockContext = new Mock<INewsData>();
            mockContext.Setup(c => c.News)
                .Returns(this.mock.NewsRepositoryMock.Object);

            var newsController = new NewsController(mockContext.Object);
            this.SetupController(newsController);

            // Act
            var response = newsController.DeleteNews(fakeNewsToDelte.Id)
                .ExecuteAsync(CancellationToken.None).Result;

            // Assert
            var fakeNewsAfterDeleting = this.mock.NewsRepositoryMock.Object.All().ToList();
            var deletedFakeNewsInRepo = fakeNewsAfterDeleting
                .FirstOrDefault(n => n.Id == fakeNewsToDelte.Id);
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            mockContext.Verify(c => c.SaveChanges(), Times.Once);
            Assert.IsNull(deletedFakeNewsInRepo);
            Assert.AreEqual(4, fakeNewsAfterDeleting.Count);
        }