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 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 ); } }
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); } }
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." ); }