Example #1
0
        public void Product_MapFromNewProductContractToDbEntity_Succeeds()
        {
            // Arrange
            const string productName        = "Xbox One X";
            const string productDescription = "Microsoft's latest gaming console";
            const double productPrice       = 599;
            var          productContract    = new NewProductContract
            {
                Name        = productName,
                Description = productDescription,
                Price       = productPrice
            };

            // Act
            var product = Mapper.Map <Product>(productContract);

            // Assert
            Assert.NotNull(product);
            Assert.AreEqual(productName, product.Name);
            Assert.AreEqual(productDescription, product.Description);
            Assert.AreEqual(productPrice, product.Price);
        }
Example #2
0
        public async Task Products_AddNewProductToCatalogWithChaosEnabled_ShouldReturnHttpInternalServerError()
        {
            // Arrange
            const string productsUrl        = ProductService.BaseUrl;
            var          selloService       = new SelloService(unleashChaosMonkeys: true);
            var          integrationTestId  = Guid.NewGuid().ToString();
            var          productName        = $"Integration Product ({integrationTestId})";
            var          productDescription = $"Product created by Integration Test - {integrationTestId}";
            const double productPrice       = 100;

            var newProduct = new NewProductContract
            {
                Name        = productName,
                Description = productDescription,
                Price       = productPrice
            };

            // Act
            var response = await selloService.PostResponseAsync(productsUrl, newProduct);

            // Assert
            Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode);
        }
Example #3
0
        public async Task <IHttpActionResult> Post(NewProductContract newProduct)
        {
            if (IsChaosMonkeyUnleashed())
            {
                throw new ChaosMonkeyException();
            }

            var product = Mapper.Map <Product>(newProduct);

            product.ExternalId = Guid.NewGuid().ToString();

            var productsRepository = await GetOrCreateProductsRepositoryAsync();

            var storedProduct = await productsRepository.AddAsync(product);

            var productInformation = Mapper.Map <ProductInformationContract>(storedProduct);

            TrackNewProductAddedEvent(productInformation);

            var resourceLocation = ComposeResourceLocation(productInformation.Id);

            return(Created(resourceLocation, productInformation));
        }