diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/website_slides/tests/test_slide_utils.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (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.py | 160 |
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) |
