1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 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)
|