public void WhenOrderIsOk_ThenInsertANewOrderWithTheProductsAndPrice() { var orderRepository = new RepositoryStub <Order>(); var appProxy = CreateAppProxy(orderRepository); var orderRepresentation = new OrderRepresentation() { Items = { new OrderItemRepresentation() { Name = "latte", Quantity = 1 } } }; //act appProxy.Post("/orders/", with => { with.Header("Content-Type", "application/xml"); with.Body(orderRepresentation.ToXmlString()); }); // assert var order = orderRepository.RetrieveAll().First(); order.Satisfy(_ => _.Items.Any(i => i.Product == latte && i.UnitPrice == 2.5m && i.Quantity == 1)); }
public void WhenOrderIsCancelled_ThenReturnItsContent() { // Arrange var order = new Order { Id = 123, Location = Location.TakeAway }; order.AddItem(new OrderItem(latte, 1, 1, new Dictionary <string, string>())); order.Status = OrderStatus.Canceled; var orderRepo = new RepositoryStub <Order>(order); var app = CreateAppProxy(orderRepo); //Act var response = app.Get("/trash/order/123/", with => { with.HttpRequest(); with.Header("Accept", "application/xml"); }); // Assert response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK); var body = response.BodyAsXml(); body.Descendants() .Single(e => e.Name.LocalName == "location") .Value.Should().Be.EqualTo("takeAway"); }
public void WhenOrderIsOk_ThenInsertANewOrderWithTheLocationInfo() { var orderRepository = new RepositoryStub <Order>(); var appProxy = CreateAppProxy(orderRepository); var orderRepresentation = new OrderRepresentation() { Location = Location.InShop, Items = { new OrderItemRepresentation() { Name = "latte", Quantity = 1 } } }; //act var result = appProxy.Post("/orders/", with => { with.Header("Content-Type", "application/xml"); with.Body(orderRepresentation.ToXmlString()); }); var order = orderRepository.RetrieveAll().First(); order.Location.Should().Be.EqualTo(Location.InShop); }
public void WhenOrderIsCancelled_ThenReturnItsContent() { // Arrange var order = new Order {Id = 123, Location = Location.TakeAway}; order.AddItem(new OrderItem(latte, 1, 1, new Dictionary<string, string>())); order.Status = OrderStatus.Canceled; var orderRepo = new RepositoryStub<Order>(order); var app = CreateAppProxy(orderRepo); //Act var response = app.Get("/trash/order/123/", with => { with.HttpRequest(); with.Header("Accept", "application/xml"); }); // Assert response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK); var body = response.BodyAsXml(); body.Descendants() .Single(e => e.Name.LocalName == "location") .Value.Should().Be.EqualTo("takeAway"); }
public void WhenOrderIsCancelled_ThenReturn200() { var orderRepo = new RepositoryStub<Order>(new Order { Id = 123, Status = OrderStatus.Canceled }); var app = CreateAppProxy(orderRepo); var response = app.Get("/trash/order/123/", with => with.HttpRequest()); response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK); }
public void WhenOrderIsNotCancelled_ThenReturn404() { var orderRepo = new RepositoryStub<Order>(new Order { Id = 123, Status = OrderStatus.Unpaid }); var app = CreateAppProxy(orderRepo); var response = app.Get("/trash/order/123"); response.StatusCode.Should().Be.EqualTo(HttpStatusCode.NotFound); }
public void WhenOrderIsCancelled_ThenReturn200() { var orderRepo = new RepositoryStub <Order>(new Order { Id = 123, Status = OrderStatus.Canceled }); var app = CreateAppProxy(orderRepo); var response = app.Get("/trash/order/123/", with => with.HttpRequest()); response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK); }
public void WhenOrderIsNotCancelled_ThenReturn404() { var orderRepo = new RepositoryStub <Order>(new Order { Id = 123, Status = OrderStatus.Unpaid }); var app = CreateAppProxy(orderRepo); var response = app.Get("/trash/order/123"); response.StatusCode.Should().Be.EqualTo(HttpStatusCode.NotFound); }
public EventSourcingTestHelper() { this.Events = new List <IVersionedEvent>(); this._repository = new RepositoryStub((eventSourced, collelationId) => { if (this._expectedCorrelationid != null) { Assert.AreEqual(this._expectedCorrelationid, collelationId); } this.Events.AddRange(eventSourced.Events); }); }
public EventSourcingTestHelper() { Events = new List <IVersionedEvent>(); repository = new RepositoryStub((eventSouced, correlationId) => { if (expectedCorrelationid != null) { Assert.Equal(expectedCorrelationid, correlationId); } Events.AddRange(eventSouced.Events); }); }
public Browser CreateAppProxy(IRepository<Order> orderRepository = null, IRepository<Product> productRepository = null) { var defaultProductRepository = new RepositoryStub<Product>( latte, new Product {Version = 1, Name = "Other", Price = 3.6m}); return new Browser( new ConfigurableBootstrapper (with => { with.Dependency<IRepository<Product>>(productRepository ?? defaultProductRepository); with.Dependency<IRepository<Order>>(orderRepository ?? new RepositoryStub<Order>()); } )); }
public void WithRestbuckJsonAcceptHeaderResponseIsJson() { var orderRepo = new RepositoryStub <Order>(new Order { Id = 123, Location = Location.TakeAway, Status = OrderStatus.Canceled }); var app = CreateAppProxy(orderRepo); var result = app.Get("/trash/order/123/", with => { with.HttpRequest(); with.Header("Accept", "application/vnd.restbucks+json"); }); Assert.That(result.Context.Response.ContentType, Is.EqualTo("application/json")); }
public Browser CreateAppProxy(IRepository <Order> orderRepository = null, IRepository <Product> productRepository = null) { var defaultProductRepository = new RepositoryStub <Product>( latte, new Product { Version = 1, Name = "Other", Price = 3.6m }); return(new Browser( new ConfigurableBootstrapper (with => { with.Dependency <IRepository <Product> >(productRepository ?? defaultProductRepository); with.Dependency <IRepository <Order> >(orderRepository ?? new RepositoryStub <Order>()); } ))); }
public void WhenOrderIsOk_ThenInsertANewOrderWithTheDateTime() { var orderRepository = new RepositoryStub<Order>(); var appProxy = CreateAppProxy(orderRepository); var orderRepresentation = new OrderRepresentation() {Items = {new OrderItemRepresentation() {Name = "latte", Quantity = 1}}}; //act var result = appProxy.Post("/orders/", with => { with.Header("Content-Type", "application/xml"); with.Body(orderRepresentation.ToXmlString()); }); var order = orderRepository.RetrieveAll().First(); order.Date.Should().Be.EqualTo(DateTime.Today); }
public void WithApplicationXmlAcceptHeaderResponseIsXml() { var orderRepo = new RepositoryStub<Order>(new Order { Id = 123, Location = Location.TakeAway, Status = OrderStatus.Canceled }); var app = CreateAppProxy(orderRepo); // Act var result = app.Get("/trash/order/123/", with => { with.HttpRequest(); with.Header("Accept", "application/xml"); }); // Assert Assert.That(result.Context.Response.ContentType, Is.EqualTo("application/vnd.restbucks+xml")); }
public void WithTextHtmlDefaultToReturningRestbucksXmlRepresentation() { // Arrange var order = new Order { Id = 123, Location = Location.TakeAway }; order.AddItem(new OrderItem(latte, 1, 1, new Dictionary <string, string>())); var orderRepo = new RepositoryStub <Order>(order); var app = CreateAppProxy(orderRepo); // Act var result = app.Get("/order/123/"); // Assert Assert.That(result.Context.Response.ContentType, Is.EqualTo("application/vnd.restbucks+xml")); }
public void WhenOrderHasNotChanged_ThenReturn304() { // Arrange var orderRepo = new RepositoryStub<Order>(new Order {Version = 1, Id = 123}); var app = CreateAppProxy(orderRepo); // Acr var response = app.Get("/order/123/", with => { with.HttpRequest(); with.Header("If-None-Match", "\"1\""); }); //Assert response.StatusCode.Should().Be.EqualTo(HttpStatusCode.NotModified); }
public void WhenOrderExists_ThenReturnItsContent() { // Arrange var order = new Order {Id = 123, Location = Location.TakeAway}; order.AddItem(new OrderItem(latte, 1, 1, new Dictionary<string, string>())); var orderRepo = new RepositoryStub<Order>(order); var app = CreateAppProxy(orderRepo); //Act var response = app.Get("/order/123/"); // Assert response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK); var body = response.BodyAsXml(); body.Descendants() .Single(e => e.Name.LocalName == "location") .Value.Should().Be.EqualTo("takeAway"); }
public void WhenOrderHasChanged_ThenReturn200() { // Arrange var orderRepo = new RepositoryStub<Order>(new Order {Version = 2, Id = 123}); var app = CreateAppProxy(orderRepo); // Act var response = app.Get("/order/123/", with => { with.HttpRequest(); with.Header("If-None-Match", "\"1\""); with.Header("Accept", "application/vnd.restbucks+xml"); }); // Assert response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK); }
public void WhenOrderHasChanged_ThenReturn200() { // Arrange var orderRepo = new RepositoryStub <Order>(new Order { Version = 2, Id = 123 }); var app = CreateAppProxy(orderRepo); // Act var response = app.Get("/order/123/", with => { with.HttpRequest(); with.Header("If-None-Match", "\"1\""); }); // Assert response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK); }
public static UnitTestContext Create(int bufferSize = BufferSize, bool?failSend = null, bool?failClose = null) { var repository = new RepositoryStub(); var errorHandler = new ErrorHandlerStub(); var appender = new TestableAppender(repository) { Lossy = false, BufferSize = bufferSize, ConnectionString = ConnectionString, ErrorHandler = errorHandler, FailSend = failSend, FailClose = failClose, RollingIndexNameDateFormat = "yyyy-MM-dd" }; appender.AddFieldNameOverride(new FieldNameOverride { Original = "timetamp", Replacement = "timestamp" } ); appender.AddFieldValueReplica(new FieldValueReplica { Original = "timeStamp", Replica = "@timestamp" } ); appender.ActivateOptions(); return(new UnitTestContext { Repository = repository, ErrorHandler = errorHandler, Appender = appender }); }
public Browser CreateAppProxy(IRepository<Order> orderRepository = null, IRepository<Product> productRepository = null) { var defaultProductRepository = new RepositoryStub<Product>( latte, new Product {Version = 1, Name = "Other", Price = 3.6m}); var bootstrapper = new ConfigurableBootstrapper (with => { with.Dependency(productRepository ?? defaultProductRepository); with.Dependency(orderRepository ?? new RepositoryStub<Order>()); with.AllDiscoveredModules(); }); var app = new Browser(bootstrapper); Container = (TinyIoCContainer) typeof(ConfigurableBootstrapper) .BaseType .GetProperty("ApplicationContainer", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) .GetValue(bootstrapper, null); return app; }
public static UnitTestContext Create(int bufferSize = BufferSize, bool?failSend = null, bool?failClose = null) { var repository = new RepositoryStub(); var errorHandler = new ErrorHandlerStub(); var appender = new TestableAppender(repository) { ConnectionString = ConnectionString, ErrorHandler = errorHandler, FailSend = failSend, FailClose = failClose, MaxRetries = 0 }; appender.ActivateOptions(); return(new UnitTestContext { Repository = repository, ErrorHandler = errorHandler, Appender = appender }); }
public void WhenOrderExists_ThenReturnItsContent() { // Arrange var order = new Order { Id = 123, Location = Location.TakeAway }; order.AddItem(new OrderItem(latte, 1, 1, new Dictionary <string, string>())); var orderRepo = new RepositoryStub <Order>(order); var app = CreateAppProxy(orderRepo); //Act var response = app.Get("/order/123/"); // Assert response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK); var body = response.BodyAsXml(); body.Descendants() .Single(e => e.Name.LocalName == "location") .Value.Should().Be.EqualTo("takeAway"); }
public void WithApplicationXmlAcceptHeaderResponseIsXml() { // Arrange var order = new Order { Id = 123, Location = Location.TakeAway }; order.AddItem(new OrderItem(latte, 1, 1, new Dictionary <string, string>())); var orderRepo = new RepositoryStub <Order>(order); var app = CreateAppProxy(orderRepo); // Act var result = app.Get("/order/123/", with => { with.HttpRequest(); with.Header("Accept", "application/xml"); }); // Assert Assert.That(result.Context.Response.ContentType, Is.EqualTo("application/xml")); }
public Browser CreateAppProxy(IRepository <Order> orderRepository = null, IRepository <Product> productRepository = null) { var defaultProductRepository = new RepositoryStub <Product>( latte, new Product { Version = 1, Name = "Other", Price = 3.6m }); var bootstrapper = new ConfigurableBootstrapper (with => { with.Dependency(productRepository ?? defaultProductRepository); with.Dependency(orderRepository ?? new RepositoryStub <Order>()); with.AllDiscoveredModules(); }); var app = new Browser(bootstrapper); Container = (TinyIoCContainer) typeof(ConfigurableBootstrapper) .BaseType .GetProperty("ApplicationContainer", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) .GetValue(bootstrapper, null); return(app); }
public static UnitTestContext Create(int bufferSize = BufferSize, bool? failSend = null, bool? failClose = null) { var repository = new RepositoryStub(); var errorHandler = new ErrorHandlerStub(); var appender = new TestableAppender(repository) { Lossy = false, BufferSize = bufferSize, ConnectionString = ConnectionString, ErrorHandler = errorHandler, FailSend = failSend, FailClose = failClose }; appender.ActivateOptions(); return new UnitTestContext { Repository = repository, ErrorHandler = errorHandler, Appender = appender }; }
public static UnitTestContext Create(int bufferSize = BufferSize, bool?failSend = null, bool?failClose = null) { var repository = new RepositoryStub(); var errorHandler = new ErrorHandlerStub(); var appender = new TestableAppender(repository) { Lossy = false, BufferSize = bufferSize, ServerList = ServerList, ErrorHandler = errorHandler, FailSend = failSend, FailClose = failClose }; appender.ActivateOptions(); return(new UnitTestContext { Repository = repository, ErrorHandler = errorHandler, Appender = appender }); }
public void WithRestbuckJsonAcceptHeaderResponseIsJson() { // Arrange var order = new Order { Id = 123, Location = Location.TakeAway }; order.AddItem(new OrderItem(latte, 1, 1, new Dictionary<string, string>())); var orderRepo = new RepositoryStub<Order>(order); var app = CreateAppProxy(orderRepo); // Act var result = app.Get("/order/123/", with => { with.HttpRequest(); with.Header("Accept", "application/vnd.restbucks+json"); }); // Assert Assert.That(result.Context.Response.ContentType, Contains.Substring("application/json")); }
public void WhenOrderIsOk_ThenInsertANewOrderWithTheProductsAndPrice() { var orderRepository = new RepositoryStub<Order>(); var appProxy = CreateAppProxy(orderRepository); var orderRepresentation = new OrderRepresentation() {Items = {new OrderItemRepresentation() {Name = "latte", Quantity = 1}}}; //act appProxy.Post("/orders/", with => { with.Header("Content-Type", "application/xml"); with.Body(orderRepresentation.ToXmlString()); }); // assert var order = orderRepository.RetrieveAll().First(); order.Satisfy(_ => _.Items.Any(i => i.Product == latte && i.UnitPrice == 2.5m && i.Quantity == 1)); }
public void WithTextHtmlDefaultToReturningRestbucksXmlRepresentation() { // Arrange var order = new Order { Id = 123, Location = Location.TakeAway }; order.AddItem(new OrderItem(latte, 1, 1, new Dictionary<string, string>())); var orderRepo = new RepositoryStub<Order>(order); var app = CreateAppProxy(orderRepo); // Act var result = app.Get("/order/123/"); // Assert Assert.That(result.Context.Response.ContentType, Is.EqualTo("application/vnd.restbucks+xml")); }
public EventSourcingTestHelper() { Events = new List <IVersionedEvent>(); _repository = new RepositoryStub((eventSouced, correlationId) => Events.AddRange(eventSouced.Events)); }
public void Dispose() { RepositoryStub?.Dispose(); }