oca-ocb-sale/odoo-bringout-oca-ocb-website_sale/website_sale/tests/test_delivery_controller.py
Ernad Husremovic 73afc09215 19.0 vanilla
2026-03-09 09:32:12 +01:00

82 lines
3.4 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.exceptions import UserError
from odoo.fields import Command
from odoo.tests import tagged
from odoo.addons.payment.tests.common import PaymentCommon
from odoo.addons.website_sale.controllers.delivery import Delivery
from odoo.addons.website_sale.tests.common import MockRequest, WebsiteSaleCommon
@tagged('post_install', '-at_install')
class TestWebsiteSaleDeliveryController(PaymentCommon, WebsiteSaleCommon):
def setUp(self):
super().setUp()
self.Controller = Delivery()
# test that changing the carrier while there is a pending transaction raises an error
def test_controller_change_carrier_when_transaction(self):
website = self.website.with_env(self.env)
self.empty_cart.transaction_ids = self._create_transaction(flow='redirect', state='pending')
with MockRequest(website.env, website=website, sale_order_id=self.empty_cart.id) as request, self.assertRaises(UserError):
request.cart = self.empty_cart
self.Controller.shop_set_delivery_method(dm_id=self.free_delivery.id)
# test that changing the carrier while there is a draft transaction doesn't raise an error
def test_controller_change_carrier_when_draft_transaction(self):
website = self.website.with_env(self.env)
self.empty_cart.transaction_ids = self._create_transaction(flow='redirect', state='draft')
with MockRequest(website.env, website=website, sale_order_id=self.empty_cart.id):
self.Controller.shop_set_delivery_method(dm_id=self.free_delivery.id)
def test_available_methods(self):
self.env['delivery.carrier'].search([]).action_archive()
self.product_delivery_poste = self.env['product.product'].create({
'name': 'The Poste',
'type': 'service',
'categ_id': self.env.ref('delivery.product_category_deliveries').id,
'sale_ok': False,
'purchase_ok': False,
'list_price': 20.0,
})
self.env['delivery.carrier'].create([
{
'name': 'Over 300',
'delivery_type': 'base_on_rule',
'product_id': self.product_delivery_poste.id,
'website_published': True,
'price_rule_ids': [
Command.create({
'operator': '>=',
'max_value': 300,
'variable': 'price',
}),
],
}, {
'name': 'Under 300',
'delivery_type': 'base_on_rule',
'product_id': self.product_delivery_poste.id,
'website_published': True,
'price_rule_ids': [
Command.create({
'operator': '<',
'max_value': 300,
'variable': 'price',
}),
],
}, {
'name': 'No rules',
'delivery_type': 'base_on_rule',
'product_id': self.product_delivery_poste.id,
'website_published': True,
}, {
'name': 'Fixed',
'product_id': self.product_delivery_poste.id,
'website_published': True,
},
])
self.assertEqual(
self.empty_cart._get_delivery_methods().mapped('name'), ['Under 300', 'Fixed']
)