public void Post_ShouldCreateNewEntityAndReturnSuccess() { //----------------------------------------------------------------------------------------------------------- // Arrange //----------------------------------------------------------------------------------------------------------- var releaseToCreate = new NewsReleaseViewModel { Key = TestData.TestNewsRelease.Key, PublishDateTime = DateTime.Now }; var mockRepository = CreateDataStore(); mockRepository.Setup(r => r.AddEntity(It.IsAny <NewsRelease>())).Verifiable(); var controller = new NewsReleasesController(mockRepository.Object, _logger.Object, _mapper.Object); //----------------------------------------------------------------------------------------------------------- // Act //----------------------------------------------------------------------------------------------------------- var result = controller.Post(releaseToCreate) as StatusCodeResult; //----------------------------------------------------------------------------------------------------------- // Assert //----------------------------------------------------------------------------------------------------------- result.Should().BeOfType(typeof(StatusCodeResult), "because the create operation should go smoothly"); result.StatusCode.Should().Be(201, "because HTTP Status 201 should be returned upon creation of new entity"); // this will throw if the System-Under-Test (SUT) i.e. the controller didn't call repository.AddEntity(...) mockRepository.Verify(); }
public void Post_ShouldReturnBadRequest_WhenGivenInvalidModel() { //----------------------------------------------------------------------------------------------------------- // Arrange //----------------------------------------------------------------------------------------------------------- var mockRepository = CreateDataStore(); var controller = new NewsReleasesController(mockRepository.Object, _logger.Object, _mapper.Object); controller.ModelState.AddModelError("error", "some validation error"); //----------------------------------------------------------------------------------------------------------- // Act //----------------------------------------------------------------------------------------------------------- var result = controller.Post(model: null) as BadRequestObjectResult; //----------------------------------------------------------------------------------------------------------- // Assert //----------------------------------------------------------------------------------------------------------- result.Should().BeOfType(typeof(BadRequestObjectResult), "because the create operation should not work with invalid data"); result.StatusCode.Should().Be(400, "because HTTP Status 400 should be returned to signal a Bad Request"); }