solidus_seo 1.0.11 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b59bc10f88b145907a907757d59bfa0ddfc1991e7e20313bb4b2b7bb522935f
4
- data.tar.gz: 879ddd7cbc5884f6eefcfd027d266e8a8c17a707f9312cdf6367970bc9c47d33
3
+ metadata.gz: 216bf7f2c50a2e4513308e4aa12f7f3685f4aa01621ffc2f8d0a025a4a4b88d2
4
+ data.tar.gz: f7106060098a781ec08ba7c02447738d511e39bf0c3be675aafc1a4b837aa69c
5
5
  SHA512:
6
- metadata.gz: b2f9462a55c124cc5eb2871a8fcdf5c0215bf7fc6280c50295da392f12169c4b2c93a9ca5a13f77291beb4a481fd7de38fb4c25b407e68b83614aab9efa5bbd9
7
- data.tar.gz: 41787840fd2c469c0103a2f76b53b93586a4c09febbabb9ff82ca1845dfa8c8ed7b035e386e53b2e0cb903873824cd119510784a1a5da53429fb2ae6e088e495
6
+ metadata.gz: 89bd816d982a8d8c8358f2e769ad5d030ce141097e0067a6b585e0bdfb3454ba88bf08c129c913baf6c5754c3465b8040cb22bb7c00db36f28aabc650340e1b2
7
+ data.tar.gz: 6c05b6024066f4a6b36299f077883fc2086a0b9fba78415368a8b55662142214bdd006486330c821c4a94496aa699e581f2f6cfeb1a6e155bdc30d00782f6b76
data/README.md CHANGED
@@ -45,8 +45,10 @@ Here are the changes we make, via deface, in the default Solidus views as part o
45
45
 
46
46
  - In `spree/layouts/spree_application.html.erb`
47
47
  - Insert `<%= render 'solidus_seo/analytics' %>` just before `</head>`.
48
+ - Insert `<%= render 'solidus_seo/noscript_tags' %>` immediately after the `<body>` opening tag.
48
49
  - Insert `<%= dump_jsonld %>` just before the `</body>` closing tag.
49
50
  - Replace `<%= taxon_breadcrumbs(@taxon) %>` with (`<%= taxon_breadcrumbs_jsonld(@taxon) %>`) which does the same as the original plus prints a JSON-LD tag.
51
+ - Replace `<%= flash_messages %>` with (`<%= flash_messages(ignore_types: 'added_to_cart') %>`) which does the same as the original plus prints a JSON-LD tag.
50
52
 
51
53
  - In `spree/products/show.html.erb`:
52
54
  - Insert `<%= jsonld @product %>` anywhere inside the `cache` block.
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module CheckoutControllerDecorator
5
+ def self.prepended(base)
6
+ base.class_eval do
7
+ end
8
+ end
9
+
10
+ def before_address
11
+ flash[:checkout_initiated] =
12
+ @order.address? &&
13
+ request.referrer =~ /#{cart_path}\b/i &&
14
+ params[:action] == 'edit'
15
+
16
+ super
17
+ end
18
+
19
+ private
20
+
21
+ ::Spree::StoreController.prepend(self)
22
+ end
23
+ end
@@ -1,25 +1,57 @@
1
1
  <%
2
2
  return if ENV['FACEBOOK_PIXEL_ID'].blank?
3
3
 
4
- if just_purchased
5
- order_data = {
6
- value: order.total,
7
- currency: order.currency,
4
+ event_data = {}
5
+
6
+ if order.present?
7
+ if just_purchased
8
+ event_data[:order] = {
9
+ value: order.total,
10
+ currency: order.currency,
11
+ content_type: 'product',
12
+ contents: order.line_items.map do |line_item|
13
+ { id: line_item.variant.sku, quantity: line_item.quantity }
14
+ end,
15
+
16
+ # custom properties
17
+ order_number: order.number,
18
+ item_total: order.item_total,
19
+ tax_total: order.tax_total,
20
+ ship_total: order.ship_total,
21
+ promo_total: order.promo_total
22
+ }
23
+ end
24
+
25
+ if flash[:added_to_cart].present?
26
+ event_data[:added_to_cart] = {
27
+ currency: order.currency,
28
+ content_type: 'product',
29
+ contents: flash[:added_to_cart].map do |variant_sku, variant|
30
+ { id: variant_sku, quantity: variant['quantity'] }
31
+ end
32
+ }
33
+ end
34
+
35
+ if flash[:checkout_initiated].present?
36
+ event_data[:checkout_initiated] = {
37
+ value: order.total,
38
+ currency: order.currency,
39
+ content_type: 'product',
40
+ contents: order.line_items.map do |line_item|
41
+ { id: line_item.variant.sku, quantity: line_item.quantity }
42
+ end
43
+ }
44
+ end
45
+ end
46
+
47
+ if @product
48
+ event_data[:current_product] = {
8
49
  content_type: 'product',
9
- contents: order.line_items.map do |line_item|
10
- next unless line_item.variant
11
-
12
- { id: line_item.variant.sku, quantity: line_item.quantity }
13
- end.compact,
14
-
15
- # custom properties
16
- order_number: order.number,
17
- item_total: order.item_total,
18
- tax_total: order.tax_total,
19
- ship_total: order.ship_total,
20
- promo_total: order.promo_total
50
+ content_name: @product.name,
51
+ content_ids: [@product.master.sku]
21
52
  }
22
53
  end
54
+
23
55
  %>
24
56
  <script type="text/javascript" data-tag="facebook">
25
57
  !function(f,b,e,v,n,t,s) {if (f.fbq) return;n = f.fbq = function() { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) };if (!f._fbq) f._fbq=n;n.push = n; n.loaded = !0; n.version = '2.0'; n.queue=[]; t = b.createElement(e); t.async = !0; t.src = v;s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s);}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js');
@@ -27,10 +59,25 @@ end
27
59
  fbq('init', '<%= ENV['FACEBOOK_PIXEL_ID'] %>');
28
60
  fbq('track', 'PageView');
29
61
 
30
- <% if just_purchased %>
31
- fbq('track', 'Purchase', <%== order_data.to_json %>);
62
+ <% if event_data[:order].present? %>
63
+ fbq('track', 'Purchase', <%== event_data[:order].to_json %>);
32
64
  window.solidusSeoDataLayer('facebook', 'purchase');
33
65
  <% end %>
66
+
67
+ <% if event_data[:added_to_cart].present? %>
68
+ fbq('track', 'AddToCart', <%== event_data[:added_to_cart].to_json %>);
69
+ window.solidusSeoDataLayer('facebook', 'addtocart');
70
+ <% end %>
71
+
72
+ <% if event_data[:checkout_initiated].present? %>
73
+ fbq('track', 'InitiateCheckout', <%== event_data[:checkout_initiated].to_json %>);
74
+ window.solidusSeoDataLayer('facebook', 'initiatecheckout');
75
+ <% end %>
76
+
77
+ <% if event_data[:current_product].present? %>
78
+ fbq('track', 'ViewContent', <%== event_data[:current_product].to_json %>);
79
+ window.solidusSeoDataLayer('facebook', 'viewcontent');
80
+ <% end %>
34
81
  </script>
35
82
  <noscript>
36
83
  <img height="1" width="1" src="https://www.facebook.com/tr?id=<%= ENV['FACEBOOK_PIXEL_ID'] %>&ev=PageView&noscript=1" />
@@ -1,13 +1,13 @@
1
1
  <%
2
2
  return if ENV['GOOGLE_TAG_MANAGER_ID'].present? || ENV['GOOGLE_ANALYTICS_ID'].blank?
3
3
 
4
+ event_data = {}
5
+
4
6
  if just_purchased
5
- order_data = {
7
+ event_data[:order] = {
6
8
  transaction_id: order.number,
7
9
  value: order.total,
8
10
  items: order.line_items.map do |line_item|
9
- next unless line_item.variant
10
-
11
11
  {
12
12
  id: line_item.variant.sku,
13
13
  name: line_item.variant.name,
@@ -15,7 +15,7 @@ if just_purchased
15
15
  variant: line_item.variant.options_text,
16
16
  quantity: line_item.quantity
17
17
  }
18
- end.compact,
18
+ end,
19
19
 
20
20
  affiliation: current_store.name,
21
21
  currency: order.currency,
@@ -35,7 +35,7 @@ end
35
35
 
36
36
  <% if just_purchased %>
37
37
  <script data-tag="google-analytics">
38
- gtag('event', 'purchase', <%== order_data.to_json %>);
38
+ gtag('event', 'purchase', <%== event_data[:order].to_json %>);
39
39
  window.solidusSeoDataLayer('google-analytics', 'purchase');
40
40
  </script>
41
41
  <% end %>
@@ -1,29 +1,29 @@
1
1
  <%
2
2
  return if ENV['GOOGLE_ANALYTICS_ID'].present? || ENV['GOOGLE_TAG_MANAGER_ID'].blank?
3
3
 
4
- if just_purchased
5
- order_data = {
6
- id: order.number,
7
- revenue: order.total,
8
- coupon: '', # TODO: Add coupon code if present
9
-
10
- affiliation: current_store.name,
11
- currency: order.currency,
12
- tax: order.tax_total,
13
- shipping: order.ship_total
14
- }
4
+ event_data = {}
15
5
 
16
- purchased_items = order.line_items.map do |line_item|
17
- next unless line_item.variant
6
+ if just_purchased
7
+ event_data[:order] = {
8
+ id: order.number,
9
+ revenue: order.total,
10
+ coupon: order.adjustments.promotion.first&.promotion_code&.value,
18
11
 
19
- {
20
- id: line_item.variant.sku,
21
- name: line_item.variant.name,
22
- price: line_item.total,
23
- variant: line_item.variant.options_text,
24
- quantity: line_item.quantity
12
+ affiliation: current_store.name,
13
+ currency: order.currency,
14
+ tax: order.tax_total,
15
+ shipping: order.ship_total
25
16
  }
26
- end.compact
17
+
18
+ event_data[:order_contents] = order.line_items.map do |line_item|
19
+ {
20
+ id: line_item.variant.sku,
21
+ name: line_item.variant.name,
22
+ price: line_item.total,
23
+ variant: line_item.variant.options_text,
24
+ quantity: line_item.quantity
25
+ }
26
+ end
27
27
  end
28
28
  %>
29
29
  <script type="text/javascript" data-tag="google-tag-manager">
@@ -33,8 +33,8 @@ end
33
33
  window.dataLayer.push({
34
34
  'ecommerce': {
35
35
  'purchase': {
36
- 'actionField': <%== order_data.to_json %>,
37
- 'products': <%== purchased_items.to_json %>
36
+ 'actionField': <%== event_data[:order].to_json %>,
37
+ 'products': <%== event_data[:order_contents].to_json %>
38
38
  }
39
39
  }
40
40
  });
@@ -1,38 +1,55 @@
1
1
  <%
2
2
  return if ENV['PINTEREST_TAG_ID'].blank?
3
3
 
4
- product_data = {}
5
- add_to_cart_data = {}
6
- order_data = {}
7
- em_data = {}
4
+ event_data = {}
8
5
 
9
6
  user_email = try_spree_current_user&.email || current_order&.email
10
7
  if user_email.present?
11
8
  em_data = { em: user_email }
12
9
  end
13
10
 
14
- if just_purchased
15
- order_data = {
16
- value: order.total,
17
- currency: order.currency,
18
- order_quantity: order.line_items.sum(&:quantity),
19
- line_items: order.line_items.map do |line_item|
20
- next unless line_item.variant
11
+ if order.present?
12
+ if just_purchased
13
+ event_data[:order] = {
14
+ value: order.total,
15
+ currency: order.currency,
16
+ order_quantity: order.line_items.sum(&:quantity),
17
+ line_items: order.line_items.map do |line_item|
18
+ next unless line_item.variant
21
19
 
22
- {
23
- product_id: line_item.variant.product.master.sku,
24
- product_name: line_item.variant.name,
25
- product_variant_id: line_item.variant.sku,
26
- product_variant: line_item.variant.options_text,
27
- product_quantity: line_item.quantity,
28
- product_price: line_item.price
29
- }
30
- end.compact
31
- }
20
+ {
21
+ product_id: line_item.variant.product.master.sku,
22
+ product_name: line_item.variant.name,
23
+ product_variant_id: line_item.variant.sku,
24
+ product_variant: line_item.variant.options_text,
25
+ product_quantity: line_item.quantity,
26
+ product_price: line_item.price
27
+ }
28
+ end.compact
29
+ }
30
+ end
31
+
32
+ if flash[:added_to_cart].present?
33
+ event_data[:added_to_cart] = {
34
+ value: order.total,
35
+ currency: order.currency,
36
+ order_id: order.number,
37
+ line_items: flash[:added_to_cart].map do |variant_sku, variant|
38
+ {
39
+ product_id: variant['id'],
40
+ product_name: variant['name'],
41
+ product_variant_id: variant_sku,
42
+ product_variant: variant['variant'],
43
+ product_price: variant['price'],
44
+ product_quantity: variant['quantity']
45
+ }
46
+ end
47
+ }
48
+ end
32
49
  end
33
50
 
34
51
  if @product
35
- product_data = {
52
+ event_data[:product] = {
36
53
  line_items: [
37
54
  {
38
55
  product_name: @product.name,
@@ -42,23 +59,7 @@ if @product
42
59
  }
43
60
  end
44
61
 
45
- if flash[:added_to_cart].present?
46
- add_to_cart_data = {
47
- value: order.total,
48
- currency: order.currency,
49
- order_id: order.number,
50
- line_items: flash[:added_to_cart].map do |variant_sku, variant|
51
- {
52
- product_id: variant['id'],
53
- product_name: variant['name'],
54
- product_variant_id: variant_sku,
55
- product_variant: variant['variant'],
56
- product_price: variant['price'],
57
- product_quantity: variant['quantity']
58
- }
59
- end
60
- }
61
- end
62
+
62
63
  %>
63
64
  <script type="text/javascript" data-tag="pinterest">
64
65
  !function(e){if(!window.pintrk){window.pintrk=function(){window.pintrk.queue.push(Array.prototype.slice.call(arguments))};var n=window.pintrk;n.queue=[],n.version="3.0";var t=document.createElement("script");t.async=!0,t.src=e;var r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(t,r)}}("https://s.pinimg.com/ct/core.js");
@@ -66,16 +67,16 @@ end
66
67
  pintrk('load', '<%= ENV['PINTEREST_TAG_ID'] %>' <%== em_data.present? ? ", #{em_data.to_json}" : '' %>);
67
68
  pintrk('page');
68
69
 
69
- pintrk('track', 'pagevisit'<%== product_data.present? ? ", #{product_data.to_json}" : '' %>);
70
+ pintrk('track', 'pagevisit'<%== event_data[:product].present? ? ", #{event_data[:product].to_json}" : '' %>);
70
71
  window.solidusSeoDataLayer('pinterest', 'pagevisit');
71
72
 
72
- <% if add_to_cart_data.present? %>
73
- pintrk('track', 'addtocart', <%== add_to_cart_data.to_json %>);
73
+ <% if event_data[:added_to_cart].present? %>
74
+ pintrk('track', 'addtocart', <%== event_data[:added_to_cart].to_json %>);
74
75
  window.solidusSeoDataLayer('pinterest', 'addtocart');
75
76
  <% end %>
76
77
 
77
- <% if order_data.present? %>
78
- pintrk('track', 'checkout', <%== order_data.to_json %>);
78
+ <% if event_data[:order].present? %>
79
+ pintrk('track', 'checkout', <%== event_data[:order].to_json %>);
79
80
  window.solidusSeoDataLayer('pinterest', 'purchase');
80
81
  <% end %>
81
82
  </script>
@@ -36,6 +36,7 @@ module SolidusSeo
36
36
  copy_file 'insert_analytics_in_layout.html.erb.deface', 'app/overrides/spree/layouts/spree_application/insert_analytics_in_layout.html.erb.deface'
37
37
  copy_file 'replace_taxon_breadcrumbs_helper.html.erb.deface', 'app/overrides/spree/layouts/spree_application/replace_taxon_breadcrumbs_helper.html.erb.deface'
38
38
  copy_file 'insert_noscript_tags.html.erb.deface', 'app/overrides/spree/layouts/spree_application/insert_noscript_tags.html.erb.deface'
39
+ copy_file 'replace_flash_messages_helper.html.erb.deface', 'app/overrides/spree/layouts/spree_application/replace_flash_messages_helper.html.erb.deface'
39
40
  end
40
41
  end
41
42
  end
@@ -0,0 +1,5 @@
1
+ <!--
2
+ replace %{erb[loud]:contains("flash_messages")}
3
+ original "<%= flash_messages %>"
4
+ -->
5
+ <%= flash_messages(ignore_types: 'added_to_cart') %>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusSeo
4
- VERSION = '1.0.11'
4
+ VERSION = '1.1.1'
5
5
  end
data/spec/examples.txt CHANGED
@@ -1,33 +1,40 @@
1
- example_id | status | run_time |
2
- ------------------------------------------------ | ------ | --------------- |
3
- ./spec/features/add_to_cart_spec.rb[1:1:1] | passed | 2.14 seconds |
4
- ./spec/features/checkout_complete_spec.rb[1:1:1] | passed | 0.59035 seconds |
5
- ./spec/features/checkout_complete_spec.rb[1:2:1] | passed | 0.70409 seconds |
6
- ./spec/features/checkout_complete_spec.rb[1:3:1] | passed | 0.77986 seconds |
7
- ./spec/features/checkout_complete_spec.rb[1:4:1] | passed | 0.53269 seconds |
8
- ./spec/features/homepage_spec.rb[1:1:1] | passed | 0.27083 seconds |
9
- ./spec/features/homepage_spec.rb[1:1:2] | passed | 0.2846 seconds |
10
- ./spec/features/homepage_spec.rb[1:2:1] | passed | 0.26788 seconds |
11
- ./spec/features/homepage_spec.rb[1:2:2] | passed | 0.26357 seconds |
12
- ./spec/features/homepage_spec.rb[1:3:1] | passed | 0.2807 seconds |
13
- ./spec/features/homepage_spec.rb[1:3:2] | passed | 0.28623 seconds |
14
- ./spec/features/homepage_spec.rb[1:4:1:1] | passed | 0.55629 seconds |
15
- ./spec/features/product_page_spec.rb[1:1:1] | passed | 0.44472 seconds |
16
- ./spec/features/product_page_spec.rb[1:1:2] | passed | 0.37428 seconds |
17
- ./spec/features/product_page_spec.rb[1:1:3] | passed | 0.48305 seconds |
18
- ./spec/features/product_page_spec.rb[1:2:1] | passed | 0.37207 seconds |
19
- ./spec/features/product_page_spec.rb[1:2:2:1] | passed | 0.33481 seconds |
20
- ./spec/features/product_page_spec.rb[1:2:3:1] | passed | 0.35463 seconds |
21
- ./spec/features/product_page_spec.rb[1:3:1] | passed | 0.40858 seconds |
22
- ./spec/features/product_page_spec.rb[1:3:2] | passed | 0.39049 seconds |
23
- ./spec/features/product_page_spec.rb[1:3:3] | passed | 0.43994 seconds |
24
- ./spec/features/product_page_spec.rb[1:4:1:1] | passed | 4.3 seconds |
25
- ./spec/features/taxon_page_spec.rb[1:1:1] | passed | 0.40068 seconds |
26
- ./spec/features/taxon_page_spec.rb[1:1:2] | passed | 0.39674 seconds |
27
- ./spec/features/taxon_page_spec.rb[1:1:3] | passed | 0.36863 seconds |
28
- ./spec/features/taxon_page_spec.rb[1:2:1] | passed | 0.46435 seconds |
29
- ./spec/features/taxon_page_spec.rb[1:2:2:1] | passed | 0.38776 seconds |
30
- ./spec/features/taxon_page_spec.rb[1:2:3:1] | passed | 0.36313 seconds |
31
- ./spec/features/taxon_page_spec.rb[1:3:1] | passed | 0.39374 seconds |
32
- ./spec/features/taxon_page_spec.rb[1:3:2] | passed | 0.36606 seconds |
33
- ./spec/features/taxon_page_spec.rb[1:4:1] | passed | 0.585 seconds |
1
+ example_id | status | run_time |
2
+ ------------------------------------------------- | ------- | --------------- |
3
+ ./spec/features/add_to_cart_spec.rb[1:1:1] | passed | 0.70714 seconds |
4
+ ./spec/features/add_to_cart_spec.rb[1:2:1] | passed | 0.91242 seconds |
5
+ ./spec/features/add_to_cart_spec.rb[1:2:2] | passed | 0.81584 seconds |
6
+ ./spec/features/checkout_complete_spec.rb[1:1:1] | passed | 0.79057 seconds |
7
+ ./spec/features/checkout_complete_spec.rb[1:2:1] | passed | 0.60349 seconds |
8
+ ./spec/features/checkout_complete_spec.rb[1:3:1] | passed | 0.67453 seconds |
9
+ ./spec/features/checkout_complete_spec.rb[1:4:1] | passed | 1.34 seconds |
10
+ ./spec/features/checkout_initiated_spec.rb[1:1:1] | pending | 4.43 seconds |
11
+ ./spec/features/checkout_initiated_spec.rb[1:2:1] | pending | 0.14919 seconds |
12
+ ./spec/features/checkout_initiated_spec.rb[1:3:1] | passed | 4.36 seconds |
13
+ ./spec/features/checkout_initiated_spec.rb[1:4:1] | pending | 0.1462 seconds |
14
+ ./spec/features/homepage_spec.rb[1:1:1] | passed | 0.29976 seconds |
15
+ ./spec/features/homepage_spec.rb[1:1:2] | passed | 0.27 seconds |
16
+ ./spec/features/homepage_spec.rb[1:2:1] | passed | 0.27712 seconds |
17
+ ./spec/features/homepage_spec.rb[1:2:2] | passed | 0.2885 seconds |
18
+ ./spec/features/homepage_spec.rb[1:3:1] | passed | 0.2833 seconds |
19
+ ./spec/features/homepage_spec.rb[1:3:2] | passed | 0.34543 seconds |
20
+ ./spec/features/homepage_spec.rb[1:4:1:1] | passed | 0.34652 seconds |
21
+ ./spec/features/product_page_spec.rb[1:1:1] | passed | 0.49201 seconds |
22
+ ./spec/features/product_page_spec.rb[1:1:2] | passed | 0.33732 seconds |
23
+ ./spec/features/product_page_spec.rb[1:1:3] | passed | 0.44211 seconds |
24
+ ./spec/features/product_page_spec.rb[1:2:1] | passed | 0.33363 seconds |
25
+ ./spec/features/product_page_spec.rb[1:2:2:1] | passed | 0.37959 seconds |
26
+ ./spec/features/product_page_spec.rb[1:2:3:1] | passed | 0.35276 seconds |
27
+ ./spec/features/product_page_spec.rb[1:3:1] | passed | 0.38382 seconds |
28
+ ./spec/features/product_page_spec.rb[1:3:2] | passed | 0.44302 seconds |
29
+ ./spec/features/product_page_spec.rb[1:3:3] | passed | 0.3563 seconds |
30
+ ./spec/features/product_page_spec.rb[1:4:1:1] | passed | 0.43342 seconds |
31
+ ./spec/features/product_page_spec.rb[1:4:2:1] | passed | 0.51922 seconds |
32
+ ./spec/features/taxon_page_spec.rb[1:1:1] | passed | 0.37215 seconds |
33
+ ./spec/features/taxon_page_spec.rb[1:1:2] | passed | 0.3999 seconds |
34
+ ./spec/features/taxon_page_spec.rb[1:1:3] | passed | 0.41779 seconds |
35
+ ./spec/features/taxon_page_spec.rb[1:2:1] | passed | 0.40682 seconds |
36
+ ./spec/features/taxon_page_spec.rb[1:2:2:1] | passed | 0.34453 seconds |
37
+ ./spec/features/taxon_page_spec.rb[1:2:3:1] | passed | 0.39064 seconds |
38
+ ./spec/features/taxon_page_spec.rb[1:3:1] | passed | 0.33643 seconds |
39
+ ./spec/features/taxon_page_spec.rb[1:3:2] | passed | 0.43755 seconds |
40
+ ./spec/features/taxon_page_spec.rb[1:4:1] | passed | 0.63277 seconds |
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'Add to cart', type: :system do
4
- let!(:store) { Spree::Store.default }
4
+ let!(:store) { create(:store) }
5
5
  let!(:order) { create :completed_order_with_totals }
6
6
  let!(:line_item) { order.line_items.first }
7
7
 
@@ -15,6 +15,16 @@ describe 'Add to cart', type: :system do
15
15
  find('#add-to-cart-button').click
16
16
  end
17
17
 
18
+ context 'when FACEBOOK_PIXEL_ID environment variable is present' do
19
+ let(:env_variable) { 'FACEBOOK_PIXEL_ID' }
20
+
21
+ it 'tracks "add to cart" event with product data' do
22
+ expect(page).to track_analytics_event :facebook, 'addtocart', [
23
+ 'fbq', 'track', 'AddToCart', line_item.sku
24
+ ]
25
+ end
26
+ end
27
+
18
28
  context 'when PINTEREST_TAG_ID environment variable is present' do
19
29
  let(:env_variable) { 'PINTEREST_TAG_ID' }
20
30
 
@@ -24,6 +34,10 @@ describe 'Add to cart', type: :system do
24
34
  line_item.name, line_item.variant.sku, line_item.variant.price
25
35
  ]
26
36
  end
37
+
38
+ it 'skips printing a flash message to the user with added_to_cart raw data' do
39
+ expect(page).to_not have_css '.flash.added_to_cart'
40
+ end
27
41
  end
28
42
  end
29
43
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'Checkout complete', type: :system do
4
- let!(:store) { Spree::Store.default }
4
+ let!(:store) { create(:store) }
5
5
  let!(:taxon) { create :taxon, name: 'MyTaxon' }
6
6
  let!(:order) { create :completed_order_with_totals }
7
7
  let!(:line_item) { order.line_items.first }
@@ -19,7 +19,7 @@ describe 'Checkout complete', type: :system do
19
19
  context 'when GOOGLE_TAG_MANAGER_ID environment variable is present' do
20
20
  let(:env_variable) { 'GOOGLE_TAG_MANAGER_ID' }
21
21
 
22
- it 'includes and executes a purchase event script' do
22
+ it 'tracks "purchase" event with product data' do
23
23
  subject
24
24
  expect(page).to track_analytics_event 'google-tag-manager', 'purchase', ['ecommerce', 'purchase', order.number, order.total, line_item.sku]
25
25
  end
@@ -28,7 +28,7 @@ describe 'Checkout complete', type: :system do
28
28
  context 'when GOOGLE_ANALYTICS_ID environment variable is present' do
29
29
  let(:env_variable) { 'GOOGLE_ANALYTICS_ID' }
30
30
 
31
- it 'includes and executes a purchase event script' do
31
+ it 'tracks "purchase" event with product data' do
32
32
  subject
33
33
  expect(page).to track_analytics_event 'google-analytics', 'purchase', [
34
34
  'event', 'purchase', 'transaction_id', order.number,
@@ -41,7 +41,7 @@ describe 'Checkout complete', type: :system do
41
41
  context 'when FACEBOOK_PIXEL_ID environment variable is present' do
42
42
  let(:env_variable) { 'FACEBOOK_PIXEL_ID' }
43
43
 
44
- it 'includes and executes a purchase event script' do
44
+ it 'tracks "Purchase" event with product data' do
45
45
  subject
46
46
  expect(page).to track_analytics_event :facebook, 'purchase', ['track', 'Purchase', order.total, line_item.sku, line_item.quantity, order.number]
47
47
  end
@@ -50,7 +50,7 @@ describe 'Checkout complete', type: :system do
50
50
  context 'when PINTEREST_TAG_ID environment variable is present' do
51
51
  let(:env_variable) { 'PINTEREST_TAG_ID' }
52
52
 
53
- it 'includes and executes a purchase event script' do
53
+ it 'tracks "checkout" event with product data' do
54
54
  subject
55
55
  expect(page).to track_analytics_event :pinterest, 'purchase', ['track', 'checkout', order.total, line_item.sku, line_item.name, line_item.price]
56
56
  end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe 'Checkout initated', type: :system do
4
+ let!(:store) { create(:store) }
5
+ let!(:taxon) { create :taxon, name: 'MyTaxon' }
6
+ let!(:product) { create(:base_product, taxons: [taxon]) }
7
+ let(:order) { Spree::Order.last }
8
+
9
+ stub_authorization!
10
+
11
+ before do
12
+ stub_const 'ENV', ENV.to_h.merge(env_variable => 'XXX-YYYYY')
13
+ end
14
+
15
+ subject do
16
+ visit spree.product_path(product)
17
+ find('#add-to-cart-button').click
18
+ find('#checkout-link').click
19
+ end
20
+
21
+ context 'when GOOGLE_TAG_MANAGER_ID environment variable is present' do
22
+ let(:env_variable) { 'GOOGLE_TAG_MANAGER_ID' }
23
+
24
+ it 'tracks "InitiateCheckout" event with product data' do
25
+ skip
26
+ end
27
+ end
28
+
29
+ context 'when GOOGLE_ANALYTICS_ID environment variable is present' do
30
+ let(:env_variable) { 'GOOGLE_ANALYTICS_ID' }
31
+
32
+ it 'tracks "InitiateCheckout" event with product data' do
33
+ skip
34
+ end
35
+ end
36
+
37
+ context 'when FACEBOOK_PIXEL_ID environment variable is present' do
38
+ let(:env_variable) { 'FACEBOOK_PIXEL_ID' }
39
+
40
+ it 'tracks "InitiateCheckout" event with product data' do
41
+ subject
42
+ expect(page).to track_analytics_event :facebook, 'initiatecheckout', ['track', 'InitiateCheckout', order.total, order.currency, order.line_items.first.sku]
43
+ end
44
+ end
45
+
46
+ context 'when PINTEREST_TAG_ID environment variable is present' do
47
+ let(:env_variable) { 'PINTEREST_TAG_ID' }
48
+
49
+ it 'tracks "checkout" event with product data' do
50
+ skip
51
+ end
52
+ end
53
+ end
@@ -1,5 +1,5 @@
1
1
  describe "Homepage", type: :system do
2
- let!(:store) { Spree::Store.default }
2
+ let!(:store) { create(:store) }
3
3
  let(:seo_name) { 'My store SEO name' }
4
4
  let(:seo_image) { 'https://example.com/path/store.jpg' }
5
5
  let(:seo_description) { 'My store SEO description' }
@@ -1,5 +1,5 @@
1
1
  describe "Product page", type: :system do
2
- let!(:store) { Spree::Store.default }
2
+ let!(:store) { create(:store) }
3
3
  let(:store_seo_name) { 'My store SEO name' }
4
4
 
5
5
  let!(:taxon) { create(:taxon, name: 'MyTaxon') }
@@ -97,6 +97,17 @@ describe "Product page", type: :system do
97
97
  stub_const 'ENV', ENV.to_h.merge(env_variable => 'XXX-YYYYY')
98
98
  end
99
99
 
100
+ context 'when FACEBOOK_PIXEL_ID environment variable is present' do
101
+ let(:env_variable) { 'FACEBOOK_PIXEL_ID' }
102
+
103
+ it 'tracks "ViewContent" event with product data' do
104
+ subject
105
+ expect(page).to track_analytics_event :facebook, 'viewcontent', [
106
+ 'fbq', 'track', 'ViewContent', product.name, product.master.sku
107
+ ]
108
+ end
109
+ end
110
+
100
111
  context 'when PINTEREST_TAG_ID environment variable is present' do
101
112
  let(:env_variable) { 'PINTEREST_TAG_ID' }
102
113
 
@@ -1,5 +1,5 @@
1
1
  describe "Taxon page", type: :system do
2
- let!(:store) { Spree::Store.default }
2
+ let!(:store) { create(:store) }
3
3
  let(:seo_name) { 'My store SEO name' }
4
4
  let(:seo_image) { 'https://example.com/path/store.jpg' }
5
5
  let(:seo_description) { 'My store SEO description' }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_seo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.11
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karma Creative
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-20 00:00:00.000000000 Z
11
+ date: 2021-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus_core
@@ -337,6 +337,7 @@ files:
337
337
  - app/assets/javascripts/spree/frontend/solidus_seo.js
338
338
  - app/assets/stylesheets/spree/backend/solidus_seo.css
339
339
  - app/assets/stylesheets/spree/frontend/solidus_seo.css
340
+ - app/decorators/controllers/spree/checkout_controller_decorator.rb
340
341
  - app/decorators/controllers/spree/orders_controller_decorator.rb
341
342
  - app/decorators/controllers/spree/store_controller_decorator.rb
342
343
  - app/decorators/helpers/spree/core/controller_helpers/common_decorator.rb
@@ -360,6 +361,7 @@ files:
360
361
  - lib/generators/solidus_seo/install/templates/insert_product_list_helper.html.erb.deface
361
362
  - lib/generators/solidus_seo/install/templates/paperclip_optimizer.rb
362
363
  - lib/generators/solidus_seo/install/templates/remove_original_title_tag.deface
364
+ - lib/generators/solidus_seo/install/templates/replace_flash_messages_helper.html.erb.deface
363
365
  - lib/generators/solidus_seo/install/templates/replace_taxon_breadcrumbs_helper.html.erb.deface
364
366
  - lib/solidus_seo.rb
365
367
  - lib/solidus_seo/engine.rb
@@ -382,6 +384,7 @@ files:
382
384
  - spec/examples.txt
383
385
  - spec/features/add_to_cart_spec.rb
384
386
  - spec/features/checkout_complete_spec.rb
387
+ - spec/features/checkout_initiated_spec.rb
385
388
  - spec/features/homepage_spec.rb
386
389
  - spec/features/product_page_spec.rb
387
390
  - spec/features/taxon_page_spec.rb
@@ -392,7 +395,7 @@ homepage: https://github.com/karmakatahdin/solidus_seo
392
395
  licenses:
393
396
  - BSD-3-Clause
394
397
  metadata: {}
395
- post_install_message:
398
+ post_install_message:
396
399
  rdoc_options: []
397
400
  require_paths:
398
401
  - lib
@@ -407,15 +410,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
407
410
  - !ruby/object:Gem::Version
408
411
  version: '0'
409
412
  requirements: []
410
- rubyforge_project:
413
+ rubyforge_project:
411
414
  rubygems_version: 2.7.6.2
412
- signing_key:
415
+ signing_key:
413
416
  specification_version: 4
414
417
  summary: Enhanced SEO in Solidus
415
418
  test_files:
416
419
  - spec/spec_helper.rb
417
420
  - spec/examples.txt
418
421
  - spec/features/checkout_complete_spec.rb
422
+ - spec/features/checkout_initiated_spec.rb
419
423
  - spec/features/homepage_spec.rb
420
424
  - spec/features/taxon_page_spec.rb
421
425
  - spec/features/add_to_cart_spec.rb