64 lines
2.3 KiB
Python
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)
|