Exemple #1
0
        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");
        }
Exemple #3
0
        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);
        }
Exemple #9
0
        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"));
        }
Exemple #13
0
        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"));
        }
Exemple #16
0
        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);
        }
Exemple #21
0
        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;
        }
Exemple #23
0
        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"));
        }
Exemple #26
0
        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
                };
        }
Exemple #28
0
        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"));
        }
Exemple #32
0
 public EventSourcingTestHelper()
 {
     Events      = new List <IVersionedEvent>();
     _repository = new RepositoryStub((eventSouced, correlationId) => Events.AddRange(eventSouced.Events));
 }
Exemple #33
0
 public void Dispose()
 {
     RepositoryStub?.Dispose();
 }