summaryrefslogtreecommitdiff
path: root/addons/website/tests/test_ui.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-08-20 12:17:04 +0200
committerChristophe Simonis <chs@odoo.com>2019-08-20 12:17:04 +0200
commitf26de445e5579913e27ea6a630bcee6d40eefc7d (patch)
tree8b8e06be8a9d5fd3c1e5c31634611127446b9948 /addons/website/tests/test_ui.py
parentbc6accc5688d3c38a35949751779f808e9c2063f (diff)
parent6f55fd65da8c50d36ca97654a920fb075076f125 (diff)
[MERGE] forward port branch saas-12.3 up to 6f55fd65da8
Diffstat (limited to 'addons/website/tests/test_ui.py')
-rw-r--r--addons/website/tests/test_ui.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py
index 0660d232752..2db952cc62c 100644
--- a/addons/website/tests/test_ui.py
+++ b/addons/website/tests/test_ui.py
@@ -6,6 +6,57 @@ import odoo.tests
@odoo.tests.tagged('-at_install', 'post_install')
+class TestUiCustomizeTheme(odoo.tests.HttpCase):
+ def test_01_attachment_website_unlink(self):
+ ''' Some ir.attachment needs to be unlinked when a website is unlink,
+ otherwise some flows will just crash. That's the case when 2 website
+ have their theme color customized. Removing a website will make its
+ customized attachment generic, thus having 2 attachments with the
+ same URL available for other websites, leading to singleton errors
+ (among other).
+
+ But no all attachment should be deleted, eg we don't want to delete
+ a SO or invoice PDF coming from an ecommerce order.
+ '''
+ Website = self.env['website']
+ Page = self.env['website.page']
+ Attachment = self.env['ir.attachment']
+
+ website_default = Website.browse(1)
+ website_test = Website.create({'name': 'Website Test'})
+
+ # simulate attachment state when editing 2 theme through customize
+ custom_url = '/TEST/website/static/src/scss/options/colors/user_theme_color_palette.custom.web.assets_common.scss'
+ scss_attachment = Attachment.create({
+ 'name': custom_url,
+ 'type': 'binary',
+ 'mimetype': 'text/scss',
+ 'datas': '',
+ 'url': custom_url,
+ 'website_id': website_default.id
+ })
+ scss_attachment.copy({'website_id': website_test.id})
+
+ # simulate PDF from ecommerce order
+ # Note: it will only have its website_id flag if the website has a domain
+ # equal to the current URL (fallback or get_current_website())
+ so_attachment = Attachment.create({
+ 'name': 'SO036.pdf',
+ 'type': 'binary',
+ 'mimetype': 'application/pdf',
+ 'datas': '',
+ 'website_id': website_test.id
+ })
+
+ # avoid sql error on page website_id restrict
+ Page.search([('website_id', '=', website_test.id)]).unlink()
+ website_test.unlink()
+ self.assertEqual(Attachment.search_count([('url', '=', custom_url)]), 1, 'Should not left duplicates when deleting a website')
+ self.assertTrue(so_attachment.exists(), 'Most attachment should not be deleted')
+ self.assertFalse(so_attachment.website_id, 'Website should be removed')
+
+
+@odoo.tests.tagged('-at_install', 'post_install')
class TestUiHtmlEditor(odoo.tests.HttpCase):
def test_html_editor_multiple_templates(self):
Website = self.env['website']