public void AmazonGenerateFeedService_GetProduct_ShouldSetValues() { var listing = new AmazonListing() { SellerSKU = "S1", Manafacturer = "M", Brand = "B", StandardProductId = "SP", StandardProductIDType = StandardProductIDType.EAN, Condition = ConditionType.New, ConditionNote = "CN", Title = "T", ReleaseDate = CurrentRequestData.Now, MfrPartNumber = "MPN1" }; var results = _amazonGenerateFeedService.GetProduct(listing); results.As <Product>().Condition.ConditionType.Should().Be(listing.Condition); results.As <Product>().Condition.ConditionNote.Should().Be(listing.ConditionNote); results.As <Product>().SKU.Should().Be(listing.SellerSKU); results.As <Product>().StandardProductID.Type.Should().Be(listing.StandardProductIDType); results.As <Product>().StandardProductID.Value.Should().Be(listing.StandardProductId); results.As <Product>().DescriptionData.Brand.Should().Be(listing.Brand); results.As <Product>().DescriptionData.Title.Should().Be(listing.Title); results.As <Product>().DescriptionData.Manufacturer.Should().Be(listing.Manafacturer); results.As <Product>().DescriptionData.MfrPartNumber.Should().Be(listing.MfrPartNumber); results.As <Product>().ReleaseDate.Should().Be(listing.ReleaseDate.Value); }
public Product GetProduct(AmazonListing listing) { var product = new Product { Condition = new ConditionInfo { ConditionType = listing.Condition, ConditionNote = listing.ConditionNote }, SKU = listing.SellerSKU, StandardProductID = new StandardProductID() { Type = listing.StandardProductIDType, Value = listing.StandardProductId }, DescriptionData = new ProductDescriptionData() { Brand = listing.Brand, Title = listing.Title, Manufacturer = listing.Manafacturer, MfrPartNumber = listing.MfrPartNumber } }; if (listing.ReleaseDate.HasValue) { product.ReleaseDate = listing.ReleaseDate.Value; } return(product); }
public AmazonListing UpdateAmazonListing(AmazonListing amazonListing) { var productVariant = _productVariantService.GetProductVariantBySKU(amazonListing.ProductVariant.SKU); amazonListing.ProductVariant = productVariant; amazonListing.Brand = productVariant.Product.Brand != null ? productVariant.Product.Brand.Name : String.Empty; amazonListing.Condition = ConditionType.New; var currency = _ecommerceSettings.Currency(); amazonListing.Currency = (currency != null && !String.IsNullOrWhiteSpace(currency.Code))?currency.Code:CurrencyCode.GBP.GetDescription(); amazonListing.Manafacturer = productVariant.Product.Brand != null ? productVariant.Product.Brand.Name : String.Empty; amazonListing.MfrPartNumber = productVariant.ManufacturerPartNumber; amazonListing.Quantity = productVariant.TrackingPolicy == TrackingPolicy.Track ? _getStockRemainingQuantity.Get(productVariant) : 1000; amazonListing.Price = _productPricingMethod.GetUnitPrice(productVariant, 0m, 0m); amazonListing.SellerSKU = productVariant.SKU; amazonListing.Title = productVariant.DisplayName; amazonListing.StandardProductIDType = _amazonSellerSettings.BarcodeIsOfType; amazonListing.StandardProductId = productVariant.Barcode.Trim(); amazonListing.FulfillmentChannel = amazonListing.AmazonListingGroup.FulfillmentChannel ?? AmazonFulfillmentChannel.MFN; _amazonListingService.Save(amazonListing); return(amazonListing); }
public void PrepareForSyncAmazonListingService_UpdateAmazonListing_ShouldReturnAmazonListingType() { var mockingKernel = new MockingKernel(); MrCMSKernel.OverrideKernel(mockingKernel); mockingKernel.Bind <ISession>().ToMethod(context => A.Fake <ISession>()); var product = new Product(); var productVariant = new ProductVariant() { Product = product, SKU = "S1", Barcode = "" }; var model = new AmazonListing() { ProductVariant = productVariant, AmazonListingGroup = new AmazonListingGroup() { FulfillmentChannel = AmazonFulfillmentChannel.MFN } }; A.CallTo(() => _productVariantService.GetProductVariantBySKU(model.ProductVariant.SKU)).Returns(productVariant); var results = _prepareForSyncAmazonListingService.UpdateAmazonListing(model); results.Should().BeOfType <AmazonListing>(); }
public async Task <IActionResult> Create([Bind("AmazonProductColorID,AmazonProductID,DesignURL,AmazonDesignID,Top,Left,Right,Bot")] AmazonListing amazonListing) { if (ModelState.IsValid) { _context.Add(amazonListing); _context.SaveChanges(); AmazonProductColor amazonProductColor = await _context.AmazonProductColors.SingleOrDefaultAsync(e => e.AmazonProductColorID == amazonListing.AmazonProductColorID); AmazonDesign amazonDesign = await _context.AmazonDesigns.SingleOrDefaultAsync(e => e.AmazonDesignID == amazonListing.AmazonDesignID); var baseImage = Path.Combine(_environment.WebRootPath, amazonProductColor.DesignURL); var opacity = amazonProductColor.Opacity; var coverImage = Path.Combine(_environment.WebRootPath, amazonDesign.DesignURL); var designURL = Path.Combine(COLOR_DIR, amazonListing.AmazonListingID + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpg"); var outputImage = Path.Combine(_environment.WebRootPath, designURL); if (amazonListing.Left == null || amazonListing.Left == 0) { amazonListing.Left = amazonProductColor.Left; } if (amazonListing.Top == null || amazonListing.Top == 0) { amazonListing.Top = amazonProductColor.Top; } if (amazonListing.Right == null || amazonListing.Right == 0) { amazonListing.Right = amazonProductColor.Right; } if (amazonListing.Bot == null || amazonListing.Bot == 0) { amazonListing.Bot = amazonProductColor.Bot; } Point topLeft = new Point((int)amazonListing.Left, (int)amazonListing.Top); Point topRight = new Point((int)amazonListing.Right, (int)amazonListing.Top); Point botLeft = new Point((int)amazonListing.Left, (int)amazonListing.Bot); Point botRight = new Point((int)amazonListing.Right, (int)amazonListing.Bot); using (FileStream savePic = System.IO.File.OpenWrite(outputImage)) { T_generator.Services.Amazon.ImageCollider.MergeImages( new BackPicture(baseImage, topLeft, topRight, botLeft, botRight), new FrontPicture(coverImage, (int)(opacity * 100))) //.DrawLines(new Color(1, 1, 1), 1, new Vector2[] { new Vector2(topLeft.X, 0), new Vector2(topLeft.X, 1000) }) //.DrawLines(new Color(1, 1, 1), 1, new Vector2[] { new Vector2(0, topLeft.Y), new Vector2(1000, topLeft.Y) }) .Save(savePic); amazonListing.DesignURL = designURL; } // _context.Add(amazonDesign); await _context.SaveChangesAsync(); return(RedirectToAction("Edit", new { id = amazonListing.AmazonListingID })); } ViewData["AmazonProductID"] = new SelectList(_context.AmazonProducts, "AmazonProductID", "Name"); ViewData["AmazonProductColorID"] = new SelectList(_context.AmazonProductColors, "AmazonProductColorID", "Name"); ViewData["AmazonDesignID"] = new SelectList(_context.AmazonDesigns, "AmazonDesignID", "Name"); return(View(amazonListing)); }
public void ListingController_CloseOne_ShouldCallGetAmazonCloseModel() { var model = new AmazonListing(); var result = _listingController.CloseOne(model); A.CallTo(() => _amazonListingSyncManager.GetAmazonSyncModel(model)).MustHaveHappened(); }
public void ListingController_CloseOne_ShouldCallUpdateAmazonListing() { var listing = new AmazonListing(); var result = _listingController.CloseOne(listing); A.CallTo(() => _prepareForSyncAmazonListingService.UpdateAmazonListing(listing)).MustHaveHappened(); }
public void ListingController_AddManyPOST_ShouldRedirectToSyncOneIfValuesProvided() { var listing = new AmazonListing(); var result = _listingController.AddOne_POST(listing); result.As <RedirectToRouteResult>().RouteValues["action"].Should().Be("SyncOne"); }
public void ListingController_AddOnePOST_ShouldCallSave() { var listing = new AmazonListing(); var result = _listingController.AddOne_POST(listing); A.CallTo(() => _amazonListingService.Save(listing)).MustHaveHappened(); }
public void CloseAmazonListing(AmazonSyncModel syncModel, AmazonListing amazonListing) { var feedContent = _amazonFeedsApiService.GetSingleProductDeleteFeed(amazonListing); var submissionId = _amazonRequestService.SubmitCloseRequest(syncModel, feedContent); _amazonRequestService.CheckIfDeleteRequestWasProcessed(syncModel, amazonListing, submissionId); }
public void SubmitSingleProductFeed(AmazonSyncModel model, AmazonListing item) { var feeds = _amazonFeedsApiService.GetSingleProductMainFeeds(item); var submissionIds = _amazonRequestService.SubmitMainFeeds(model, feeds); _amazonRequestService.CheckIfRequestWasProcessed(model, item, submissionIds); }
public void AmazonListingService_Delete_ShouldCallAddLog() { var item = new AmazonListing(); _amazonListingService.Delete(item); A.CallTo(() => _amazonLogService.Add(AmazonLogType.Listings, AmazonLogStatus.Delete, null, null, null, null, null, item, null, string.Empty, string.Empty)).MustHaveHappened(); }
public void AmazonListingSyncManager_GetAmazonSyncModel_ShouldReturnAmazonSyncModelTypeSecondMethod() { var model = new AmazonListing(); var results = _amazonListingSyncManager.GetAmazonSyncModel(model); results.Should().BeOfType <AmazonSyncModel>(); }
public void Save(AmazonListing item) { var id = item.Id; _session.Transact(session => session.SaveOrUpdate(item)); _amazonLogService.Add(AmazonLogType.Listings, id > 0 ? AmazonLogStatus.Update : AmazonLogStatus.Insert, null, null, null, null, null, item, null); }
public FileStream GetSingleProductDeleteFeed(AmazonListing listing) { var product = new Product { SKU = listing.SellerSKU }; return(_amazonGenerateFeedContentService.GetSingleFeed(product, AmazonEnvelopeMessageType.Product, AmazonEnvelopeMessageOperationType.Delete)); }
public ActionResult Details(AmazonListing amazonListing) { if (amazonListing != null) { return(View(amazonListing)); } return(RedirectToAction("Index", "ListingGroup")); }
// GET: AmazonProducts/Create public IActionResult Create() { var amazonListing = new AmazonListing(); ViewData["AmazonProductID"] = new SelectList(_context.AmazonProducts, "AmazonProductID", "Name"); ViewData["AmazonProductColorID"] = new SelectList(_context.AmazonProductColors, "AmazonProductColorID", "Name"); ViewData["AmazonDesignID"] = new SelectList(_context.AmazonDesigns, "AmazonDesignID", "Name"); return(View()); }
public void PrepareForSyncAmazonListingService_InitAmazonListingFromProductVariant_ShouldCallSave() { var item = new Currency() { Code = "GBP", Id = 1 }; Session.Transact(session => session.Save(item)); var mockingKernel = new MockingKernel(); MrCMSKernel.OverrideKernel(mockingKernel); mockingKernel.Bind <ISession>().ToMethod(context => A.Fake <ISession>()); mockingKernel.Bind <EcommerceSettings>().ToMethod(context => new EcommerceSettings() { CurrencyId = 1 }); var product = new Product() { BrandPage = new Brand() { Name = "B" } }; var productVariant = new ProductVariant() { Product = product, SKU = "S1", BasePrice = 1, StockRemaining = 2, Name = "P", ManufacturerPartNumber = "MPN1", Barcode = "" }; var amazonListingGroup = new AmazonListingGroup() { Id = 1, FulfillmentChannel = AmazonFulfillmentChannel.MFN }; var model = new AmazonListing() { ProductVariant = productVariant, StandardProductId = "1P", StandardProductIDType = StandardProductIDType.EAN, AmazonListingGroup = amazonListingGroup }; A.CallTo(() => _amazonListingGroupService.Get(amazonListingGroup.Id)).Returns(amazonListingGroup); A.CallTo(() => _productVariantService.GetProductVariantBySKU(model.ProductVariant.SKU)).Returns(productVariant); var results = _prepareForSyncAmazonListingService.InitAmazonListingFromProductVariant(model, model.ProductVariant.SKU, amazonListingGroup.Id); A.CallTo(() => _amazonListingGroupService.Save(amazonListingGroup)).MustHaveHappened(); }
public AmazonSyncModel GetAmazonSyncModel(AmazonListing amazonListing) { return(new AmazonSyncModel() { Id = amazonListing.Id, Title = amazonListing.Title, Description = amazonListing.ASIN, AmazonListingGroup = amazonListing.AmazonListingGroup }); }
public void AmazonGenerateFeedService_GetProductImage_ShouldReturnNullIfProductVariantNull() { var model = new AmazonListing() { SellerSKU = "S1" }; var results = _amazonGenerateFeedService.GetProductImage(model); results.Should().BeNull(); }
public void AmazonGenerateFeedService_GetProduct_ShouldReturnProductType() { var model = new AmazonListing() { SellerSKU = "S1" }; var results = _amazonGenerateFeedService.GetProduct(model); results.Should().BeOfType <Product>(); }
public void AmazonListingService_Delete_ShouldRemoveItemFromTheSession() { var item = new AmazonListing(); Session.Transact(session => session.Save(item)); _amazonListingService.Delete(item); Session.QueryOver <AmazonListing>().RowCount().Should().Be(0); }
public ActionResult CloseOne(AmazonListing amazonListing) { if (amazonListing != null) { ViewData["AmazonManageInventoryUrl"] = _amazonAppSettings.AmazonManageInventoryUrl; _prepareForSyncAmazonListingService.UpdateAmazonListing(amazonListing); return(View(_amazonListingSyncManager.GetAmazonSyncModel(amazonListing))); } return(RedirectToAction("Index", "ListingGroup")); }
public void AmazonListingService_Get_ShouldReturnPersistedEntryFromSession() { var item = new AmazonListing(); Session.Transact(session => session.Save(item)); var results = _amazonListingService.Get(1); results.As <AmazonListing>().Id.Should().Be(1); }
public void CheckIfRequestWasProcessed(AmazonSyncModel model, AmazonListing amazonListing, List <string> submissionIds) { var uploadSuccess = false; var retryCount = 0; var feedContent = _amazonFeedsApiService.GetSingleProductImageFeed(amazonListing); while (!uploadSuccess) { retryCount++; if (retryCount == 3) { AmazonProgressBarHelper.Update(model.Task, "Error", "Request timed out. Please check logs for potential errors and try again later.", 100, 100); break; } try { AmazonProgressBarHelper.Update(model.Task, "Push", "Checking if request was processed...", 100, 75); var amazonProduct = _amazonProductsApiService.GetMatchingProductForId(amazonListing.SellerSKU); if (amazonProduct != null) { AmazonProgressBarHelper.Update(model.Task, "Push", "Request was processed", 100, 75); AmazonProgressBarHelper.Update(model.Task, "Push", "Updating local status of Amazon Listing with SKU:" + amazonListing.SellerSKU, 100, 85); _amazonListingService.UpdateAmazonListingStatusAndAsin(amazonListing, amazonProduct); if (feedContent != null) { SubmitProductImageFeed(model, feedContent, ref submissionIds); } uploadSuccess = true; } else { AmazonProgressBarHelper.Update(model.Task, "Push", "Nothing yet, we will wait 2 min. more and try again...", 100, 75); Thread.Sleep(120000); } } catch (Exception ex) { CurrentRequestData.ErrorSignal.Raise(ex); AmazonProgressBarHelper.Update(model.Task, "Push", "Amazon Api is busy, we will wait additional 2 min. and try again...", 100, 75); Thread.Sleep(120000); } } }
public void AmazonListingService_Save_ShouldUpdateInSession() { var item = new AmazonListing(); Session.Transact(session => session.Save(item)); item.SellerSKU = "T1"; _amazonListingService.Save(item); Session.Evict(item); Session.Get <AmazonListing>(1).SellerSKU.Should().Be("T1"); }
public AmazonListingModel() { Listing = new AmazonListing(); Name = String.Empty; Page = 1; PageSize = 10; CategoryId = 0; Categories = new List <SelectListItem>(); ProductVariants = new PagedList <ProductVariant>(new List <ProductVariant>(), Page, PageSize); }
public ActionResult AddOne_POST(AmazonListing amazonListing) { if (amazonListing != null) { if (ModelState.IsValid) { _amazonListingService.Save(amazonListing); return(RedirectToAction("SyncOne", new { id = amazonListing.Id })); } return(View(amazonListing)); } return(RedirectToAction("Index", "ListingGroup")); }
public void AmazonListingService_GetByProductVariantSku_ShouldReturnPersistedEntryFromSession() { var item = new AmazonListing() { SellerSKU = "T1" }; Session.Transact(session => session.Save(item)); var results = _amazonListingService.GetByProductVariantSku("T1"); results.As <AmazonListing>().Id.Should().Be(1); }
public void PrepareForSyncAmazonListingService_InitAmazonListingFromProductVariant_ShouldReturnAmazonListingType() { var mockingKernel = new MockingKernel(); MrCMSKernel.OverrideKernel(mockingKernel); mockingKernel.Bind <ISession>().ToMethod(context => A.Fake <ISession>()); var model = new AmazonListing(); var results = _prepareForSyncAmazonListingService.InitAmazonListingFromProductVariant(model, "S1", 1); results.Should().BeOfType <AmazonListing>(); }