Files
suite/connector_amazon_sp/tests/test_orders.py
2022-02-04 13:25:45 -08:00

68 lines
3.4 KiB
Python

# © 2021 Hibou Corp.
from .api.orders import mock_orders_api
from .common import AmazonTestCase
class TestSaleOrder(AmazonTestCase):
def _import_sale_order(self, amazon_id):
with mock_orders_api():
return self._import_record('amazon.sale.order', amazon_id)
def test_import_sale_order(self):
""" Import sale order and test workflow"""
amazon_order_number = '111-1111111-1111111'
binding = self._import_sale_order(amazon_order_number)
# binding.external_id will be what we pass to import_record regardless of what the API returned
self.assertEqual(binding.external_id, amazon_order_number)
self.assertTrue(binding.is_amazon_order)
self.assertFalse(binding.odoo_id.is_amazon_order)
self.assertEqual(binding.effective_date, False) # This is a computed field, should it be in the mapper?
self.assertEqual(binding.date_planned, '2021-04-27 06:59:59')
self.assertEqual(binding.requested_date, '2021-05-01 06:59:59')
self.assertEqual(binding.ship_service_level, 'Std US D2D Dom')
self.assertEqual(binding.ship_service_level_category, 'Standard')
self.assertEqual(binding.marketplace, 'ATVPDKIKX0DER')
self.assertEqual(binding.order_type, 'StandardOrder')
self.assertFalse(binding.is_business_order)
self.assertTrue(binding.is_prime)
self.assertFalse(binding.is_global_express_enabled)
self.assertFalse(binding.is_premium)
self.assertFalse(binding.is_sold_by_ab)
self.assertEqual(binding.name, 'TEST' + amazon_order_number)
self.assertAlmostEqual(binding.total_amount, 159.96)
self.assertEqual(binding.currency_id, self.browse_ref('base.USD'))
default_warehouse = self.env['stock.warehouse'].search([('company_id', '=', self.env.user.company_id.id)], limit=1)
self.assertEqual(binding.warehouse_id, default_warehouse)
self.assertEqual(binding.payment_mode_id, self.browse_ref('account_payment_mode.payment_mode_inbound_ct1'))
self.assertEqual(len(binding.amazon_order_line_ids), 1)
self._test_import_sale_order_line(binding.amazon_order_line_ids[0])
self.assertEqual(binding.state, 'draft')
binding.action_confirm()
self.assertEqual(binding.state, 'sale')
self.assertEqual(binding.delivery_count, 1)
binding.action_cancel()
self.assertEqual(binding.state, 'cancel')
binding.action_draft()
self.assertEqual(binding.state, 'draft')
def _test_import_sale_order_line(self, binding_line):
self.assertEqual(binding_line.external_id, '12345678901234')
self.assertEqual(binding_line.name, 'Test Product Purchased From Amazon')
self.assertEqual(binding_line.product_uom_qty, 1)
self.assertAlmostEqual(binding_line.price_unit, 199.95)
self.assertAlmostEqual(binding_line.discount, 20.0)
product = binding_line.product_id
self.assertEqual(product.default_code, 'TEST_PRODUCT')
self.assertEqual(product.name, 'Test Product Purchased From Amazon')
self.assertAlmostEqual(product.list_price, 199.95)
self.assertEqual(product.categ_id, self.browse_ref('product.product_category_1'))
product_binding = product.amazon_bind_ids[0]
self.assertEqual(product_binding.external_id, product.default_code)
self.assertEqual(product_binding.asin, 'A1B1C1D1E1')