diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/website_slides/static/src/tests | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/website_slides/static/src/tests')
5 files changed, 484 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 00000000..7f30b945 --- /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("40")', + 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 00000000..b060384d --- /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 00000000..98cca857 --- /dev/null +++ b/addons/website_slides/static/src/tests/tours/slides_course_publisher.js @@ -0,0 +1,96 @@ +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("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="s_company_team_image_4.png"]', +}, { + 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('s_team_member_4.png')) { + $('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.addExistingCourseTag(), + slidesTourTools.addNewCourseTag('The Most Awesome Course'), + 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_full_screen_web_editor.js b/addons/website_slides/static/src/tests/tours/slides_full_screen_web_editor.js new file mode 100644 index 00000000..26aeafe0 --- /dev/null +++ b/addons/website_slides/static/src/tests/tours/slides_full_screen_web_editor.js @@ -0,0 +1,39 @@ +odoo.define('website_slides.tour.fullscreen.edition.publisher', function (require) { +'use strict'; + +var tour = require('web_tour.tour'); + +/** + * Global use case: + * - a user (website publisher) lands on the fullscreen view of a course ; + * - he clicks on the website editor "Edit" button ; + * - he is redirected to the non-fullscreen view with the editor opened. + * + * This tour tests a fix made when editing a course in fullscreen view. + * See "Fullscreen#_onWebEditorClick" for more information. + * + */ +tour.register('full_screen_web_editor', { + url: '/slides', + test: true +}, [{ + // open to the course + trigger: 'a:contains("Basics of Gardening")' +}, { + // click on a slide to open the fullscreen view + trigger: 'a.o_wslides_js_slides_list_slide_link:contains("Home Gardening")' +}, { + trigger: '.o_wslides_fs_main', + run: function () {} // check we land on the fullscreen view +}, { + // click on the main "Edit" button to open the web editor + trigger: '#edit-page-menu a[data-action="edit"]', +}, { + trigger: '.o_wslides_lesson_main', + run: function () {} // check we are redirected on the detailed view +}, { + trigger: 'body.editor_enable', + run: function () {} // check the editor is automatically opened on the detailed view +}]); + +}); 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 00000000..5b5f525c --- /dev/null +++ b/addons/website_slides/static/src/tests/tours/slides_tour_tools.js @@ -0,0 +1,141 @@ +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 Theory tag', + trigger: 'div.select2-result-label:contains("Theory")', + in_modal: false, +}, { + content: 'eLearning: fill webpage completion time', + trigger: 'input[name=duration]', + run: 'text 4', +}]; +}; + +var addExistingCourseTag = function () { + return [ +{ + content: 'eLearning: click on Add Tag', + trigger: 'a.o_wslides_js_channel_tag_add', +}, { + content: 'eLearning: click on tag dropdown', + trigger: 'a.select2-choice:first', +}, { + content: 'eLearning: select advanced tag', + trigger: 'div.select2-result-label:contains("Advanced")', + in_modal: false, +}, { + content: 'eLearning: add existing course tag', + trigger: 'footer.modal-footer button:contains("Add")' +}]; +}; + +var addNewCourseTag = function (courseTagName) { + return [ +{ + content: 'eLearning: click on Add Tag', + trigger: 'a.o_wslides_js_channel_tag_add', +}, { + content: 'eLearning: click on tag dropdown', + trigger: 'a.select2-choice:first', +}, { + content: 'eLearning: add a new course tag', + trigger: 'a.select2-choice:first', + run: function () { + // directly add new tag since we can assume select2 works correctly + $('#tag_id').select2('data', {id:'123', text: courseTagName, create: true}); + $('#tag_id').trigger('change'); + } +}, { + content: 'eLearning: click on tag group dropdown', + trigger: 'a.select2-choice:last', +}, { + content: 'eLearning: select Tags tag group', + trigger: 'div.select2-result-label:contains("Tags")', + in_modal: false, +}, { + content: 'eLearning: add new course tag', + trigger: 'footer.modal-footer button:contains("Add")' +}]; +}; + +return { + addSection: addSection, + addVideoToSection: addVideoToSection, + addWebPageToSection: addWebPageToSection, + addExistingCourseTag: addExistingCourseTag, + addNewCourseTag: addNewCourseTag, +}; + +}); |
