Commit 5c882acd05b914f2af75bcf78856d50a91773c2c
1 parent
d75dc8ae
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
site_tour: fix step sequence for groups
Showing
2 changed files
with
40 additions
and
7 deletions
Show diff stats
plugins/site_tour/test/unit/site_tour_plugin_test.rb
| ... | ... | @@ -38,4 +38,36 @@ class SiteTourPluginTest < ActionView::TestCase |
| 38 | 38 | assert_no_tag_in_string instance_exec(&plugin.body_ending), :tag => "script" |
| 39 | 39 | end |
| 40 | 40 | |
| 41 | + should 'render javascript tag with tooltip actions and group triggers' do | |
| 42 | + expects(:language).returns('en').at_least_once | |
| 43 | + | |
| 44 | + settings = Noosfero::Plugin::Settings.new(Environment.default, SiteTourPlugin) | |
| 45 | + settings.actions = [{:language => 'en', :group_name => 'test', :selector => 'body', :description => 'Test'}] | |
| 46 | + settings.group_triggers = [{:group_name => 'test', :selector => 'body', :event => 'click'}] | |
| 47 | + settings.save! | |
| 48 | + | |
| 49 | + expects(:environment).returns(Environment.default) | |
| 50 | + body_ending = instance_exec(&plugin.body_ending) | |
| 51 | + assert_match /siteTourPlugin\.add\('test', 'body', 'Test', 1\);/, body_ending | |
| 52 | + assert_match /siteTourPlugin\.addGroupTrigger\('test', 'body', 'click'\);/, body_ending | |
| 53 | + end | |
| 54 | + | |
| 55 | + should 'start each tooltip group with the correct step order' do | |
| 56 | + expects(:language).returns('en').at_least_once | |
| 57 | + | |
| 58 | + settings = Noosfero::Plugin::Settings.new(Environment.default, SiteTourPlugin) | |
| 59 | + settings.actions = [ | |
| 60 | + {:language => 'en', :group_name => 'test_a', :selector => 'body', :description => 'Test A1'}, | |
| 61 | + {:language => 'en', :group_name => 'test_a', :selector => 'body', :description => 'Test A2'}, | |
| 62 | + {:language => 'en', :group_name => 'test_b', :selector => 'body', :description => 'Test B1'}, | |
| 63 | + ] | |
| 64 | + settings.save! | |
| 65 | + | |
| 66 | + expects(:environment).returns(Environment.default) | |
| 67 | + body_ending = instance_exec(&plugin.body_ending) | |
| 68 | + assert_match /siteTourPlugin\.add\('test_a', 'body', 'Test A1', 1\);/, body_ending | |
| 69 | + assert_match /siteTourPlugin\.add\('test_a', 'body', 'Test A2', 2\);/, body_ending | |
| 70 | + assert_match /siteTourPlugin\.add\('test_b', 'body', 'Test B1', 1\);/, body_ending | |
| 71 | + end | |
| 72 | + | |
| 41 | 73 | end | ... | ... |
plugins/site_tour/views/tour_actions.html.erb
| ... | ... | @@ -4,14 +4,15 @@ |
| 4 | 4 | <% if actions.present? %> |
| 5 | 5 | <script> |
| 6 | 6 | jQuery( document ).ready(function( $ ) { |
| 7 | - <% actions.each_with_index do |action, index| %> | |
| 8 | - <%= "siteTourPlugin.add('#{j action[:group_name]}', '#{j action[:selector]}', '#{j action[:description]}', #{index + 1});" %> | |
| 9 | - <% end %> | |
| 10 | - | |
| 11 | - <% (group_triggers||[]).each_with_index do |group, index| %> | |
| 12 | - <%= "siteTourPlugin.addGroupTrigger('#{j group[:group_name]}', '#{j group[:selector]}', '#{j group[:event]}');" %> | |
| 13 | - <% end %> | |
| 7 | + <% actions.group_by {|h| h[:group_name]}.each do |group, group_actions| %> | |
| 8 | + <% group_actions.each_with_index do |action, index| %> | |
| 9 | + <%= "siteTourPlugin.add('#{j action[:group_name]}', '#{j action[:selector]}', '#{j action[:description]}', #{index + 1});" %> | |
| 10 | + <% end %> | |
| 11 | + <% end %> | |
| 14 | 12 | |
| 13 | + <% (group_triggers||[]).each_with_index do |group, index| %> | |
| 14 | + <%= "siteTourPlugin.addGroupTrigger('#{j group[:group_name]}', '#{j group[:selector]}', '#{j group[:event]}');" %> | |
| 15 | + <% end %> | |
| 15 | 16 | }); |
| 16 | 17 | </script> |
| 17 | 18 | <% end %> | ... | ... |