Commit 90ceace5f85567cbf7fae859ce4d61d052a157b7
1 parent
9fb3ad5a
Exists in
send_email_to_admins
and in
5 other branches
html_safe: Consider to_json safe
This also fixes shopping_cart tests
Showing
3 changed files
with
32 additions
and
1 deletions
Show diff stats
@@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
1 | +## | ||
2 | +# Object based copy of http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/safe_join | ||
3 | +# array.safe_join instead of safe_join(array) | ||
4 | +# | ||
5 | +class Array | ||
6 | + def safe_join sep=nil | ||
7 | + sep = ERB::Util.unwrapped_html_escape sep | ||
8 | + | ||
9 | + self.flatten.map!{ |i| ERB::Util.unwrapped_html_escape i }.join(sep).html_safe | ||
10 | + end | ||
11 | +end | ||
12 | + | ||
13 | +## | ||
14 | +# Just use .to_json instead of .to_json.html_safe | ||
15 | +# as escape_html_entities_in_json is default on rails. | ||
16 | +# http://stackoverflow.com/a/31774454/670229 | ||
17 | +# | ||
18 | +ActiveSupport::JSON::Encoding.escape_html_entities_in_json = true | ||
19 | +ActiveSupport::JSON.class_eval do | ||
20 | + module EncodeWithHtmlSafe | ||
21 | + def encode *args | ||
22 | + super.html_safe | ||
23 | + end | ||
24 | + end | ||
25 | + singleton_class.prepend EncodeWithHtmlSafe | ||
26 | +end |
plugins/delivery/lib/delivery_plugin/display_helper.rb
@@ -15,7 +15,7 @@ module DeliveryPlugin::DisplayHelper | @@ -15,7 +15,7 @@ module DeliveryPlugin::DisplayHelper | ||
15 | content_tag :option, text, value: method.id, | 15 | content_tag :option, text, value: method.id, |
16 | data: {label: method.name, type: method.delivery_type, instructions: CGI::escapeHTML(method.description.to_s)}, | 16 | data: {label: method.name, type: method.delivery_type, instructions: CGI::escapeHTML(method.description.to_s)}, |
17 | selected: if method.id == selected then 'selected' else nil end | 17 | selected: if method.id == selected then 'selected' else nil end |
18 | - end.join | 18 | + end.safe_join |
19 | end | 19 | end |
20 | 20 | ||
21 | def consumer_delivery_field_value order, field | 21 | def consumer_delivery_field_value order, field |
plugins/shopping_cart/features/delivery_client.feature
@@ -64,10 +64,15 @@ Feature: delivery client | @@ -64,10 +64,15 @@ Feature: delivery client | ||
64 | Scenario: gets free delivery due to free over price | 64 | Scenario: gets free delivery due to free over price |
65 | Given I follow "Add to basket" | 65 | Given I follow "Add to basket" |
66 | And I follow "Add to basket" | 66 | And I follow "Add to basket" |
67 | + And I wait 0.2 seconds to finish the request | ||
67 | And I follow "Add to basket" | 68 | And I follow "Add to basket" |
69 | + And I wait 0.2 seconds to finish the request | ||
68 | And I follow "Add to basket" | 70 | And I follow "Add to basket" |
71 | + And I wait 0.2 seconds to finish the request | ||
69 | And I follow "Add to basket" | 72 | And I follow "Add to basket" |
73 | + And I wait 0.2 seconds to finish the request | ||
70 | And I follow "Add to basket" | 74 | And I follow "Add to basket" |
75 | + And I wait 0.2 seconds to finish the request | ||
71 | And I should see "Show basket" | 76 | And I should see "Show basket" |
72 | And I follow "Show basket" | 77 | And I follow "Show basket" |
73 | And I wait 1 second for animations | 78 | And I wait 1 second for animations |