spree_analytics_trackers 1.0.0 → 1.0.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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +21 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +29 -0
  5. data/Appraisals +17 -0
  6. data/Gemfile +7 -0
  7. data/LICENSE +26 -0
  8. data/README.md +73 -0
  9. data/Rakefile +21 -0
  10. data/app/controllers/spree/admin/trackers_controller.rb +6 -0
  11. data/app/controllers/spree/store_controller_decorator.rb +5 -0
  12. data/app/helpers/spree/trackers_helper.rb +23 -0
  13. data/app/models/spree/line_item_decorator.rb +6 -0
  14. data/app/models/spree/order_decorator.rb +7 -0
  15. data/app/models/spree/product_decorator.rb +11 -0
  16. data/app/models/spree/tracker.rb +25 -0
  17. data/app/models/spree/user_decorator.rb +5 -0
  18. data/app/overrides/add_analytics_to_admin_sidebar.rb +9 -0
  19. data/app/overrides/add_cart_viewed_to_orders_edit.rb +10 -0
  20. data/app/overrides/add_checkout_step_viewed_to_checkout_edit.rb +10 -0
  21. data/app/overrides/add_google_analytics_to_spree_application.rb +9 -0
  22. data/app/overrides/add_google_checkout_to_checkout_edit.rb +9 -0
  23. data/app/overrides/add_google_purchase_to_orders_show.rb +9 -0
  24. data/app/overrides/add_order_complete_to_orders_show.rb +10 -0
  25. data/app/overrides/add_product_added_to_orders_edit.rb +10 -0
  26. data/app/overrides/add_product_list_filtered_to_taxons_show.rb +10 -0
  27. data/app/overrides/add_product_list_viewed_to_products_list.rb +10 -0
  28. data/app/overrides/add_product_viewed_to_products_show.rb +10 -0
  29. data/app/overrides/add_products_searched_to_products_list.rb +10 -0
  30. data/app/overrides/add_segment_initializer_to_layout.rb +10 -0
  31. data/app/views/spree/admin/shared/_analytics_sidebar_menu.html.erb +5 -0
  32. data/app/views/spree/admin/trackers/_form.html.erb +36 -0
  33. data/app/views/spree/admin/trackers/edit.html.erb +13 -0
  34. data/app/views/spree/admin/trackers/index.html.erb +44 -0
  35. data/app/views/spree/admin/trackers/new.html.erb +13 -0
  36. data/app/views/spree/shared/_google_add_items.html.erb +13 -0
  37. data/app/views/spree/shared/_google_analytics.html.erb +18 -0
  38. data/app/views/spree/shared/_google_checkout.html.erb +14 -0
  39. data/app/views/spree/shared/_google_purchase.html.erb +19 -0
  40. data/app/views/spree/shared/trackers/segment/_cart_viewed.js.erb +22 -0
  41. data/app/views/spree/shared/trackers/segment/_checkout_step_viewed.js.erb +12 -0
  42. data/app/views/spree/shared/trackers/segment/_initializer.js.erb +8 -0
  43. data/app/views/spree/shared/trackers/segment/_order_complete.js.erb +48 -0
  44. data/app/views/spree/shared/trackers/segment/_product_added.js.erb +9 -0
  45. data/app/views/spree/shared/trackers/segment/_product_list_filtered.js.erb +32 -0
  46. data/app/views/spree/shared/trackers/segment/_product_list_viewed.js.erb +22 -0
  47. data/app/views/spree/shared/trackers/segment/_product_viewed.js.erb +6 -0
  48. data/app/views/spree/shared/trackers/segment/_products_searched.js.erb +12 -0
  49. data/bin/rails +7 -0
  50. data/config/locales/en.yml +20 -0
  51. data/config/routes.rb +5 -0
  52. data/db/migrate/20171013160337_create_spree_trackers.rb +20 -0
  53. data/gemfiles/.bundle/config +2 -0
  54. data/gemfiles/spree_3_5.gemfile +9 -0
  55. data/gemfiles/spree_3_7.gemfile +9 -0
  56. data/gemfiles/spree_master.gemfile +10 -0
  57. data/lib/generators/spree_analytics_trackers/install/install_generator.rb +20 -0
  58. data/lib/spree_analytics_trackers.rb +4 -0
  59. data/lib/spree_analytics_trackers/engine.rb +20 -0
  60. data/lib/spree_analytics_trackers/factories.rb +9 -0
  61. data/lib/spree_analytics_trackers/version.rb +17 -0
  62. data/spec/features/admin/configuration/analytics_tracker_spec.rb +50 -0
  63. data/spec/models/spree/tracker_spec.rb +17 -0
  64. data/spec/spec_helper.rb +93 -0
  65. data/spree_analytics_trackers.gemspec +44 -0
  66. metadata +75 -8
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ Spree::Core::Engine.add_routes do
2
+ namespace :admin, path: Spree.admin_path do
3
+ resources :trackers
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ class CreateSpreeTrackers < SpreeExtension::Migration[4.2]
2
+ def change
3
+ if table_exists?(:spree_trackers)
4
+ add_index :spree_trackers, :active unless index_exists?(:spree_trackers, :active)
5
+ remove_column :spree_trackers, :environment if column_exists?(:spree_trackers, :environment)
6
+ unless column_exists?(:spree_trackers, :engine)
7
+ add_column :spree_trackers, :kind, :integer, default: 0, null: false, index: true unless column_exists?(:spree_trackers, :kind)
8
+ rename_column :spree_trackers, :kind, :engine if column_exists?(:spree_trackers, :kind)
9
+ end
10
+ else
11
+ create_table :spree_trackers do |t|
12
+ t.string 'analytics_id'
13
+ t.boolean 'active', default: true, index: true
14
+ t.datetime 'created_at', null: false
15
+ t.datetime 'updated_at', null: false
16
+ t.integer 'engine', default: 0, null: false, index: true
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_RETRY: "1"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "spree", "~> 3.5.0"
6
+ gem "spree_auth_devise", "~> 3.3.0"
7
+ gem "rails-controller-testing"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "spree", "~> 3.7.0"
6
+ gem "spree_auth_devise", "~> 3.5.0"
7
+ gem "rails-controller-testing"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "spree", github: "spree/spree", branch: "master"
6
+ gem "spree_auth_devise", github: "spree/spree_auth_devise", branch: "master"
7
+ gem "mysql2", "~> 0.5.1"
8
+ gem "rails-controller-testing"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,20 @@
1
+ module SpreeAnalyticsTrackers
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ class_option :auto_run_migrations, type: :boolean, default: false
5
+
6
+ def add_migrations
7
+ run 'bundle exec rake railties:install:migrations FROM=spree_analytics_trackers'
8
+ end
9
+
10
+ def run_migrations
11
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
12
+ if run_migrations
13
+ run 'bundle exec rake db:migrate'
14
+ else
15
+ puts 'Skipping rake db:migrate, don\'t forget to run it!'
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,4 @@
1
+ require 'spree_core'
2
+ require 'spree_extension'
3
+ require 'spree_analytics_trackers/engine'
4
+ require 'spree_analytics_trackers/version'
@@ -0,0 +1,20 @@
1
+ module SpreeAnalyticsTrackers
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'spree_analytics_trackers'
6
+
7
+ # use rspec for tests
8
+ config.generators do |g|
9
+ g.test_framework :rspec
10
+ end
11
+
12
+ def self.activate
13
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
14
+ Rails.configuration.cache_classes ? require(c) : load(c)
15
+ end
16
+ end
17
+
18
+ config.to_prepare &method(:activate).to_proc
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ unless FactoryBot.factories.registered?(:tracker)
2
+ FactoryBot.define do
3
+ factory :tracker, class: Spree::Tracker do
4
+ analytics_id { 'A100' }
5
+ active { true }
6
+ engine { :google_analytics }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ module SpreeAnalyticsTrackers
2
+ module_function
3
+
4
+ # Returns the version of the currently loaded SpreeAnalyticsTrackers as a
5
+ # <tt>Gem::Version</tt>.
6
+ def version
7
+ Gem::Version.new VERSION::STRING
8
+ end
9
+
10
+ module VERSION
11
+ MAJOR = 1
12
+ MINOR = 0
13
+ TINY = 1
14
+
15
+ STRING = [MAJOR, MINOR, TINY].compact.join('.')
16
+ end
17
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Analytics Tracker', type: :feature do
4
+ stub_authorization!
5
+
6
+ context 'index' do
7
+ before(:each) do
8
+ create(:tracker)
9
+ create(:tracker, analytics_id: 'A200')
10
+ visit spree.admin_trackers_path
11
+ end
12
+
13
+ it 'should have the right content' do
14
+ expect(page).to have_content('Analytics Trackers')
15
+ end
16
+
17
+ it 'should have the right tabular values displayed' do
18
+ within_row(1) do
19
+ expect(column_text(1)).to eq('A100')
20
+ expect(column_text(2)).to eq('Google analytics')
21
+ expect(column_text(3)).to eq('Yes')
22
+ end
23
+
24
+ within_row(2) do
25
+ expect(column_text(1)).to eq('A200')
26
+ expect(column_text(2)).to eq('Google analytics')
27
+ expect(column_text(3)).to eq('Yes')
28
+ end
29
+ end
30
+ end
31
+
32
+ context 'create' do
33
+ before(:each) do
34
+ visit spree.admin_trackers_path
35
+ end
36
+
37
+ it 'should be able to create a new analytics tracker' do
38
+ click_link 'admin_new_tracker_link'
39
+ fill_in 'tracker_analytics_id', with: 'A100'
40
+ click_button 'Create'
41
+
42
+ expect(page).to have_content('successfully created!')
43
+ within_row(1) do
44
+ expect(column_text(1)).to eq('A100')
45
+ expect(column_text(2)).to eq('Google analytics')
46
+ expect(column_text(3)).to eq('Yes')
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Tracker, type: :model do
4
+ describe 'current' do
5
+ it 'returns the first active tracker' do
6
+ tracker = create(:tracker)
7
+ tracker.clear_cache
8
+ expect(Spree::Tracker.current).to eq(tracker)
9
+ end
10
+
11
+ it 'does not return an inactive tracker' do
12
+ tracker = create(:tracker, active: false)
13
+ tracker.clear_cache
14
+ expect(Spree::Tracker.current).to be_nil
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,93 @@
1
+ # Run Coverage report
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ add_filter 'spec/dummy'
5
+ add_group 'Controllers', 'app/controllers'
6
+ add_group 'Helpers', 'app/helpers'
7
+ add_group 'Mailers', 'app/mailers'
8
+ add_group 'Models', 'app/models'
9
+ add_group 'Views', 'app/views'
10
+ add_group 'Libraries', 'lib'
11
+ end
12
+
13
+ # Configure Rails Environment
14
+ ENV['RAILS_ENV'] = 'test'
15
+
16
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
17
+
18
+ require 'rspec/rails'
19
+ require 'database_cleaner'
20
+ require 'ffaker'
21
+
22
+ # Requires supporting ruby files with custom matchers and macros, etc,
23
+ # in spec/support/ and its subdirectories.
24
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
25
+
26
+ # Requires factories and other useful helpers defined in spree_core.
27
+ require 'spree/testing_support/authorization_helpers'
28
+ require 'spree/testing_support/capybara_ext'
29
+ require 'spree/testing_support/controller_requests'
30
+ require 'spree/testing_support/factories'
31
+ require 'spree/testing_support/url_helpers'
32
+
33
+ # Requires factories defined in lib/spree_analytics_trackers/factories.rb
34
+ require 'spree_analytics_trackers/factories'
35
+
36
+ RSpec.configure do |config|
37
+ config.include FactoryBot::Syntax::Methods
38
+
39
+ # Infer an example group's spec type from the file location.
40
+ config.infer_spec_type_from_file_location!
41
+
42
+ # == URL Helpers
43
+ #
44
+ # Allows access to Spree's routes in specs:
45
+ #
46
+ # visit spree.admin_path
47
+ # current_path.should eql(spree.products_path)
48
+ config.include Spree::TestingSupport::UrlHelpers
49
+
50
+ # == Requests support
51
+ #
52
+ # Adds convenient methods to request Spree's controllers
53
+ # spree_get :index
54
+ config.include Spree::TestingSupport::ControllerRequests, type: :controller
55
+
56
+ # == Mock Framework
57
+ #
58
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
59
+ #
60
+ # config.mock_with :mocha
61
+ # config.mock_with :flexmock
62
+ # config.mock_with :rr
63
+ config.mock_with :rspec
64
+ config.color = true
65
+
66
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
67
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
68
+
69
+ # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
70
+ # to cleanup after each test instead. Without transactional fixtures set to false the records created
71
+ # to setup a test will be unavailable to the browser, which runs under a separate server instance.
72
+ config.use_transactional_fixtures = false
73
+
74
+ # Ensure Suite is set to use transactions for speed.
75
+ config.before :suite do
76
+ DatabaseCleaner.strategy = :transaction
77
+ DatabaseCleaner.clean_with :truncation
78
+ end
79
+
80
+ # Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary.
81
+ config.before :each do
82
+ DatabaseCleaner.strategy = RSpec.current_example.metadata[:js] ? :truncation : :transaction
83
+ DatabaseCleaner.start
84
+ end
85
+
86
+ # After each spec clean the database.
87
+ config.after :each do
88
+ DatabaseCleaner.clean
89
+ end
90
+
91
+ config.fail_fast = ENV['FAIL_FAST'] || false
92
+ config.order = "random"
93
+ end
@@ -0,0 +1,44 @@
1
+ lib = File.expand_path('../lib/', __FILE__)
2
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'spree_analytics_trackers/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.platform = Gem::Platform::RUBY
8
+ s.name = 'spree_analytics_trackers'
9
+ s.version = SpreeAnalyticsTrackers.version
10
+ s.summary = 'Adds analytics trackers functionality to Spree'
11
+ s.description = 'Supports Google Analytics '
12
+ s.required_ruby_version = '>= 2.2.7'
13
+
14
+ s.author = 'Spark Solutions'
15
+ s.email = 'we@sparksolutions.co'
16
+ s.homepage = 'https://github.com/spree-contrib/spree_analytics_trackers'
17
+ s.license = 'BSD-3-Clause'
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- spec/*`.split("\n")
21
+ s.require_path = 'lib'
22
+ s.requirements << 'none'
23
+
24
+ spree_version = '>= 3.1.0', '< 5.0'
25
+ s.add_dependency 'spree_core', spree_version
26
+ s.add_dependency 'spree_backend', spree_version
27
+ s.add_dependency 'spree_extension'
28
+
29
+ s.add_development_dependency 'appraisal'
30
+ s.add_development_dependency 'capybara'
31
+ s.add_development_dependency 'capybara-screenshot'
32
+ s.add_development_dependency 'chromedriver-helper'
33
+ s.add_development_dependency 'coffee-rails'
34
+ s.add_development_dependency 'database_cleaner'
35
+ s.add_development_dependency 'factory_bot', '~> 4.7'
36
+ s.add_development_dependency 'ffaker'
37
+ s.add_development_dependency 'mysql2'
38
+ s.add_development_dependency 'pg'
39
+ s.add_development_dependency 'rspec-rails'
40
+ s.add_development_dependency 'sass-rails'
41
+ s.add_development_dependency 'selenium-webdriver'
42
+ s.add_development_dependency 'simplecov'
43
+ s.add_development_dependency 'sqlite3', '~> 1.3.6'
44
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_analytics_trackers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Spark Solutions
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-07 00:00:00.000000000 Z
11
+ date: 2019-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree_core
@@ -264,22 +264,86 @@ dependencies:
264
264
  name: sqlite3
265
265
  requirement: !ruby/object:Gem::Requirement
266
266
  requirements:
267
- - - ">="
267
+ - - "~>"
268
268
  - !ruby/object:Gem::Version
269
- version: '0'
269
+ version: 1.3.6
270
270
  type: :development
271
271
  prerelease: false
272
272
  version_requirements: !ruby/object:Gem::Requirement
273
273
  requirements:
274
- - - ">="
274
+ - - "~>"
275
275
  - !ruby/object:Gem::Version
276
- version: '0'
276
+ version: 1.3.6
277
277
  description: 'Supports Google Analytics '
278
278
  email: we@sparksolutions.co
279
279
  executables: []
280
280
  extensions: []
281
281
  extra_rdoc_files: []
282
- files: []
282
+ files:
283
+ - ".gitignore"
284
+ - ".rspec"
285
+ - ".travis.yml"
286
+ - Appraisals
287
+ - Gemfile
288
+ - LICENSE
289
+ - README.md
290
+ - Rakefile
291
+ - app/controllers/spree/admin/trackers_controller.rb
292
+ - app/controllers/spree/store_controller_decorator.rb
293
+ - app/helpers/spree/trackers_helper.rb
294
+ - app/models/spree/line_item_decorator.rb
295
+ - app/models/spree/order_decorator.rb
296
+ - app/models/spree/product_decorator.rb
297
+ - app/models/spree/tracker.rb
298
+ - app/models/spree/user_decorator.rb
299
+ - app/overrides/add_analytics_to_admin_sidebar.rb
300
+ - app/overrides/add_cart_viewed_to_orders_edit.rb
301
+ - app/overrides/add_checkout_step_viewed_to_checkout_edit.rb
302
+ - app/overrides/add_google_analytics_to_spree_application.rb
303
+ - app/overrides/add_google_checkout_to_checkout_edit.rb
304
+ - app/overrides/add_google_purchase_to_orders_show.rb
305
+ - app/overrides/add_order_complete_to_orders_show.rb
306
+ - app/overrides/add_product_added_to_orders_edit.rb
307
+ - app/overrides/add_product_list_filtered_to_taxons_show.rb
308
+ - app/overrides/add_product_list_viewed_to_products_list.rb
309
+ - app/overrides/add_product_viewed_to_products_show.rb
310
+ - app/overrides/add_products_searched_to_products_list.rb
311
+ - app/overrides/add_segment_initializer_to_layout.rb
312
+ - app/views/spree/admin/shared/_analytics_sidebar_menu.html.erb
313
+ - app/views/spree/admin/trackers/_form.html.erb
314
+ - app/views/spree/admin/trackers/edit.html.erb
315
+ - app/views/spree/admin/trackers/index.html.erb
316
+ - app/views/spree/admin/trackers/new.html.erb
317
+ - app/views/spree/shared/_google_add_items.html.erb
318
+ - app/views/spree/shared/_google_analytics.html.erb
319
+ - app/views/spree/shared/_google_checkout.html.erb
320
+ - app/views/spree/shared/_google_purchase.html.erb
321
+ - app/views/spree/shared/trackers/segment/_cart_viewed.js.erb
322
+ - app/views/spree/shared/trackers/segment/_checkout_step_viewed.js.erb
323
+ - app/views/spree/shared/trackers/segment/_initializer.js.erb
324
+ - app/views/spree/shared/trackers/segment/_order_complete.js.erb
325
+ - app/views/spree/shared/trackers/segment/_product_added.js.erb
326
+ - app/views/spree/shared/trackers/segment/_product_list_filtered.js.erb
327
+ - app/views/spree/shared/trackers/segment/_product_list_viewed.js.erb
328
+ - app/views/spree/shared/trackers/segment/_product_viewed.js.erb
329
+ - app/views/spree/shared/trackers/segment/_products_searched.js.erb
330
+ - bin/rails
331
+ - config/locales/en.yml
332
+ - config/routes.rb
333
+ - db/migrate/20171013160337_create_spree_trackers.rb
334
+ - gemfiles/.bundle/config
335
+ - gemfiles/spree_3_5.gemfile
336
+ - gemfiles/spree_3_7.gemfile
337
+ - gemfiles/spree_master.gemfile
338
+ - lib/generators/spree_analytics_trackers/install/install_generator.rb
339
+ - lib/spree_analytics_trackers.rb
340
+ - lib/spree_analytics_trackers/engine.rb
341
+ - lib/spree_analytics_trackers/factories.rb
342
+ - lib/spree_analytics_trackers/version.rb
343
+ - spec/features/admin/configuration/analytics_tracker_spec.rb
344
+ - spec/models/spree/tracker_spec.rb
345
+ - spec/spec_helper.rb
346
+ - spree_analytics_trackers.gemspec
283
347
  homepage: https://github.com/spree-contrib/spree_analytics_trackers
284
348
  licenses:
285
349
  - BSD-3-Clause
@@ -304,4 +368,7 @@ rubygems_version: 3.0.2
304
368
  signing_key:
305
369
  specification_version: 4
306
370
  summary: Adds analytics trackers functionality to Spree
307
- test_files: []
371
+ test_files:
372
+ - spec/features/admin/configuration/analytics_tracker_spec.rb
373
+ - spec/models/spree/tracker_spec.rb
374
+ - spec/spec_helper.rb