71 lines
2.4 KiB
Python
71 lines
2.4 KiB
Python
|
from odoo.tests import TransactionCase, tagged, users
|
||
|
from odoo.addons.mail.tests.common import mail_new_test_user
|
||
|
|
||
|
|
||
|
@tagged('post_install', '-at_install')
|
||
|
class TestLinkTracker(TransactionCase):
|
||
|
@classmethod
|
||
|
def setUpClass(cls):
|
||
|
super().setUpClass()
|
||
|
|
||
|
cls.company_1 = cls.env.company
|
||
|
|
||
|
cls.company_2 = cls.env['res.company'].create({
|
||
|
'name': 'Company 2',
|
||
|
})
|
||
|
|
||
|
cls.website_1, cls.website_2 = cls.env['website'].create([
|
||
|
{
|
||
|
'name': 'website 1',
|
||
|
'domain': 'https://maincompany.odoo.com',
|
||
|
'company_id': cls.company_1.id
|
||
|
},
|
||
|
{
|
||
|
'name': 'Website 2',
|
||
|
'domain': 'https://secondarycompany.odoo.com',
|
||
|
'company_id': cls.company_2.id
|
||
|
}
|
||
|
])
|
||
|
|
||
|
cls.company_1.write({'website_id': cls.website_1.id})
|
||
|
|
||
|
cls.test_user = mail_new_test_user(
|
||
|
cls.env,
|
||
|
login='test_user',
|
||
|
name='Test User',
|
||
|
company_id=cls.company_1.id,
|
||
|
company_ids=[(6, 0, [cls.company_1.id, cls.company_2.id])],
|
||
|
groups="website.group_website_designer"
|
||
|
)
|
||
|
|
||
|
@users('test_user')
|
||
|
def test_compute_short_url_host(self):
|
||
|
"""Test _compute_short_url_host with multiple companies/websites
|
||
|
The short URL base should match the website domain of the company
|
||
|
"""
|
||
|
link_1 = self.env['link.tracker'].create({
|
||
|
'url': 'https://www.1odoo.com',
|
||
|
})
|
||
|
self.assertTrue(link_1.short_url.startswith(self.website_1.domain),
|
||
|
"Short URL should use company 1 website domain")
|
||
|
|
||
|
# Switch to Company 2
|
||
|
self.env.user.company_id = self.company_2
|
||
|
link_2 = self.env['link.tracker'].create({
|
||
|
'url': 'https://www.2odoooo.com',
|
||
|
})
|
||
|
self.assertTrue(link_2.short_url.startswith(self.website_2.domain),
|
||
|
"Short URL should use company 2 website domain"
|
||
|
)
|
||
|
|
||
|
# Remove website from Company 2
|
||
|
# The short URL host should fallback to a default value
|
||
|
self.company_2.write({'website_id': False})
|
||
|
link_3 = self.env['link.tracker'].create({
|
||
|
'url': 'https://www.3ooddoooo.com'
|
||
|
})
|
||
|
self.assertTrue(
|
||
|
link_3.short_url_host,
|
||
|
"Short URL host should have a fallback value when no website is configured"
|
||
|
)
|