summaryrefslogtreecommitdiff
path: root/addons/website_slides/tests
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2019-08-27 15:41:06 +0000
committerThibault Delavallée <tde@odoo.com>2019-08-28 13:27:59 +0000
commitff768a0642572798489400a41d6fafdaac5320cf (patch)
tree39b8eb726be6713088c076fe04bb9a30c070bf7d /addons/website_slides/tests
parent215af4e1de58824d975c202355118b5cae5371b1 (diff)
[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
Diffstat (limited to 'addons/website_slides/tests')
-rw-r--r--addons/website_slides/tests/test_ui_wslides.py16
-rw-r--r--addons/website_slides/tests/tours/slides_course_publisher.js97
-rw-r--r--addons/website_slides/tests/tours/slides_tour_tools.js88
3 files changed, 201 insertions, 0 deletions
diff --git a/addons/website_slides/tests/test_ui_wslides.py b/addons/website_slides/tests/test_ui_wslides.py
index 6699597f09e..be2293a1074 100644
--- a/addons/website_slides/tests/test_ui_wslides.py
+++ b/addons/website_slides/tests/test_ui_wslides.py
@@ -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)
diff --git a/addons/website_slides/tests/tours/slides_course_publisher.js b/addons/website_slides/tests/tours/slides_course_publisher.js
new file mode 100644
index 00000000000..ed9f0c12631
--- /dev/null
+++ b/addons/website_slides/tests/tours/slides_course_publisher.js
@@ -0,0 +1,97 @@
+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',
+// }]
+));
+
+});
diff --git a/addons/website_slides/tests/tours/slides_tour_tools.js b/addons/website_slides/tests/tours/slides_tour_tools.js
new file mode 100644
index 00000000000..228ea3f9194
--- /dev/null
+++ b/addons/website_slides/tests/tours/slides_tour_tools.js
@@ -0,0 +1,88 @@
+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,
+};
+
+});