summaryrefslogtreecommitdiff
path: root/addons/website_slides/tests/test_slide_utils.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/website_slides/tests/test_slide_utils.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/website_slides/tests/test_slide_utils.py')
-rw-r--r--addons/website_slides/tests/test_slide_utils.py160
1 files changed, 160 insertions, 0 deletions
diff --git a/addons/website_slides/tests/test_slide_utils.py b/addons/website_slides/tests/test_slide_utils.py
new file mode 100644
index 00000000..58a8b72c
--- /dev/null
+++ b/addons/website_slides/tests/test_slide_utils.py
@@ -0,0 +1,160 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.addons.website_slides.tests import common as slides_common
+from odoo.tests.common import users
+
+
+class TestSlidesManagement(slides_common.SlidesCase):
+
+ @users('user_officer')
+ def test_get_categorized_slides(self):
+ new_category = self.env['slide.slide'].create({
+ 'name': 'Cooking Tips for Cooking Humans',
+ 'channel_id': self.channel.id,
+ 'is_category': True,
+ 'sequence': 5,
+ })
+ order = self.env['slide.slide']._order_by_strategy['sequence']
+ categorized_slides = self.channel._get_categorized_slides([], order)
+ self.assertEqual(categorized_slides[0]['category'], False)
+ self.assertEqual(categorized_slides[1]['category'], self.category)
+ self.assertEqual(categorized_slides[1]['total_slides'], 2)
+ self.assertEqual(categorized_slides[2]['total_slides'], 0)
+ self.assertEqual(categorized_slides[2]['category'], new_category)
+
+ @users('user_manager')
+ def test_archive(self):
+ self.env['slide.slide.partner'].create({
+ 'slide_id': self.slide.id,
+ 'channel_id': self.channel.id,
+ 'partner_id': self.user_manager.partner_id.id,
+ 'completed': True
+ })
+ channel_partner = self.channel._action_add_members(self.user_manager.partner_id)
+
+ self.assertTrue(self.channel.active)
+ self.assertTrue(self.channel.is_published)
+ self.assertFalse(channel_partner.completed)
+ for slide in self.channel.slide_ids:
+ self.assertTrue(slide.active, "All slide should be archived when a channel is archived")
+ self.assertTrue(slide.is_published, "All slide should be unpublished when a channel is archived")
+
+ self.channel.toggle_active()
+ self.assertFalse(self.channel.active)
+ self.assertFalse(self.channel.is_published)
+ # channel_partner should still NOT be marked as completed
+ self.assertFalse(channel_partner.completed)
+
+ for slide in self.channel.slide_ids:
+ self.assertFalse(slide.active, "All slides should be archived when a channel is archived")
+ if not slide.is_category:
+ self.assertFalse(slide.is_published, "All slides should be unpublished when a channel is archived, except categories")
+ else:
+ self.assertTrue(slide.is_published, "All slides should be unpublished when a channel is archived, except categories")
+
+class TestSequencing(slides_common.SlidesCase):
+
+ @users('user_officer')
+ def test_category_update(self):
+ self.assertEqual(self.channel.slide_category_ids, self.category)
+ self.assertEqual(self.channel.slide_content_ids, self.slide | self.slide_2 | self.slide_3)
+ self.assertEqual(self.slide.category_id, self.env['slide.slide'])
+ self.assertEqual(self.slide_2.category_id, self.category)
+ self.assertEqual(self.slide_3.category_id, self.category)
+ self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, self.category.id, self.slide_2.id, self.slide_3.id])
+
+ self.slide.write({'sequence': 0})
+ self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, self.category.id, self.slide_2.id, self.slide_3.id])
+ self.assertEqual(self.slide_2.category_id, self.category)
+ self.slide_2.write({'sequence': 1})
+ self.channel.invalidate_cache()
+ self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, self.slide_2.id, self.category.id, self.slide_3.id])
+ self.assertEqual(self.slide_2.category_id, self.env['slide.slide'])
+
+ channel_2 = self.env['slide.channel'].create({
+ 'name': 'Test2'
+ })
+ new_category = self.env['slide.slide'].create({
+ 'name': 'NewCategorySlide',
+ 'channel_id': channel_2.id,
+ 'is_category': True,
+ 'sequence': 1,
+ })
+ new_category_2 = self.env['slide.slide'].create({
+ 'name': 'NewCategorySlide2',
+ 'channel_id': channel_2.id,
+ 'is_category': True,
+ 'sequence': 2,
+ })
+ new_slide = self.env['slide.slide'].create({
+ 'name': 'NewTestSlide',
+ 'channel_id': channel_2.id,
+ 'sequence': 2,
+ })
+ self.assertEqual(new_slide.category_id, new_category_2)
+ (new_slide | self.slide_3).write({'sequence': 1})
+ self.assertEqual(new_slide.category_id, new_category)
+ self.assertEqual(self.slide_3.category_id, self.env['slide.slide'])
+
+ (new_slide | self.slide_3).write({'sequence': 0})
+ self.assertEqual(new_slide.category_id, self.env['slide.slide'])
+ self.assertEqual(self.slide_3.category_id, self.env['slide.slide'])
+
+ @users('user_officer')
+ def test_resequence(self):
+ self.assertEqual(self.slide.sequence, 1)
+ self.category.write({'sequence': 4})
+ self.slide_2.write({'sequence': 8})
+ self.slide_3.write({'sequence': 3})
+
+ self.channel.invalidate_cache()
+ self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, self.slide_3.id, self.category.id, self.slide_2.id])
+ self.assertEqual(self.slide.sequence, 1)
+
+ # insert a new category and check resequence_slides does as expected
+ new_category = self.env['slide.slide'].create({
+ 'name': 'Sub-cooking Tips Category',
+ 'channel_id': self.channel.id,
+ 'is_category': True,
+ 'is_published': True,
+ 'sequence': 2,
+ })
+ new_category.flush()
+ self.channel.invalidate_cache()
+ self.channel._resequence_slides(self.slide_3, force_category=new_category)
+ self.assertEqual(self.slide.sequence, 1)
+ self.assertEqual(new_category.sequence, 2)
+ self.assertEqual(self.slide_3.sequence, 3)
+ self.assertEqual(self.category.sequence, 4)
+ self.assertEqual(self.slide_2.sequence, 5)
+ self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, new_category.id, self.slide_3.id, self.category.id, self.slide_2.id])
+
+
+class TestFromURL(slides_common.SlidesCase):
+ def test_youtube_urls(self):
+ urls = {
+ 'W0JQcpGLSFw': [
+ 'https://youtu.be/W0JQcpGLSFw',
+ 'https://www.youtube.com/watch?v=W0JQcpGLSFw',
+ 'https://www.youtube.com/watch?v=W0JQcpGLSFw&list=PL1-aSABtP6ACZuppkBqXFgzpNb2nVctZx',
+ ],
+ 'vmhB-pt7EfA': [ # id starts with v, it is important
+ 'https://youtu.be/vmhB-pt7EfA',
+ 'https://www.youtube.com/watch?feature=youtu.be&v=vmhB-pt7EfA',
+ 'https://www.youtube.com/watch?v=vmhB-pt7EfA&list=PL1-aSABtP6ACZuppkBqXFgzpNb2nVctZx&index=7',
+ ],
+ 'hlhLv0GN1hA': [
+ 'https://www.youtube.com/v/hlhLv0GN1hA',
+ 'https://www.youtube.com/embed/hlhLv0GN1hA',
+ 'https://www.youtube-nocookie.com/embed/hlhLv0GN1hA',
+ 'https://m.youtube.com/watch?v=hlhLv0GN1hA',
+ ],
+ }
+
+ for id, urls in urls.items():
+ for url in urls:
+ with self.subTest(url=url, id=id):
+ document = self.env['slide.slide']._find_document_data_from_url(url)
+ self.assertEqual(document[0], 'youtube')
+ self.assertEqual(document[1], id)