Odoo18-Base/addons/website_sale_loyalty/tests/test_ewallet.py
2025-01-06 10:57:38 +07:00

64 lines
2.3 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import http, Command
from odoo.tests import tagged, HttpCase
from odoo.addons.website.tools import MockRequest
from odoo.addons.website_sale_loyalty.controllers.main import WebsiteSale
from odoo.addons.website_sale.tests.common import WebsiteSaleCommon
@tagged('post_install', '-at_install')
class TestEwallet(HttpCase, WebsiteSaleCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.WebsiteSaleController = WebsiteSale()
cls.website = cls.env['website'].browse(1)
cls.product.write({'taxes_id': [Command.clear()]})
cls.topup = cls.env['product.product'].create({
'name': 'Ewallet Top up',
'list_price': 50.0,
'website_published': True,
})
cls.ewallet_program = cls.env['loyalty.program'].create([{
'name': 'E-wallet Card Program',
'program_type': 'ewallet',
'trigger': 'auto',
'applies_on': 'future',
'rule_ids': [Command.create({
'reward_point_mode': 'money',
'reward_point_amount': 10,
'product_ids': cls.topup,
})],
'reward_ids': [Command.create({
'discount_mode': 'per_point',
'discount': 1,
'discount_applicability': 'order',
})],
}])
installed_modules = set(cls.env['ir.module.module'].search([
('state', '=', 'installed'),
]).mapped('name'))
for _ in http._generate_routing_rules(installed_modules, nodb_only=False):
pass
def test_ewallet(self):
self.env['loyalty.generate.wizard'].create({
'program_id': self.ewallet_program.id,
'coupon_qty': 1,
'points_granted': 10,
}).generate_coupons()
self.ewallet_program.coupon_ids[0].partner_id = self.env.user.partner_id
order = self.empty_cart
with MockRequest(self.env, website=self.website, sale_order_id=order.id):
self.WebsiteSaleController.cart_update_json(self.product.id, set_qty=1)
self.assertEqual(order.amount_total, 20)
self.WebsiteSaleController.claim_reward(self.ewallet_program.reward_ids[0].id)
self.assertEqual(order.amount_total, 10)