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

[IMP] website_slides: add a publisher tour

PURPOSE

Test frontend and UI tools of eLearning.

SPECIFICATIONS

This commit adds a course tour that test a flow for course publishers. Main
steps of this tour are :

  * a user (website publisher) creates a course;
  * he updates it;
  * he creates some lessons in it;
  * he publishes it;

LINKS

Task ID 1937768
parent 215af4e1
No related branches found
No related tags found
No related merge requests found
......@@ -49,3 +49,19 @@ class TestUi(tests.HttpCase):
'odoo.__DEBUG__.services["web_tour.tour"].run("course_member")',
'odoo.__DEBUG__.services["web_tour.tour"].tours.course_member.ready',
login=user_portal.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
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), (4, self.env.ref('website.group_website_designer').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_publisher")',
'odoo.__DEBUG__.services["web_tour.tour"].tours.course_publisher.ready',
login=user_demo.login)
odoo.define('website_slides.tour.slide.course.publisher', function (require) {
'use strict';
var tour = require('web_tour.tour');
var slidesTourTools = require('website_slides.tour.tools');
/**
* Global use case:
* a user (website publisher) creates a course;
* he updates it;
* he creates some lessons in it;
* he publishes it;
*/
tour.register('course_publisher', {
url: '/slides',
test: true
}, [{
content: 'eLearning: click on New (top-menu)',
trigger: 'li.o_new_content_menu a'
}, {
content: 'eLearning: click on New Course',
trigger: 'a:contains("New Course")'
}, {
content: 'eLearning: set name',
trigger: 'input[name="name"]',
run: 'text How to Déboulonnate',
}, {
content: 'eLearning: click on tags',
trigger: 'ul.select2-choices:first',
}, {
content: 'eLearning: select gardener tag',
trigger: 'div.select2-result-label:contains("Gardener")',
in_modal: false,
}, {
content: 'eLearning: set description',
trigger: 'textarea[name="description"]',
run: 'text Déboulonnate is very common at Fleurus',
}, {
content: 'eLearning: we want reviews',
trigger: 'input[name="allow_comment"]',
}, {
content: 'eLearning: seems cool, create it',
trigger: 'button:contains("Create")',
}, {
content: 'eLearning: launch course edition',
trigger: 'li[id="edit-page-menu"] a',
}, {
content: 'eLearning: double click image to edit it',
trigger: 'img.o_wslides_course_pict',
run: 'dblclick',
}, {
content: 'eLearning: click pâtissière',
trigger: 'img[title="sell.jpg"]',
}, {
content: 'eLearning: validate pâtissière',
trigger: 'footer.modal-footer button:contains("Add")',
}, {
content: 'eLearning: is the pâtissière set ?',
trigger: 'img.o_wslides_course_pict',
run: function () {
if ($('img.o_wslides_course_pict').attr('src').endsWith('sell.jpg')) {
$('img.o_wslides_course_pict').addClass('o_wslides_tour_success');
}
},
}, {
content: 'eLearning: the pâtissière is set !',
trigger: 'img.o_wslides_course_pict.o_wslides_tour_success',
}, {
content: 'eLearning: save course edition',
trigger: 'button[data-action="save"]',
}, {
content: 'eLearning: course create with current member',
extra_trigger: 'body:not(.editor_enable)', // wait for editor to close
trigger: '.o_wslides_js_course_join:contains("You\'re enrolled")',
run: function () {} // check membership
}
].concat(
slidesTourTools.addSection('Introduction'),
slidesTourTools.addVideoToSection('Introduction'),
[{
content: 'eLearning: publish newly added course',
trigger: 'span:contains("Dschinghis Khan - Moskau 1979")', // wait for slide to appear
// trigger: 'span.o_wslides_js_slide_toggle_is_preview:first',
run: function () {
$('span.o_wslides_js_slide_toggle_is_preview:first').click();
}
}]
// [
// {
// content: 'eLearning: move new course inside introduction',
// trigger: 'div.o_wslides_slides_list_drag',
// // run: 'drag_and_drop div.o_wslides_slides_list_drag ul.ui-sortable:first',
// run: 'drag_and_drop div.o_wslides_slides_list_drag a.o_wslides_js_slide_section_add',
// }]
));
});
odoo.define('website_slides.tour.tools', function (require) {
'use strict';
var addSection = function (sectionName) {
return [
{
content: 'eLearning: click on Add Section',
trigger: 'a.o_wslides_js_slide_section_add',
}, {
content: 'eLearning: set section name',
trigger: 'input[name="name"]',
run: 'text ' + sectionName,
}, {
content: 'eLearning: create section',
trigger: 'footer.modal-footer button:contains("Save")'
}, {
content: 'eLearning: section created empty',
trigger: 'div.o_wslides_slide_list_category_header:contains("' + sectionName + '")',
}];
};
var addVideoToSection = function (sectionName, saveAsDraft) {
var base_steps = [
{
content: 'eLearning: add content to section',
trigger: 'div.o_wslides_slide_list_category_header:contains("' + sectionName + '") a:contains("Add content")',
}, {
content: 'eLearning: click on video',
trigger: 'a[data-slide-type=video]',
}, {
content: 'eLearning: fill video link',
trigger: 'input[name=url]',
run: 'text https://www.youtube.com/watch?v=NvS351QKFV4&list=PLtVFNIekBzqIfO4u4n78i43etfw2n1St8&index=2&t=0s',
}, {
content: 'eLearning: click outside to trigger onchange',
trigger: 'div.o_w_slide_upload_modal_container',
run: 'click',
}];
if (saveAsDraft) {
base_steps = [].concat(base_steps, [{
content: 'eLearning: save as draft slide',
extra_trigger: 'div.o_slide_preview img:not([src="/website_slides/static/src/img/document.png"])', // wait for onchange to perform its duty
trigger: 'footer.modal-footer button:contains("Save as Draft")',
}]);
}
else {
base_steps = [].concat(base_steps, [{
content: 'eLearning: create and publish slide',
extra_trigger: 'div.o_slide_preview img:not([src="/website_slides/static/src/img/document.png"])', // wait for onchange to perform its duty
trigger: 'footer.modal-footer button:contains("Publish")',
}]);
}
return base_steps;
};
var addWebPageToSection = function (sectionName, pageName) {
return [
{
content: 'eLearning: add content to section',
trigger: 'div.o_wslides_slide_list_category_header:contains("' + sectionName + '") a:contains("Add content")',
}, {
content: 'eLearning: click on webpage',
trigger: 'a[data-slide-type=webpage]',
}, {
content: 'eLearning: fill webpage title',
trigger: 'input[name=name]',
run: 'text ' + pageName,
}, {
content: 'eLearning: click on tags',
trigger: 'ul.select2-choices:first',
}, {
content: 'eLearning: select gardener tag',
trigger: 'div.select2-result-label:contains("Theory")',
in_modal: false,
}, {
content: 'eLearning: fill webpage completion time',
trigger: 'input[name=duration]',
run: 'text 4',
}];
};
return {
addSection: addSection,
addVideoToSection: addVideoToSection,
addWebPageToSection: addWebPageToSection,
};
});
......@@ -35,7 +35,9 @@
<template id="assets_tests" inherit_id="web.assets_tests" name="Slides Tests Assets">
<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_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