public void ToDomain() { // Arrange var updateInvoice = new UpdateInvoiceBuilder().Build(); var expected = new InvoiceBuilder().Build(); // Act var actual = testSubject.ToDomain(updateInvoice, expected.Id); // Assert actual.ShouldBeEquivalentTo(expected); }
public void ToModel() { // Arrange var invoice = new InvoiceBuilder().Build(); var expected = new UpdateInvoiceBuilder().Build(); // Act var actual = testSubject.ToModel(invoice); // Assert actual.ShouldBeEquivalentTo(expected); }
public void Post_should_not_accept_invalid_request() { // Arrange var invoice = new UpdateInvoiceBuilder().Build(); testSubject.ModelState.AddModelError("name", "some validation failed"); // Act var response = testSubject.Post(invoice); // Assert Assert.IsType <BadRequestObjectResult>(response); }
public void Put_should_return_NoContent() { // Arrange var invoice = new UpdateInvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Exists(It.IsAny <string>())).Returns(true); // Act var response = testSubject.Put(Id, invoice); // Assert Assert.IsType <NoContentResult>(response); }
public void Put_should_return_NotFound_if_invoice_does_not_exist() { // Arrange var invoice = new UpdateInvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Exists(It.IsAny <string>())).Returns(false); // Act var response = testSubject.Put("1", invoice); // Assert Assert.IsType <NotFoundResult>(response); }
public void Put_should_return_NoContent_When_Etag_Is_Wildcard() { // Arrange var invoice = new UpdateInvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Exists(It.IsAny <string>())).Returns(true); invoiceRepositoryMock.Setup(r => r.Update(It.IsAny <Domain.Invoice>())).Returns(new Version("2")); testSubject.Request.Headers.Add(HeaderNames.IfMatch, EntityTagHeaderValue.Any.Tag); // Act var response = testSubject.Put(Id, invoice); // Assert Assert.IsType <NoContentResult>(response); }
public void Put_should_return_PreconditionFailed_When_Etag_Is_Wrong() { // Arrange var invoice = new UpdateInvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Exists(It.IsAny <string>())).Returns(true); invoiceRepositoryMock.Setup(r => r.Update(It.IsAny <Domain.Invoice>())).Returns(new Version("2")); testSubject.Request.Headers.Add(HeaderNames.IfMatch, $"\"unknown\""); // Act var response = testSubject.Put(Id, invoice); // Assert Assert.Equal(StatusCodes.Status412PreconditionFailed, ((StatusCodeResult)response).StatusCode); }
public void Post_should_return_created_response() { // Arrange var invoice = new UpdateInvoiceBuilder().Build(); var domainInvoice = new InvoiceBuilder().Build(); var getInvoice = new GetInvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Create(It.IsAny <Domain.Invoice>())).Returns(domainInvoice); getInvoiceMapperMock.Setup(mapper => mapper.ToModel(domainInvoice)).Returns(getInvoice); // Act var response = testSubject.Post(invoice); // Assert Assert.IsType <CreatedAtRouteResult>(response); }
public void Patch_should_return_NoContent() { // Arrange var invoice = new InvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Get(Id)).Returns(invoice); var updateInvoice = new UpdateInvoiceBuilder().Build(); updateInvoiceMapperMock.Setup(mapper => mapper.ToModel(invoice)).Returns((updateInvoice)); // Act var response = testSubject.Patch(Id, new JsonPatchDocument <UpdateInvoice>()); // Assert Assert.IsType <NoContentResult>(response); }
public void Put_should_return_ETag() { // Arrange var invoice = new UpdateInvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Exists(It.IsAny <string>())).Returns(true); invoiceRepositoryMock.Setup(r => r.Update(It.IsAny <Domain.Invoice>())).Returns(new Version("2")); // Act testSubject.Put(Id, invoice); // Assert var headers = testSubject.Response.GetTypedHeaders(); Assert.NotNull(headers.ETag); }
public void Patch_should_return_PreconditionFailed_When_Etag_Is_Wrong() { // Arrange var invoice = new InvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Get(Id)).Returns(invoice); testSubject.Request.Headers.Add(HeaderNames.IfMatch, $"\"unknown\""); var updateInvoice = new UpdateInvoiceBuilder().Build(); updateInvoiceMapperMock.Setup(mapper => mapper.ToModel(invoice)).Returns((updateInvoice)); // Act var response = testSubject.Patch(Id, new JsonPatchDocument <UpdateInvoice>()); // Assert Assert.Equal(StatusCodes.Status412PreconditionFailed, ((StatusCodeResult)response).StatusCode); }
public void Post_should_return_ETag() { // Arrange var invoice = new UpdateInvoiceBuilder().Build(); var domainInvoice = new InvoiceBuilder().Build(); var getInvoice = new GetInvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Create(It.IsAny <Domain.Invoice>())).Returns(domainInvoice); getInvoiceMapperMock.Setup(mapper => mapper.ToModel(domainInvoice)).Returns(getInvoice); // Act testSubject.Post(invoice); // Assert var headers = testSubject.Response.GetTypedHeaders(); Assert.NotNull(headers.ETag); }
public void Patch_should_return_ETag() { // Arrange var invoice = new InvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Get(Id)).Returns(invoice); invoiceRepositoryMock.Setup(r => r.Update(It.IsAny <Domain.Invoice>())).Returns(new Version("2")); var updateInvoice = new UpdateInvoiceBuilder().Build(); updateInvoiceMapperMock.Setup(mapper => mapper.ToModel(invoice)).Returns((updateInvoice)); // Act testSubject.Patch(Id, new JsonPatchDocument <UpdateInvoice>()); // Assert var headers = testSubject.Response.GetTypedHeaders(); Assert.NotNull(headers.ETag); }
public void Patch_should_return_NoContent_When_Etag_Is_Wildcard() { // Arrange var invoice = new InvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Get(Id)).Returns(invoice); invoiceRepositoryMock.Setup(r => r.Update(It.IsAny <Domain.Invoice>())).Returns(new Version("2")); var updateInvoice = new UpdateInvoiceBuilder().Build(); updateInvoiceMapperMock.Setup(mapper => mapper.ToModel(invoice)).Returns((updateInvoice)); testSubject.Request.Headers.Add(HeaderNames.IfMatch, EntityTagHeaderValue.Any.Tag); // Act var response = testSubject.Patch(Id, new JsonPatchDocument <UpdateInvoice>()); // Assert Assert.IsType <NoContentResult>(response); }
public void Patch_with_illegal_request_should_return_BadRequest() { // Arrange var invoice = new InvoiceBuilder().Build(); invoiceRepositoryMock.Setup(r => r.Get(Id)).Returns(invoice); var updateInvoice = new UpdateInvoiceBuilder().Build(); updateInvoiceMapperMock.Setup(mapper => mapper.ToModel(invoice)).Returns((updateInvoice)); var patchDocument = new JsonPatchDocument <UpdateInvoice>( new List <Operation <UpdateInvoice> > { new Operation <UpdateInvoice>("replace", @"/unknown", null, 32) }, new DefaultContractResolver()); // Act var response = testSubject.Patch(Id, patchDocument); // Assert Assert.IsType <BadRequestObjectResult>(response); }