public void SyncMagentoTransactionsToSales() { System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); using (MyDataContext.Default = new MyDataContext(Effort.EntityConnectionFactory.CreateTransient("name=MyDataContext"))) { this.InitializeDatabase(); var magentoSyncer = new MagentoSalesSyncer(); var magentoSale = CreateMagentoSale(); magentoSyncer.SyncToSale(magentoSale); var sale = MyDataContext.Default.Sales.First(); Assert.AreEqual(TimeZoneInfo.ConvertTimeToUtc(new DateTime(2015, 08, 25, 14, 59, 00)), sale.DateOfPayment); Assert.AreEqual(TimeZoneInfo.ConvertTimeToUtc(new DateTime(2015, 08, 24, 14, 59, 00)), sale.DateOfSale); Assert.AreEqual("*****@*****.**", sale.EMailAddress); Assert.AreEqual("billing city", sale.InvoiceCity); Assert.AreEqual("billing country id", sale.InvoiceCountry); Assert.AreEqual("billing firstname billing lastname", sale.InvoiceName); Assert.AreEqual("billing postcode", sale.InvoicePostcode); Assert.AreEqual("billing region", sale.InvoiceRegion); Assert.AreEqual("billing street 1", sale.InvoiceStreet1); Assert.AreEqual("billing street 2", sale.InvoiceStreet2); Assert.AreEqual("123", sale.SourceId); Assert.AreEqual("billing firstname billing lastname", sale.NameOfBuyer); Assert.AreEqual("0049 171 1234567", sale.PhoneNumber); Assert.AreEqual("magento - 123", sale.ProtocolNumber); Assert.AreEqual("shipping city", sale.ShippingCity); Assert.AreEqual("shipping country id", sale.ShippingCountry); Assert.AreEqual("shipping firstname shipping lastname", sale.ShippingName); Assert.AreEqual("shipping postcode", sale.ShippingPostcode); Assert.AreEqual("shipping region", sale.ShippingRegion); Assert.AreEqual("shipping street 1", sale.ShippingStreet1); Assert.AreEqual("shipping street 2", sale.ShippingStreet2); Assert.AreEqual(SaleSources.Magento, sale.Source); Assert.AreEqual(58.90m, sale.TotalPriceGross); var saleItem = sale.SaleItems.First(); Assert.AreEqual(-1, saleItem.EbaySalesRecordNumber); Assert.AreEqual("item name", saleItem.ExternalArticleName); Assert.AreEqual("1234567", saleItem.ExternalArticleNumber); Assert.AreEqual("sku", saleItem.InternalArticleNumber); Assert.AreEqual(2, saleItem.Amount); Assert.AreEqual(19m, saleItem.TaxRate); Assert.AreEqual(29.45m, saleItem.SinglePriceGross); Assert.AreEqual(String.Empty, saleItem.EbayOrderLineItemID); // Item is already synced, so no new entry should be created var noOfSales = MyDataContext.Default.Sales.Count(); var noOfSaleItems = MyDataContext.Default.SaleItems.Count(); magentoSyncer.SyncToSale(magentoSale); Assert.AreEqual(noOfSales, MyDataContext.Default.Sales.Count()); Assert.AreEqual(noOfSaleItems, MyDataContext.Default.SaleItems.Count()); } }
public void DoNotSyncMailedOrInvoicedItemsFromMagento() { using (MyDataContext.Default = new MyDataContext(Effort.EntityConnectionFactory.CreateTransient("name=MyDataContext"))) { this.InitializeDatabase(); var magentoSyncer = new MagentoSalesSyncer(); var magentoSale = CreateMagentoSale(); magentoSyncer.SyncToSale(magentoSale); var sale = MyDataContext.Default.Sales.First(); // Items which are shipped shouldn't be synced again var newDateTime = new DateTime(2015, 01, 01, 14, 59, 00); magentoSale.created_at = newDateTime; Mailing.CreateFromUnsentSales(); magentoSyncer.SyncToSale(magentoSale); Assert.AreNotSame(newDateTime, sale.DateOfSale); // Items which are invoiced shouldn't be synced again Invoice.CreateFromUnbilledSales(); magentoSale.created_at = newDateTime; magentoSyncer.SyncToSale(magentoSale); Assert.AreNotSame(newDateTime, sale.DateOfSale); } }
public void DoNotSyncCanceldOrChangedItemsFromMagento() { using (MyDataContext.Default = new MyDataContext(Effort.EntityConnectionFactory.CreateTransient("name=MyDataContext"))) { this.InitializeDatabase(); var magentoSyncer = new MagentoSalesSyncer(); var magentoSale = CreateMagentoSale(); magentoSyncer.SyncToSale(magentoSale); var sale = MyDataContext.Default.Sales.First(); // Canceled items shouldn't be synced var newDateOfSale = new DateTime(2015, 01, 01, 14, 59, 00); magentoSale.created_at = newDateOfSale; sale = MyDataContext.Default.Sales.First(); sale.Invoice = null; sale.Mailing = null; foreach (var item in sale.SaleItems) { item.CancelDate = DateTime.Now; } MyDataContext.Default.SaveChanges(); magentoSale.created_at = newDateOfSale; magentoSyncer.SyncToSale(magentoSale); Assert.AreNotSame(newDateOfSale, sale.DateOfSale); foreach (var item in sale.SaleItems) { item.CancelDate = null; } // Items which have been changed manually shouldn't be synced either sale = MyDataContext.Default.Sales.First(); sale.ManuallyChanged = true; MyDataContext.Default.SaveChanges(); magentoSale.created_at = newDateOfSale; magentoSyncer.SyncToSale(magentoSale); Assert.AreNotSame(newDateOfSale, sale.DateOfSale); } }