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 %> | ... | ... |