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