diff options
| author | Julien Castiaux <juc@odoo.com> | 2019-12-09 15:14:21 +0000 |
|---|---|---|
| committer | Julien Castiaux <juc@odoo.com> | 2019-12-10 10:46:00 +0000 |
| commit | ffeea439ca345f16fe26720c4644b5ef8ac9e605 (patch) | |
| tree | e06d9b09113e7686bcc817ad39f4d6c5351cd2fb /addons/website_slides/static | |
| parent | 028768f288ca75e848b6794d8e34087570aa8dfb (diff) | |
[FIX] website_slides: move tours under /static/
All assets have to be loadable directly from the browser, /tests/ is not
accessible, /static/ is.
Diffstat (limited to 'addons/website_slides/static')
4 files changed, 397 insertions, 0 deletions
diff --git a/addons/website_slides/static/src/tests/tours/slides_course_member.js b/addons/website_slides/static/src/tests/tours/slides_course_member.js new file mode 100644 index 00000000000..8a7e3076a87 --- /dev/null +++ b/addons/website_slides/static/src/tests/tours/slides_course_member.js @@ -0,0 +1,141 @@ +odoo.define('website_slides.tour.slide.course.member', function (require) { +'use strict'; + +var tour = require('web_tour.tour'); + +/** + * 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', { + url: '/slides', + test: true +}, [ +// eLearning: go on free course and join it +{ + trigger: 'a:contains("Basics of Gardening - Test")' +}, { + trigger: 'a:contains("Join Course")' +}, { + trigger: '.o_wslides_js_course_join:contains("You\'re enrolled")', + run: function () {} // check membership +}, { + trigger: 'a:contains("Gardening: The Know-How")', +}, +// eLearning: follow course by cliking on first lesson and going to fullscreen player +{ + trigger: '.o_wslides_fs_sidebar_list_item div:contains("Home Gardening")' +}, { + trigger: '.o_wslides_fs_sidebar_header', + run: function () { + // check navigation with arrow keys + var event = jQuery.Event("keydown"); + event.key = "ArrowLeft"; + // go back once + $(document).trigger(event); + // check that it selected the previous tab + if ($('.o_wslides_fs_sidebar_list_item.active:contains("Gardening: The Know-How")').length === 0) { + return; + } + // getting here means that navigation worked + $('.o_wslides_fs_sidebar_header').addClass('navigation-success-1'); + } +}, { + trigger: '.o_wslides_fs_sidebar_header.navigation-success-1', + extra_trigger: '.o_wslides_progress_percentage:contains("20")', + run: function () { + // check navigation with arrow keys + var event = jQuery.Event("keydown"); + event.key = "ArrowRight"; + $(document).trigger(event); + // check that it selected the next/next tab + if ($('.o_wslides_fs_sidebar_list_item.active:contains("Home Gardening")').length === 0) { + return; + } + // getting here means that navigation worked + $('.o_wslides_fs_sidebar_header').addClass('navigation-success-2'); + } +}, { + trigger: '.o_wslides_progress_percentage:contains("40")', + run: function () {} // check progression +}, { + trigger: '.o_wslides_fs_sidebar_header.navigation-success-2', + extra_trigger: '.o_wslides_progress_percentage:contains("40")', + run: function () { + // check navigation with arrow keys + var event = jQuery.Event("keydown"); + event.key = "ArrowRight"; + setTimeout(function () { + $(document).trigger(event); + // check that it selected the next/next tab + if ($('.o_wslides_fs_sidebar_list_item.active:contains("Mighty Carrots")').length === 0) { + return; + } + // getting here means that navigation worked + $('.o_wslides_fs_sidebar_header').addClass('navigation-success-3'); + }, 300); + } +}, { + trigger: '.o_wslides_progress_percentage:contains("60")', + run: function () {} // check progression +}, { + trigger: '.o_wslides_fs_sidebar_header.navigation-success-3', + 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 | Basics")' +}, { + 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")', + run: function () {} // check progression +}, +// eLearning: last slide is a quiz, complete it +{ + trigger: '.o_wslides_fs_sidebar_list_item div:contains("Test your knowledge")' +}, { + trigger: '.o_wslides_js_lesson_quiz_question:first .list-group a:first' +}, { + trigger: '.o_wslides_js_lesson_quiz_question:last .list-group a:first' +}, { + trigger: '.o_wslides_js_lesson_quiz_submit' +}, { + trigger: 'a:contains("End course")' +}, +// eLearning: ending course redirect to /slides, course is completed now +{ + trigger: 'div:contains("Basics of Gardening") span:contains("Completed")', + run: function () {} // check that the course is marked as completed +}, +// eLearning: go back on course and rate it (new rate or update it, both should work) +{ + trigger: 'a:contains("Basics of Gardening")' +}, { + trigger: 'button[data-target="#ratingpopupcomposer"]' +}, { + trigger: 'form.o_portal_chatter_composer_form i.fa:eq(4)', + extra_trigger: 'div.modal_shown', + run: 'click', + in_modal: false, +}, { + trigger: 'form.o_portal_chatter_composer_form textarea', + run: 'text This is a great course. Top !', + in_modal: false, +}, { + trigger: 'button.o_portal_chatter_composer_btn', + in_modal: false, +}, { + trigger: 'a[id="review-tab"]' +}, { + trigger: '.o_portal_chatter_message:contains("This is a great course. Top !")', + run: function () {}, // check review is correctly added +} +]); + +}); diff --git a/addons/website_slides/static/src/tests/tours/slides_course_member_yt.js b/addons/website_slides/static/src/tests/tours/slides_course_member_yt.js new file mode 100644 index 00000000000..b060384d10a --- /dev/null +++ b/addons/website_slides/static/src/tests/tours/slides_course_member_yt.js @@ -0,0 +1,67 @@ +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")' +} +]); + +}); diff --git a/addons/website_slides/static/src/tests/tours/slides_course_publisher.js b/addons/website_slides/static/src/tests/tours/slides_course_publisher.js new file mode 100644 index 00000000000..028e4dd97b6 --- /dev/null +++ b/addons/website_slides/static/src/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: 'input[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/static/src/tests/tours/slides_tour_tools.js b/addons/website_slides/static/src/tests/tours/slides_tour_tools.js new file mode 100644 index 00000000000..2290cd4e982 --- /dev/null +++ b/addons/website_slides/static/src/tests/tours/slides_tour_tools.js @@ -0,0 +1,92 @@ +odoo.define('website_slides.tour.tools', function (require) { +'use strict'; + +/* + * PUBLISHER / CONTENT CREATION + */ + +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, +}; + +}); |
