98 lines
3.3 KiB
Python
98 lines
3.3 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
# this repository contains the full copyright notices and license terms.
|
|
|
|
from unittest.mock import MagicMock, Mock
|
|
|
|
from trytond.modules.company.tests import CompanyTestMixin
|
|
from trytond.pool import Pool
|
|
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
|
|
|
|
|
|
class IncotermTestCase(CompanyTestMixin, ModuleTestCase):
|
|
'Test Incoterm module'
|
|
module = 'incoterm'
|
|
extras = [
|
|
'carrier', 'company', 'purchase', 'purchase_request_quotation',
|
|
'sale', 'sale_shipment_cost', 'sale_opportunity',
|
|
'sale_shipment_grouping', 'stock', 'account_invoice',
|
|
'account_invoice_stock', 'web_shop']
|
|
|
|
@with_transaction()
|
|
def test_shipment_grouping(self):
|
|
"Test fields to group shipment"
|
|
pool = Pool()
|
|
Sale = pool.get('sale.sale')
|
|
ShipmentOut = pool.get('stock.shipment.out')
|
|
|
|
sale = Sale()
|
|
shipment = MagicMock(spec=ShipmentOut)
|
|
|
|
fields = sale._get_shipment_grouping_fields(shipment)
|
|
|
|
self.assertLessEqual({'incoterm', 'incoterm_location'}, fields)
|
|
self.assertLessEqual(fields, ShipmentOut._fields.keys())
|
|
|
|
@with_transaction()
|
|
def test_sale_incoterm_required(self):
|
|
"Test incoterm required on sale"
|
|
pool = Pool()
|
|
Sale = pool.get('sale.sale')
|
|
Country = pool.get('country.country')
|
|
|
|
from_country = Mock(spec=Country)
|
|
to_country = Mock(spec=Country)
|
|
sale = Mock(spec=Sale)
|
|
sale.warehouse.address.country = from_country
|
|
sale.shipment_address.country = to_country
|
|
type(sale)._incoterm_required = Sale._incoterm_required
|
|
|
|
for from_europe, to_europe, result in [
|
|
(False, False, True),
|
|
(False, True, True),
|
|
(True, False, True),
|
|
(True, True, False),
|
|
]:
|
|
from_country.is_member.return_value = from_europe
|
|
to_country.is_member.return_value = to_europe
|
|
with self.subTest(
|
|
from_europe=from_europe,
|
|
to_europe=to_europe):
|
|
self.assertEqual(sale._incoterm_required, result)
|
|
|
|
@with_transaction()
|
|
def test_sale_incoterm_required_same_country(self):
|
|
"Test incoterm required on sale with same country"
|
|
pool = Pool()
|
|
Sale = pool.get('sale.sale')
|
|
Country = pool.get('country.country')
|
|
|
|
country = Mock(spec=Country)
|
|
sale = Mock(spec=Sale)
|
|
sale.warehouse.address.country = country
|
|
sale.shipment_address.country = country
|
|
type(sale)._incoterm_required = Sale._incoterm_required
|
|
|
|
for europe, result in [
|
|
(False, False),
|
|
(True, False),
|
|
]:
|
|
country.is_member.return_value = europe
|
|
with self.subTest(europe=europe):
|
|
self.assertEqual(sale._incoterm_required, result)
|
|
|
|
@with_transaction()
|
|
def test_sale_incoterm_required_no_country(self):
|
|
"Test incoterm required on sale without country"
|
|
pool = Pool()
|
|
Sale = pool.get('sale.sale')
|
|
|
|
sale = Mock(spec=Sale)
|
|
sale.warehouse.address.country = None
|
|
sale.shipment_address.country = None
|
|
type(sale)._incoterm_required = Sale._incoterm_required
|
|
|
|
self.assertFalse(sale._incoterm_required)
|
|
|
|
|
|
del ModuleTestCase
|