예제 #1
0
 def setUp(self):
     super(TestFulfillmentShipmentCreator, self).setUp()
     self.merchant = factories.MerchantAccountFactory()
     self.creator = FulfillmentOrderCreator()
     self.address = ShippingAddress.objects.create(
         first_name='test',
         last_name='man',
         line1="123 Imanginary Ave",
         line4="Funky Town",
         state="CA",
         postcode="56789",
         country=Country.objects.all()[0],
     )
     self.basket = factories.BasketFactory()
     self.basket.add_product(factories.ProductFactory())
     self.basket.add_product(factories.ProductFactory())
 def test_doesnt_change_stock_when_mws_record(self):
     stock_record = StockRecord.objects.create(
         product=factories.ProductFactory(), partner=self.merchant.partner)
     stock_record.num_in_stock = 12
     stock_record.num_allocated = 3
     stock_record.consume_allocation(quantity=1)
     self.assertEquals(stock_record.num_in_stock, 12)
     self.assertEquals(stock_record.num_allocated, 3)
 def test_changes_stock_when_it_isnt_mws_record(self):
     stock_record = StockRecord.objects.create(
         product=factories.ProductFactory(),
         partner=factories.PartnerFactory())
     stock_record.num_in_stock = 12
     stock_record.num_allocated = 3
     stock_record.consume_allocation(quantity=2)
     self.assertEquals(stock_record.num_in_stock, 10)
     self.assertEquals(stock_record.num_allocated, 1)
예제 #4
0
 def setUp(self):
     super(TestAmazonProfileDashboard, self).setUp()
     self.product = factories.ProductFactory(amazon_profile=None)
     self.marketplace = factories.AmazonMarketplaceFactory()
     try:
         self.product.amazon_profile
     except AmazonProfile.DoesNotExist:
         pass
     else:
         self.fail("product has Amazon profile but shouldn't")
예제 #5
0
    def test_ignores_order_lines_without_amazon_profile(self):
        non_mws_product = factories.ProductFactory(amazon_profile=None)
        self.basket.add_product(non_mws_product)
        order = create_order(basket=self.basket, shipping_address=self.address)
        self.creator.create_fulfillment_order(order)

        mws_orders = FulfillmentOrder.objects.all()
        self.assertEquals(len(mws_orders), 1)
        mws_order = mws_orders[0]
        self.assertEquals(mws_order.status, mws_order.UNSUBMITTED)
        self.assertEquals(mws_order.shipping_address.id, self.address.id)
        self.assertItemsEqual(
            [l.product for l in mws_order.lines.all()],
            list(Product.objects.exclude(id=non_mws_product.id)))
예제 #6
0
    def test_parses_the_response_correctly(self):
        xml_data = self.load_data('get_fulfillment_order_response.xml')
        httpretty.register_uri(
            httpretty.GET,
            'https://mws.amazonservices.com/FulfillmentOutboundShipment/2010-10-01',
            body=xml_data,
        )

        basket = factories.BasketFactory()
        basket.add_product(factories.ProductFactory())
        order = create_order(basket=basket)

        update_fulfillment_order(
            factories.FulfillmentOrderFactory(order=order))

        fulfillment_order = FulfillmentOrder.objects.all()[0]
        self.assertEquals(FulfillmentOrder.objects.count(), 1)
        self.assertEquals(fulfillment_order.status, 'COMPLETE')

        shipments = FulfillmentShipment.objects.all()
        self.assertEquals(len(shipments), 1)

        expected = {
            'Dkw.3ko298': {
                'shipment_id': 'Dkw.3ko298',
                'status': 'SHIPPED',
                'fulfillment_center_id': 'FCID01',
                'date_shipped': du_parse('2013-10-29T00:50:03Z'),
                'date_estimated_arrival': du_parse('2013-10-30T23:59:59Z'),
            },
        }
        for shipment in shipments:
            for attr, value in expected[shipment.shipment_id].iteritems():
                self.assertEquals(getattr(shipment, attr), value)

        packages = ShipmentPackage.objects.all()
        self.assertEquals(len(packages), 1)

        self.assertEquals(packages[0].tracking_number, 'MPT_1234')
        self.assertEquals(packages[0].carrier_code, 'Magic Parcels')

        shipping_events = ShippingEvent.objects.all()
        self.assertEquals(len(shipping_events), 1)

        self.assertItemsEqual([s.notes for s in shipping_events], [
            '* Shipped package via Magic Parcels with tracking number '
            'MPT_1234'
        ])
예제 #7
0
    def setUp(self):
        super(TestUpdateInventory, self).setUp()
        self.original_bases = StockRecord.__bases__
        if not mws_mixins.AmazonStockTrackingMixin in StockRecord.__bases__:
            StockRecord.__bases__ += (mws_mixins.AmazonStockTrackingMixin, )

        marketplace = factories.AmazonMarketplaceFactory()
        product = factories.ProductFactory(
            stockrecord__partner=marketplace.merchant.partner,
            amazon_profile__sku='SKU_12345')
        self.profile = product.amazon_profile
        self.profile.marketplaces.add(marketplace)

        self.assertEquals(self.profile.product.stockrecords.count(), 1)
        self.stockrecord = self.profile.product.stockrecords.all()[0]
        self.assertFalse(self.stockrecord.num_in_stock)
        self.assertFalse(self.stockrecord.num_allocated)
예제 #8
0
    def setUp(self):
        self.product = factories.ProductFactory(
            upc='9781741173420',
            title='Kayaking Around Australia',
            amazon_profile=None)

        self.merchant = factories.MerchantAccountFactory(
            name="Integration Test Account",
            seller_id=os.getenv('SELLER_ID'),
            aws_api_key=os.getenv('AWS_ACCESS_KEY_ID'),
            aws_api_secret=os.getenv('AWS_SECRET_ACCESS_KEY'))

        self.marketplace = factories.AmazonMarketplaceFactory(
            merchant=self.merchant, marketplace_id='ATVPDKIKX0DER')

        amazon_profile = factories.AmazonProfileFactory(
            product=self.product,
            fulfillment_by=AmazonProfile.FULFILLMENT_BY_AMAZON)

        amazon_profile.marketplaces.add(self.marketplace)
 def test_returns_true_if_it_is_mws_stockrecord(self):
     self.assertTrue(self.merchant.partner.name.startswith('Amazon'))
     stock_record = StockRecord.objects.create(
         product=factories.ProductFactory(), partner=self.merchant.partner)
     self.assertTrue(stock_record.is_mws_record)
 def test_returns_false_if_it_isnt_mws_stockrecord(self):
     stock_record = StockRecord.objects.create(
         product=factories.ProductFactory(),
         partner=factories.PartnerFactory())
     self.assertFalse(stock_record.is_mws_record)