public void ItReturnsNotFoundIfCarIsntFound() { // Arrange var service = new Mock <ICarService>(); service.Setup(m => m.FindAll()).Returns(TestHelpers.Fixture.CreateMany <Data.Models.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))) { // Act var target = container.Cars.First(); container.DeleteObject(target); try { container.SaveChanges(); } catch (DataServiceRequestException exception) { var inner = exception.InnerException as DataServiceClientException; Assert.IsNotNull(inner); Assert.AreEqual((int)HttpStatusCode.NotFound, inner.StatusCode); return; } // Assert Assert.Fail("Exception not caught."); } }
public void ItSavesNewCar() { // Arrange var newCar = new Car { Name = "Hakosuka", Make = "Nissan", Model = "Skyline GTR", Year = 1996 }; var service = new Mock<ICarService>(); service.Setup( m => m.Create( It.IsAny<Data.Models.Car>() ) ) .ReturnsAsync( TestHelpers.Fixture.Create<Data.Models.Car>() ); // 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 container.AddToCars( newCar ); ChangeOperationResponse response = container.SaveChanges().Cast<ChangeOperationResponse>().First(); var entityDescriptor = (EntityDescriptor) response.Descriptor; var actual = (Car) entityDescriptor.Entity; // Assert Assert.AreEqual( (int) HttpStatusCode.Created, response.StatusCode ); service.Verify( m => m.Create( It.IsAny<Data.Models.Car>() ), Times.Once ); Assert.IsNotNull( actual ); } }
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 ItDeletesTheCar() { // Arrange var storedCar = TestHelpers.Fixture.Create <Data.Models.Car>(); var service = new Mock <ICarService>(); service.Setup(m => m.Find(It.IsAny <int>())).ReturnsAsync(storedCar); service.Setup(m => m.Delete(It.IsAny <Data.Models.Car>())).ReturnsAsync(1).Verifiable(); // 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 var target = container.Cars.ByKey(storedCar.Id).GetValue(); container.DeleteObject(target); var response = container.SaveChanges() .Cast <ChangeOperationResponse>() .First(); // Assert Assert.AreEqual((int)HttpStatusCode.NoContent, response.StatusCode); Assert.IsNull(response.Error); service.Verify(m => m.Delete(It.Is <Data.Models.Car>(x => x.Id == storedCar.Id)), Times.Once); } }
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 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 ItDeletesTheCar() { // Arrange var storedCar = TestHelpers.Fixture.Create<Data.Models.Car>(); var service = new Mock<ICarService>(); service.Setup( m => m.Find( It.IsAny<int>() ) ).ReturnsAsync( storedCar ); service.Setup( m => m.Delete( It.IsAny<Data.Models.Car>() ) ).ReturnsAsync( 1 ).Verifiable(); // 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 var target = container.Cars.ByKey( storedCar.Id ).GetValue(); container.DeleteObject( target ); var response = container.SaveChanges() .Cast<ChangeOperationResponse>() .First(); // Assert Assert.AreEqual( (int) HttpStatusCode.NoContent, response.StatusCode ); Assert.IsNull( response.Error ); service.Verify( m => m.Delete( It.Is<Data.Models.Car>( x => x.Id == storedCar.Id ) ), Times.Once ); } }
public void IfNewCarHasZeroIdItReturnsBadRequest() { // Arrange var errorCar = TestHelpers.Fixture.Create <Data.Models.Car>(); errorCar.Id = 0; var service = new Mock <ICarService>(); service.Setup(m => m.Create(It.IsAny <Data.Models.Car>())) .ReturnsAsync(errorCar); // 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 try { container.AddToCars(new Car { Name = "Hakosuka", Make = "Nissan", Model = "Skyline GTR", Year = 1996 }); container.SaveChanges(); } 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 ItSavesNewCar() { // Arrange var newCar = new Car { Name = "Hakosuka", Make = "Nissan", Model = "Skyline GTR", Year = 1996 }; var service = new Mock <ICarService>(); service.Setup(m => m.Create(It.IsAny <Data.Models.Car>())) .ReturnsAsync(TestHelpers.Fixture.Create <Data.Models.Car>()); // 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 container.AddToCars(newCar); ChangeOperationResponse response = container.SaveChanges().Cast <ChangeOperationResponse>().First(); var entityDescriptor = (EntityDescriptor)response.Descriptor; var actual = (Car)entityDescriptor.Entity; // Assert Assert.AreEqual((int)HttpStatusCode.Created, response.StatusCode); service.Verify(m => m.Create(It.IsAny <Data.Models.Car>()), Times.Once); Assert.IsNotNull(actual); } }
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 IfMissingRequiredFieldsItReturnsBadRequest() { // Arrange var badCar = new Car { Name = "Empty" }; var service = new Mock<ICarService>(); service.Setup( m => m.Create( It.IsAny<Data.Models.Car>() ) ) .ReturnsAsync( TestHelpers.Fixture.Create<Data.Models.Car>() ); // 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 try { container.AddToCars( badCar ); container.SaveChanges(); } 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 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 ItReturnsNotFoundIfCarIsntFound() { // Arrange var service = new Mock<ICarService>(); service.Setup( m => m.FindAll() ).Returns( TestHelpers.Fixture.CreateMany<Data.Models.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 ) ) ) { // Act var target = container.Cars.First(); container.DeleteObject( target ); try { container.SaveChanges(); } catch ( DataServiceRequestException exception ) { var inner = exception.InnerException as DataServiceClientException; Assert.IsNotNull( inner ); Assert.AreEqual( (int) HttpStatusCode.NotFound, inner.StatusCode ); return; } // Assert Assert.Fail( "Exception not caught." ); } }