diff options
| author | Thibault Delavallée <tde@odoo.com> | 2019-08-27 15:41:06 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2019-08-28 13:27:59 +0000 |
| commit | ff768a0642572798489400a41d6fafdaac5320cf (patch) | |
| tree | 39b8eb726be6713088c076fe04bb9a30c070bf7d /addons | |
| parent | 215af4e1de58824d975c202355118b5cae5371b1 (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')
| -rw-r--r-- | addons/website_slides/tests/test_ui_wslides.py | 16 | ||||
| -rw-r--r-- | addons/website_slides/tests/tours/slides_course_publisher.js | 97 | ||||
| -rw-r--r-- | addons/website_slides/tests/tours/slides_tour_tools.js | 88 | ||||
| -rw-r--r-- | addons/website_slides/views/assets.xml | 2 |
4 files changed, 203 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, +}; + +}); diff --git a/addons/website_slides/views/assets.xml b/addons/website_slides/views/assets.xml index 6b8f7aecd1f..ed7df5ceb55 100644 --- a/addons/website_slides/views/assets.xml +++ b/addons/website_slides/views/assets.xml @@ -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> |
