diff options
| author | qmo-odoo <qmo@odoo.com> | 2019-05-13 11:09:31 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2019-08-08 08:29:34 +0000 |
| commit | b180c66a80ae3ae34716f8524a990c9e9d2c1aa7 (patch) | |
| tree | 3ec67ec0b6b5b7eef55482ce2e0c793496a00931 /addons/website_slides/tests/test_slide_utils.py | |
| parent | 5f4c7c5afae3a58f1925c3645af0a005d4fa6e1c (diff) | |
[REF] website_slides: replace slide.category by slide with is_category flag
PURPOSE
Like already done for sale order, invoice of survey, purpose of this commit
is to remove category model and replace by a flagged line (slide). It allows
to easily reorder slides in an embedded list view.
SPECIFICATIONS
Instead of having a fully fledged slide.category model, slide.slide will serve
that purpose with a is_category flag. This will allow to drag and drop slides
and sections in the channel form view.
This change had an impact on the way slides were added/sorted on the front-end.
In fact, whenever a slide is added from the front-end, a resequencing of all
the slides in the course has to be triggered.
Category of a slide is now a computed field based on the sequence. Order
of slides is based on sequence, with categories splitting the slide list based
on is_category flag.
In this commit tests are added. Some cleaning in tests is also performed to
speedup a bit tests (savepointcase) and some cleaning / renaming to ease
their understanding.
Future commit will add JS necessary to manage slides in the section list view.
LINKS
TaskID: 1978731
PR: #33255
Diffstat (limited to 'addons/website_slides/tests/test_slide_utils.py')
| -rw-r--r-- | addons/website_slides/tests/test_slide_utils.py | 99 |
1 files changed, 99 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 00000000000..d934d2d5b13 --- /dev/null +++ b/addons/website_slides/tests/test_slide_utils.py @@ -0,0 +1,99 @@ +# -*- 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 TestSequencing(slides_common.SlidesCase): + + @users('user_publisher') + 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_publisher') + def test_resequence(self): + 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) + # self.channel._resequence_slides(self.slide) + # 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_3.sequence, 2) + # self.assertEqual(self.category.sequence, 3) + # self.assertEqual(self.slide_2.sequence, 4) + + +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://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) |
