Skip to content
Snippets Groups Projects
Commit c3b5f313 authored by Thibault Delavallée's avatar Thibault Delavallée
Browse files

[FIX][IMP] website_slides: move youtube dependent tour in its own tour and test


Contacting youtube API sometimes fails making falsy red runbot. In this commit
we remove video from member tour so that it tests the interface. Some demo
slides with youtube video are added in another course and new test is added
that crawls that channel.

Task 2066565

closes odoo/odoo#36697

Signed-off-by: default avatarThibault Delavallee (tde) <tde@openerp.com>
parent eebb8e14
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="utf-8"?>
<odoo><data noupdate="1">
<!-- This channel will gain a forum -->
<record id="slide_channel_demo_0_gard_0" model="slide.channel">
<field name="name">Basics of Gardening</field>
<field name="user_id" ref="base.user_admin"/>
......@@ -37,6 +38,7 @@
<field name="create_date" eval="DateTime.now() - relativedelta(days=7)"/>
</record>
<!-- This channel will gain a forum -->
<record id="slide_channel_demo_2_gard2" model="slide.channel">
<field name="name">Trees, Wood and Gardens</field>
<field name="user_id" ref="base.user_admin"/>
......@@ -65,7 +67,7 @@
<field name="promote_strategy">latest</field>
<field name="is_published" eval="True"/>
<field name="tag_ids" eval="[(5, 0),
(4, ref('website_slides.slide_channel_tag_level_intermediate')),
(4, ref('website_slides.slide_channel_tag_level_basic')),
(4, ref('website_slides.slide_channel_tag_role_gardener')),
(4, ref('website_slides.slide_channel_tag_role_carpenter')),
(4, ref('website_slides.slide_channel_tag_role_furniture')),
......@@ -85,13 +87,14 @@ will learn the basics of wood characteristics.</field>
<field name="promote_strategy">most_voted</field>
<field name="is_published" eval="True"/>
<field name="tag_ids" eval="[(5, 0),
(4, ref('website_slides.slide_channel_tag_level_basic')),
(4, ref('website_slides.slide_channel_tag_level_intermediate')),
(4, ref('website_slides.slide_channel_tag_role_furniture'))]"/>
<field name="image_1920" type="base64" file="website_slides/static/src/img/channel_demo_furniture.jpg"/>
<field name="description">If you are looking for technical specifications, have a look at this documentation.</field>
<field name="create_date" eval="DateTime.now() - relativedelta(days=4)"/>
</record>
<!-- This channel will gain a certification slide -->
<record id="slide_channel_demo_5_furn2" model="slide.channel">
<field name="name">Basics of Furniture Creation</field>
<field name="user_id" ref="base.user_admin"/>
......@@ -110,7 +113,8 @@ will learn the basics of wood characteristics.</field>
<field name="create_date" eval="DateTime.now() - relativedelta(days=3)"/>
</record>
<!-- This channel will be set on payment and receive certifications capabilities -->
<!-- This channel will be set on payment -->
<!-- This channel will gain a certification slide -->
<record id="slide_channel_demo_6_furn3" model="slide.channel">
<field name="name">DIY Furniture</field>
<field name="user_id" ref="base.user_admin"/>
......
......@@ -43,26 +43,12 @@
<field name="tag_ids" eval="[(4, ref('website_slides.slide_tag_demo_colorful')), (4, ref('website_slides.slide_tag_demo_theory'))]"/>
<field name="description">You won't believe those facts about carrots.</field>
</record>
<record id="slide_slide_demo_0_2" model="slide.slide">
<field name="name">Mighty Carrots</field>
<field name="sequence">3</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/slide_demo_gardening_2.jpg"/>
<field name="slide_type">infographic</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_0_gard_0"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">2</field>
<field name="completion_time">2</field>
<field name="tag_ids" eval="[(4, ref('website_slides.slide_tag_demo_colorful')), (4, ref('website_slides.slide_tag_demo_theory'))]"/>
<field name="description">You won't believe those facts about carrots.</field>
</record>
<record id="slide_slide_demo_0_3" model="slide.slide">
<field name="name">How to Grow and Harvest The Best Strawberries | Gardening Tips and Tricks</field>
<field name="name">How to Grow and Harvest The Best Strawberries | Basics</field>
<field name="sequence">4</field>
<field name="url">https://www.youtube.com/watch?v=l0JZ25VvbwE</field>
<field name="datas" type="base64" file="website_slides/static/src/img/presentation.pdf"/>
<field name="image_1920" type="base64" file="website_slides/static/src/img/slide_demo_thumb_l0JZ25VvbwE.jpg"/>
<field name="document_id">l0JZ25VvbwE</field>
<field name="slide_type">video</field>
<field name="slide_type">document</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_0_gard_0"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
......@@ -305,6 +291,21 @@
<field name="tag_ids" eval="[(4, ref('website_slides.slide_tag_demo_howto'))]"/>
<field name="description">A summary of know-how: how and what.</field>
</record>
<record id="slide_slide_demo_1_6" model="slide.slide">
<field name="name">How to Grow and Harvest The Best Strawberries | Gardening Tips and Tricks</field>
<field name="sequence">7</field>
<field name="url">https://www.youtube.com/watch?v=l0JZ25VvbwE</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/slide_demo_thumb_l0JZ25VvbwE.jpg"/>
<field name="document_id">l0JZ25VvbwE</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_1_gard1"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">0</field>
<field name="completion_time">1</field>
<field name="tag_ids" eval="[(4, ref('website_slides.slide_tag_demo_howto'))]"/>
<field name="description">Here is How to get the Sweetest Strawberries you ever tasted!</field>
</record>
<!-- CHANNEL 2: Trees, Wood and Garden -->
<!-- ================================================== -->
......@@ -477,10 +478,39 @@
<!-- Categories -->
<record id="slide_category_demo_3_0" model="slide.slide">
<field name="name">Introduction</field>
<field name="name">Working with Wood</field>
<field name="is_category" eval="True"/>
<field name="channel_id" ref="website_slides.slide_channel_demo_3_furn0"/>
<field name="sequence">0</field>
<field name="sequence">1</field>
</record>
<!-- Slides -->
<record id="slide_slide_demo_3_0" model="slide.slide">
<field name="name">Comparing Hardness of Wood Species</field>
<field name="sequence">2</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/slide_demo_wood_infographic_1.jpg"/>
<field name="slide_type">infographic</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_3_furn0"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="public_views">10</field>
<field name="completion_time">12</field>
<field name="tag_ids" eval="[(4, ref('website_slides.slide_tag_demo_colorful'))]"/>
<field name="description">Comparing Hardness of Wood Species</field>
</record>
<record id="slide_slide_demo_3_1" model="slide.slide">
<field name="name">Wood Bending With Steam Box</field>
<field name="sequence">3</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/slide_demo_thumb_PYr1rK8pS30.jpg"/>
<field name="url">https://www.youtube.com/watch?v=PYr1rK8pS30</field>
<field name="document_id">PYr1rK8pS30</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_3_furn0"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">10</field>
<field name="completion_time">3</field>
<field name="description">Watching the master(s) at work</field>
</record>
<!-- CHANNEL 4: Furniture Technical Specifications -->
......
addons/website_slides/static/src/img/slide_demo_thumb_PYr1rK8pS30.jpg

96.6 KiB

addons/website_slides/static/src/img/slide_demo_wood_infographic_1.jpg

356 KiB

......@@ -50,6 +50,25 @@ class TestUi(tests.HttpCase):
'odoo.__DEBUG__.services["web_tour.tour"].tours.course_member.ready',
login=user_portal.login)
@tests.common.tagged('external', '-standard')
class TestUiYoutube(tests.HttpCase):
def test_course_member_yt_employee(self):
# remove membership because we need to be able to join the course during the tour
user_demo = self.env.ref('base.user_demo')
user_demo.flush()
user_demo.write({
'groups_id': [(5, 0), (4, self.env.ref('base.group_user').id)]
})
self.env.ref('website_slides.slide_channel_demo_0_gard_0')._remove_membership(self.env.ref('base.partner_demo'))
self.phantom_js(
'/slides',
'odoo.__DEBUG__.services["web_tour.tour"].run("course_member_youtube")',
'odoo.__DEBUG__.services["web_tour.tour"].tours.course_member_youtube.ready',
login=user_demo.login)
def test_course_publisher_website_designer(self):
# remove membership because we need to be able to join the course during the tour
# group_website_designer
......
......@@ -2,23 +2,6 @@ odoo.define('website_slides.tour.slide.course.member', function (require) {
'use strict';
var tour = require('web_tour.tour');
var FullScreen = require('website_slides.fullscreen');
/**
* Alter this method for test purposes.
* This will make the video start at 10 minutes.
* As it lasts 10min24s, it will mark it as completed immediately.
*/
FullScreen.include({
_renderSlide: function () {
var slide = this.get('slide');
slide.embedUrl += '&start=600';
this.set('slide', slide);
return this._super.call(this, arguments);
}
});
/**
* Global use case:
......@@ -105,12 +88,9 @@ tour.register('course_member', {
extra_trigger: '.o_wslides_progress_percentage:contains("60")',
run: function () {} // check that previous step succeeded
}, {
trigger: '.o_wslides_fs_sidebar_list_item div:contains("How to Grow and Harvest The Best Strawberries | Gardening Tips and Tricks")'
}, {
trigger: '.player',
run: function () {} // check player loading
trigger: '.o_wslides_fs_sidebar_list_item div:contains("How to Grow and Harvest The Best Strawberries | Basics")'
}, {
trigger: '.o_wslides_fs_sidebar_section_slides li:contains("How to Grow and Harvest The Best Strawberries | Gardening Tips and Tricks") .o_wslides_slide_completed',
trigger: '.o_wslides_fs_sidebar_section_slides li:contains("How to Grow and Harvest The Best Strawberries | Basics") .o_wslides_slide_completed',
run: function () {} // check that video slide is marked as 'done'
}, {
trigger: '.o_wslides_progress_percentage:contains("80")',
......
odoo.define('website_slides.tour.slide.course.member.youtube', function (require) {
'use strict';
var tour = require('web_tour.tour');
var FullScreen = require('website_slides.fullscreen');
/**
* Alter this method for test purposes.
* This will make the video start at 10 minutes.
* As it lasts 10min24s, it will mark it as completed immediately.
*/
FullScreen.include({
_renderSlide: function () {
var slide = this.get('slide');
slide.embedUrl += '&start=260';
this.set('slide', slide);
return this._super.call(this, arguments);
}
});
/**
* Global use case:
* an user (either employee, website publisher or portal) joins a public
course;
* he has access to the full course content when he's a member of the
course;
* he uses fullscreen player to complete the course;
* he rates the course;
*/
tour.register('course_member_youtube', {
url: '/slides',
test: true
}, [
// eLearning: go on /all, find free course and join it
{
trigger: 'a.o_wslides_home_all_slides'
}, {
trigger: 'a:contains("Choose your wood")'
}, {
trigger: 'a:contains("Join Course")'
}, {
trigger: '.o_wslides_js_course_join:contains("You\'re enrolled")',
run: function () {} // check membership
}, {
trigger: 'a:contains("Comparing Hardness of Wood Species")',
}, {
trigger: '.o_wslides_progress_percentage:contains("50")',
run: function () {} // check progression
}, {
trigger: 'a:contains("Wood Bending With Steam Box")',
}, {
trigger: '.player',
run: function () {} // check player loading
}, {
trigger: '.o_wslides_fs_sidebar_section_slides li:contains("Wood Bending With Steam Box") .o_wslides_slide_completed',
run: function () {} // check that video slide is marked as 'done'
}, {
trigger: '.o_wslides_progress_percentage:contains("100")',
run: function () {} // check progression
}, {
trigger: 'a:contains("Back to course")'
}
]);
});
odoo.define('website_slides.tour.tools', function (require) {
'use strict';
/*
* PUBLISHER / CONTENT CREATION
*/
var addSection = function (sectionName) {
return [
{
......
......@@ -36,6 +36,7 @@
<xpath expr="." position="inside">
<script type="text/javascript" src="/website_slides/tests/tours/slides_tour_tools.js"/>
<script type="text/javascript" src="/website_slides/tests/tours/slides_course_member.js"/>
<script type="text/javascript" src="/website_slides/tests/tours/slides_course_member_yt.js"/>
<script type="text/javascript" src="/website_slides/tests/tours/slides_course_publisher.js"/>
</xpath>
</template>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment