public void IfMissingRequiredFieldsItReturnsBadRequest() { // Arrange var storedCar = TestHelpers.Fixture.Create <Car>(); var service = new Mock <ICarService>(); service.Setup(m => m.Find(It.IsAny <int>())).ReturnsAsync(storedCar); // Bind our mock with Ninject var kernel = new StandardKernel(); kernel.Bind <ICarService>().ToConstant(service.Object); var container = new ExampleContainer(new Uri(BaseAddress)); using (WebApp.Start(BaseAddress, app => TestHelpers.ConfigureWebApi(app, kernel))) { // Act Client.Example.Data.Models.Car target = container.Cars.ByKey(storedCar.Id).GetValue(); target.Name = null; try { container.UpdateObject(target); container.SaveChanges(SaveChangesOptions.ReplaceOnUpdate); } catch (DataServiceRequestException exception) { var inner = exception.InnerException as DataServiceClientException; Assert.IsNotNull(inner); Assert.AreEqual((int)HttpStatusCode.BadRequest, inner.StatusCode); return; } // Assert Assert.Fail("Exception not caught."); } }
public void IfInvalidCarItReturnsNotFound() { // Arrange var service = new Mock <ICarService>(); service.Setup(m => m.FindAll()) .Returns(TestHelpers.Fixture.CreateMany <Car>().AsQueryable()); service.Setup(m => m.Find(It.IsAny <int>())).ReturnsAsync(null); // Bind our mock with Ninject var kernel = new StandardKernel(); kernel.Bind <ICarService>().ToConstant(service.Object); var container = new ExampleContainer(new Uri(BaseAddress)); using (WebApp.Start(BaseAddress, app => TestHelpers.ConfigureWebApi(app, kernel))) { try { // Act Client.Example.Data.Models.Car first = container.Cars.Execute().First(); first.Make = "FOO"; container.UpdateObject(first); container.SaveChanges(SaveChangesOptions.ReplaceOnUpdate); } catch (DataServiceRequestException exception) { var inner = exception.InnerException as DataServiceClientException; Assert.IsNotNull(inner); Assert.AreEqual((int)HttpStatusCode.NotFound, inner.StatusCode); service.Verify(x => x.Update(It.IsAny <Car>()), Times.Never); return; } } Assert.Fail("Exception not caught."); }
public void ItUpdatesTheCar() { // Arrange var storedCar = TestHelpers.Fixture.Create <Car>(); var service = new Mock <ICarService>(); service.Setup(m => m.Find(It.IsAny <int>())).ReturnsAsync(storedCar); service.Setup(m => m.Update(It.IsAny <Car>())).ReturnsAsync(storedCar); // Bind our mock with Ninject var kernel = new StandardKernel(); kernel.Bind <ICarService>().ToConstant(service.Object); var container = new ExampleContainer(new Uri(BaseAddress)); using (WebApp.Start(BaseAddress, app => TestHelpers.ConfigureWebApi(app, kernel))) { // Act Client.Example.Data.Models.Car target = container.Cars.ByKey(storedCar.Id).GetValue(); target.Name = TestHelpers.Fixture.Create <string>(); container.UpdateObject(target); ChangeOperationResponse response = container.SaveChanges(SaveChangesOptions.ReplaceOnUpdate) .Cast <ChangeOperationResponse>() .First(); var entityDescriptor = (EntityDescriptor)response.Descriptor; var actual = (Client.Example.Data.Models.Car)entityDescriptor.Entity; // Assert Assert.AreEqual((int)HttpStatusCode.NoContent, response.StatusCode); Assert.IsNotNull(actual); Assert.AreEqual(storedCar.Make, actual.Make); Assert.AreEqual(storedCar.Model, actual.Model); Assert.AreEqual(storedCar.Year, actual.Year); } }