public void Delete_CallEndpoint_ShouldProhibitProcessing()
        {
            // Arrange
            var expectedResult = ResultBuilder.CreateErrorResult(HttpStatusCode.Forbidden, "Forbidden");

            // Act
            var actualResult = (ObjectResult)Sub.Delete(0, 0);

            // Assert
            Assert.AreEqual(expectedResult.StatusCode, actualResult.StatusCode);
        }
        public void Delete_RemoveNonExistentNews_ReturnNotFoundResult()
        {
            // Arrange
            Use <INewsRepository>()
            .Setup(s => s.Query(It.IsAny <NewsSpecifications>()))
            .Returns(Enumerable.Empty <News>());

            // Act
            var actualResult = Sub.Delete(100);

            // Assert
            Assert.IsInstanceOf <NotFoundResult>(actualResult);
        }
        public void Delete_RemoveNewsWithDuplicatedId_ReturnInvalidOperationException()
        {
            // Arrange
            var news = new News
            {
                Id = 0
            };

            Use <INewsRepository>()
            .Setup(s => s.Query(It.IsAny <NewsSpecifications>()))
            .Returns(new List <News> {
                news, news
            });

            // Act
            ActualValueDelegate <object> deleteDelegate = () => Sub.Delete(news.Id);

            // Assert
            Assert.That(deleteDelegate, Throws.TypeOf <InvalidOperationException>());
        }
        public void Delete_RemoveExistentNews_ReturnNoContentResult()
        {
            // Arrange
            var news = new News
            {
                Id = 0
            };

            Use <INewsRepository>()
            .Setup(s => s.Query(It.IsAny <NewsSpecifications>()))
            .Returns(new List <News> {
                news
            });

            // Act
            var actualResult = Sub.Delete(news.Id);

            // Assert
            Assert.IsInstanceOf <NoContentResult>(actualResult);
        }