spree_events_tracker 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +73 -0
  3. data/Gemfile +7 -0
  4. data/LICENSE +26 -0
  5. data/README.md +45 -0
  6. data/Rakefile +21 -0
  7. data/app/assets/javascripts/spree/backend/spree_events_tracker.js +2 -0
  8. data/app/assets/javascripts/spree/frontend/spree_events_tracker.js +2 -0
  9. data/app/assets/stylesheets/spree/backend/spree_events_tracker.css +4 -0
  10. data/app/assets/stylesheets/spree/frontend/spree_events_tracker.css +4 -0
  11. data/app/controllers/concerns/spree/checkout_event_tracker.rb +28 -0
  12. data/app/controllers/concerns/spree/page_tracker.rb +55 -0
  13. data/app/controllers/spree/checkout_controller_decorator.rb +22 -0
  14. data/app/controllers/spree/home_controller_decorator.rb +4 -0
  15. data/app/controllers/spree/orders_controller_decorator.rb +32 -0
  16. data/app/controllers/spree/products_controller_decorator.rb +4 -0
  17. data/app/controllers/spree/taxons_controller_decorator.rb +4 -0
  18. data/app/models/concerns/spree/order_contents_decorator.rb +64 -0
  19. data/app/models/spree/cart_event.rb +25 -0
  20. data/app/models/spree/checkout_event.rb +13 -0
  21. data/app/models/spree/page_event.rb +17 -0
  22. data/app/trackers/spree/cart/event/tracker.rb +44 -0
  23. data/app/trackers/spree/checkout/event/tracker.rb +18 -0
  24. data/app/trackers/spree/event/tracker.rb +17 -0
  25. data/app/trackers/spree/page/event/tracker.rb +17 -0
  26. data/bin/rails +7 -0
  27. data/config/locales/en.yml +4 -0
  28. data/config/routes.rb +3 -0
  29. data/db/migrate/20160313145434_create_spree_cart_events.rb +15 -0
  30. data/db/migrate/20160314080710_create_spree_page_events.rb +14 -0
  31. data/db/migrate/20160314080822_create_spree_checkout_events.rb +14 -0
  32. data/lib/generators/spree_events_tracker/install/install_generator.rb +31 -0
  33. data/lib/spree_events_tracker.rb +2 -0
  34. data/lib/spree_events_tracker/engine.rb +20 -0
  35. data/lib/spree_events_tracker/factories.rb +6 -0
  36. data/spec/controllers/spree/checkout_controlller_decorator_spec.rb +131 -0
  37. data/spec/controllers/spree/orders_controller_decorator_spec.rb +136 -0
  38. data/spec/models/spree/cart_event_spec.rb +18 -0
  39. data/spec/models/spree/checkout_event_spec.rb +16 -0
  40. data/spec/models/spree/page_event_spec.rb +15 -0
  41. data/spec/spec_helper.rb +100 -0
  42. data/spec/trackers/spree/cart/event/tracker_spec.rb +67 -0
  43. data/spec/trackers/spree/checkout/event/tracker_spec.rb +33 -0
  44. data/spec/trackers/spree/event/tracker_spec.rb +29 -0
  45. data/spec/trackers/spree/page/event/tracker_spec.rb +32 -0
  46. data/spree_events_tracker.gemspec +37 -0
  47. metadata +303 -0
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::CartEvent do
4
+
5
+ describe 'associations' do
6
+ it { is_expected.to belong_to(:actor) }
7
+ it { is_expected.to belong_to(:target) }
8
+ end
9
+
10
+ describe 'validations' do
11
+ it { is_expected.to validate_presence_of(:quantity) }
12
+ it { is_expected.to validate_presence_of(:activity) }
13
+ it { is_expected.to validate_presence_of(:target) }
14
+ it { is_expected.to validate_presence_of(:actor) }
15
+ it { is_expected.to validate_presence_of(:total) }
16
+ end
17
+
18
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::CheckoutEvent do
4
+
5
+ describe 'associations' do
6
+ it { is_expected.to belong_to(:actor) }
7
+ it { is_expected.to belong_to(:target) }
8
+ end
9
+
10
+ describe 'validations' do
11
+ it { is_expected.to validate_presence_of(:session_id) }
12
+ it { is_expected.to validate_presence_of(:activity) }
13
+ it { is_expected.to validate_presence_of(:target) }
14
+ end
15
+
16
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::PageEvent do
4
+
5
+ describe 'associations' do
6
+ it { is_expected.to belong_to(:actor) }
7
+ it { is_expected.to belong_to(:target) }
8
+ end
9
+
10
+ describe 'validations' do
11
+ it { is_expected.to validate_presence_of(:session_id) }
12
+ it { is_expected.to validate_presence_of(:activity) }
13
+ end
14
+
15
+ end
@@ -0,0 +1,100 @@
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
+ require 'shoulda/matchers'
22
+ require 'rspec/active_model/mocks'
23
+
24
+ # Requires supporting ruby files with custom matchers and macros, etc,
25
+ # in spec/support/ and its subdirectories.
26
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
27
+
28
+ # Requires factories and other useful helpers defined in spree_core.
29
+ require 'spree/testing_support/authorization_helpers'
30
+ require 'spree/testing_support/capybara_ext'
31
+ require 'spree/testing_support/controller_requests'
32
+ require 'spree/testing_support/factories'
33
+ require 'spree/testing_support/url_helpers'
34
+
35
+ # Requires factories defined in lib/spree_events_tracker/factories.rb
36
+ require 'spree_events_tracker/factories'
37
+
38
+ RSpec.configure do |config|
39
+ config.include FactoryGirl::Syntax::Methods
40
+
41
+ # Infer an example group's spec type from the file location.
42
+ config.infer_spec_type_from_file_location!
43
+
44
+ # == URL Helpers
45
+ #
46
+ # Allows access to Spree's routes in specs:
47
+ #
48
+ # visit spree.admin_path
49
+ # current_path.should eql(spree.products_path)
50
+ config.include Spree::TestingSupport::UrlHelpers
51
+
52
+ # == Requests support
53
+ #
54
+ # Adds convenient methods to request Spree's controllers
55
+ # spree_get :index
56
+ config.include Spree::TestingSupport::ControllerRequests, type: :controller
57
+
58
+ # == Mock Framework
59
+ #
60
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
61
+ #
62
+ # config.mock_with :mocha
63
+ # config.mock_with :flexmock
64
+ # config.mock_with :rr
65
+ config.mock_with :rspec
66
+ config.color = true
67
+
68
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
69
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
70
+
71
+ # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
72
+ # to cleanup after each test instead. Without transactional fixtures set to false the records created
73
+ # to setup a test will be unavailable to the browser, which runs under a separate server instance.
74
+ config.use_transactional_fixtures = false
75
+
76
+ # Ensure Suite is set to use transactions for speed.
77
+ config.before :suite do
78
+ DatabaseCleaner.strategy = :transaction
79
+ DatabaseCleaner.clean_with :truncation
80
+ end
81
+
82
+ # Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary.
83
+ config.before :each do
84
+ DatabaseCleaner.strategy = RSpec.current_example.metadata[:js] ? :truncation : :transaction
85
+ DatabaseCleaner.start
86
+ end
87
+
88
+ # After each spec clean the database.
89
+ config.after :each do
90
+ DatabaseCleaner.clean
91
+ end
92
+
93
+ config.fail_fast = ENV['FAIL_FAST'] || false
94
+ config.order = "random"
95
+ config.include Spree::TestingSupport::ControllerRequests, type: :controller
96
+ config.infer_spec_type_from_file_location!
97
+
98
+ config.include(Shoulda::Matchers::ActiveModel, type: :model)
99
+ config.include(Shoulda::Matchers::ActiveRecord, type: :model)
100
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Cart::Event::Tracker do
4
+ let(:actor) { create(:order) }
5
+ let(:target) { create(:line_item) }
6
+ let(:tracker) { Spree::Cart::Event::Tracker.new(
7
+ activity: 'test_activity',
8
+ actor: actor,
9
+ target: target,
10
+ session_id: 'test_session_id',
11
+ referrer: 'test_referrer',
12
+ quantity: 'test_quantity',
13
+ total: 'test_total'
14
+ )
15
+ }
16
+
17
+ describe '#initialize' do
18
+ it { expect(tracker.instance_variable_get(:@activity)).to eq('test_activity') }
19
+ it { expect(tracker.instance_variable_get(:@actor)).to eq(actor) }
20
+ it { expect(tracker.instance_variable_get(:@target)).to eq(target) }
21
+ it { expect(tracker.instance_variable_get(:@referrer)).to eq('test_referrer') }
22
+ it { expect(tracker.instance_variable_get(:@session_id)).to eq('test_session_id') }
23
+ it { expect(tracker.instance_variable_get(:@quantity)).to eq('test_quantity') }
24
+ it { expect(tracker.instance_variable_get(:@total)).to eq('test_total') }
25
+ end
26
+
27
+ describe '#track' do
28
+ it 'should create CartEvent object' do
29
+ expect(tracker.track).to be_instance_of(Spree::CartEvent)
30
+ end
31
+ end
32
+
33
+ describe '#changed_quantity' do
34
+ let(:previous_quantity_changes) { target.previous_changes[:quantity].map(&:to_i) }
35
+
36
+ before do
37
+ target.quantity = 8
38
+ target.save
39
+ end
40
+
41
+ it 'should return previous quantity changes' do
42
+ expect(tracker.send(:changed_quantity, previous_quantity_changes)).to be_instance_of(Fixnum)
43
+ end
44
+ end
45
+
46
+ describe '#activity' do
47
+ context 'when item is added' do
48
+ let(:changed_quantity) { target.quantity }
49
+ it { expect(tracker.send(:activity, changed_quantity, target)).to eq(:add) }
50
+ end
51
+
52
+ context 'when item is removed' do
53
+ let(:changed_quantity) { -1 }
54
+
55
+ before do
56
+ target.quantity = 0
57
+ target.save
58
+ end
59
+
60
+ it { expect(tracker.send(:activity, changed_quantity, target)).to eq(:remove) }
61
+ end
62
+
63
+ context 'when item is updated' do
64
+ it { expect(tracker.send(:activity, 7, target)).to eq(:update) }
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Checkout::Event::Tracker do
4
+
5
+ let(:actor) { create(:user) }
6
+ let(:target) { create(:order) }
7
+ let(:tracker) { Spree::Checkout::Event::Tracker.new(
8
+ activity: 'test_activity',
9
+ actor: actor,
10
+ target: target,
11
+ session_id: 'test_session_id',
12
+ referrer: 'test_referrer',
13
+ previous_state: 'test_previous_state',
14
+ next_state: 'test_next_state'
15
+ )
16
+ }
17
+
18
+ describe '#initialize' do
19
+ it { expect(tracker.instance_variable_get(:@activity)).to eq('test_activity') }
20
+ it { expect(tracker.instance_variable_get(:@actor)).to eq(actor) }
21
+ it { expect(tracker.instance_variable_get(:@target)).to eq(target) }
22
+ it { expect(tracker.instance_variable_get(:@referrer)).to eq('test_referrer') }
23
+ it { expect(tracker.instance_variable_get(:@session_id)).to eq('test_session_id') }
24
+ it { expect(tracker.instance_variable_get(:@previous_state)).to eq('test_previous_state') }
25
+ it { expect(tracker.instance_variable_get(:@next_state)).to eq('test_next_state') }
26
+ end
27
+
28
+ describe '#track' do
29
+ it 'should create CheckoutEvent instance' do
30
+ expect(tracker.track).to be_instance_of(Spree::CheckoutEvent)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Event::Tracker do
4
+
5
+ let(:actor) { create(:user) }
6
+ let(:target) { create(:order) }
7
+ let(:tracker) { Spree::Event::Tracker.new(
8
+ activity: 'test_activity',
9
+ actor: actor,
10
+ target: target,
11
+ session_id: 'test_session_id',
12
+ referrer: 'test_referrer'
13
+ )
14
+ }
15
+
16
+ describe '#initialize' do
17
+ it { expect(tracker.instance_variable_get(:@activity)).to eq('test_activity') }
18
+ it { expect(tracker.instance_variable_get(:@actor)).to eq(actor) }
19
+ it { expect(tracker.instance_variable_get(:@target)).to eq(target) }
20
+ it { expect(tracker.instance_variable_get(:@referrer)).to eq('test_referrer') }
21
+ it { expect(tracker.instance_variable_get(:@session_id)).to eq('test_session_id') }
22
+ end
23
+
24
+ describe '#track' do
25
+ it 'should raise exception' do
26
+ expect{ tracker.track }.to raise_error('#track should be implemented in a sub-class of Event::Tracker')
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Page::Event::Tracker do
4
+
5
+ let(:actor) { create(:user) }
6
+ let(:target) { create(:order) }
7
+ let(:tracker) { Spree::Page::Event::Tracker.new(
8
+ activity: 'test_activity',
9
+ actor: actor,
10
+ target: target,
11
+ session_id: 'test_session_id',
12
+ referrer: 'test_referrer',
13
+ search_keywords: 'test_search_keywords',
14
+ next_state: 'test_next_state'
15
+ )
16
+ }
17
+
18
+ describe '#initialize' do
19
+ it { expect(tracker.instance_variable_get(:@activity)).to eq('test_activity') }
20
+ it { expect(tracker.instance_variable_get(:@actor)).to eq(actor) }
21
+ it { expect(tracker.instance_variable_get(:@target)).to eq(target) }
22
+ it { expect(tracker.instance_variable_get(:@referrer)).to eq('test_referrer') }
23
+ it { expect(tracker.instance_variable_get(:@session_id)).to eq('test_session_id') }
24
+ it { expect(tracker.instance_variable_get(:@search_keywords)).to eq('test_search_keywords') }
25
+ end
26
+
27
+ describe '#track' do
28
+ it 'should create PageEvent object' do
29
+ expect(tracker.track).to be_instance_of(Spree::PageEvent)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: UTF-8
2
+ Gem::Specification.new do |s|
3
+ s.platform = Gem::Platform::RUBY
4
+ s.name = 'spree_events_tracker'
5
+ s.version = '3.2.1'
6
+ s.summary = 'Spree Events Tracker is a spree extension used to track various user activities'
7
+ s.description = 'Track keywords search, checkout events, add to cart, remove from cart and other events.'
8
+ s.required_ruby_version = '>= 2.1.0'
9
+
10
+ s.author = ['Nimish Gupta', 'Tanmay Sinha', 'Nimish Mehta', "+ Vinsol Team"]
11
+ s.email = 'info@vinsol.com'
12
+ s.homepage = 'http://vinsol.com'
13
+ s.license = 'BSD-3'
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.require_path = 'lib'
18
+ s.requirements << 'none'
19
+
20
+ spree_version = '~> 3.2.0'
21
+
22
+ s.add_dependency 'spree_core', spree_version
23
+ s.add_development_dependency 'capybara', '~> 2.6'
24
+ s.add_development_dependency 'coffee-rails', '~> 4.2'
25
+ s.add_development_dependency 'database_cleaner', '~> 1.5.0'
26
+ s.add_development_dependency 'factory_girl', '~> 4.5'
27
+ s.add_development_dependency 'ffaker', '~> 2.2.0'
28
+ s.add_development_dependency 'rspec-activemodel-mocks', '~> 1.0.3'
29
+ s.add_development_dependency 'rspec-rails', '~> 3.4'
30
+ s.add_development_dependency 'sass-rails', '~> 5.0.0'
31
+ s.add_development_dependency 'selenium-webdriver', '~> 2.53.0'
32
+ s.add_development_dependency 'shoulda-matchers', '~> 3.1.1'
33
+ s.add_development_dependency 'simplecov', '~> 0.13.0'
34
+ s.add_development_dependency 'sqlite3', '~> 1.3.0'
35
+ s.add_development_dependency 'spree_backend', spree_version
36
+ s.add_development_dependency 'spree_frontend', spree_version
37
+ end
metadata ADDED
@@ -0,0 +1,303 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_events_tracker
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.2.1
5
+ platform: ruby
6
+ authors:
7
+ - Nimish Gupta
8
+ - Tanmay Sinha
9
+ - Nimish Mehta
10
+ - "+ Vinsol Team"
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2017-05-18 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: spree_core
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: 3.2.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: capybara
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: '2.6'
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '2.6'
44
+ - !ruby/object:Gem::Dependency
45
+ name: coffee-rails
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '4.2'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '4.2'
58
+ - !ruby/object:Gem::Dependency
59
+ name: database_cleaner
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: 1.5.0
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: 1.5.0
72
+ - !ruby/object:Gem::Dependency
73
+ name: factory_girl
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - "~>"
77
+ - !ruby/object:Gem::Version
78
+ version: '4.5'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: '4.5'
86
+ - !ruby/object:Gem::Dependency
87
+ name: ffaker
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: 2.2.0
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: 2.2.0
100
+ - !ruby/object:Gem::Dependency
101
+ name: rspec-activemodel-mocks
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: 1.0.3
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: 1.0.3
114
+ - !ruby/object:Gem::Dependency
115
+ name: rspec-rails
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: '3.4'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '3.4'
128
+ - !ruby/object:Gem::Dependency
129
+ name: sass-rails
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: 5.0.0
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: 5.0.0
142
+ - !ruby/object:Gem::Dependency
143
+ name: selenium-webdriver
144
+ requirement: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: 2.53.0
149
+ type: :development
150
+ prerelease: false
151
+ version_requirements: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - "~>"
154
+ - !ruby/object:Gem::Version
155
+ version: 2.53.0
156
+ - !ruby/object:Gem::Dependency
157
+ name: shoulda-matchers
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: 3.1.1
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: 3.1.1
170
+ - !ruby/object:Gem::Dependency
171
+ name: simplecov
172
+ requirement: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - "~>"
175
+ - !ruby/object:Gem::Version
176
+ version: 0.13.0
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: 0.13.0
184
+ - !ruby/object:Gem::Dependency
185
+ name: sqlite3
186
+ requirement: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - "~>"
189
+ - !ruby/object:Gem::Version
190
+ version: 1.3.0
191
+ type: :development
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
196
+ - !ruby/object:Gem::Version
197
+ version: 1.3.0
198
+ - !ruby/object:Gem::Dependency
199
+ name: spree_backend
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: 3.2.0
205
+ type: :development
206
+ prerelease: false
207
+ version_requirements: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - "~>"
210
+ - !ruby/object:Gem::Version
211
+ version: 3.2.0
212
+ - !ruby/object:Gem::Dependency
213
+ name: spree_frontend
214
+ requirement: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - "~>"
217
+ - !ruby/object:Gem::Version
218
+ version: 3.2.0
219
+ type: :development
220
+ prerelease: false
221
+ version_requirements: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - "~>"
224
+ - !ruby/object:Gem::Version
225
+ version: 3.2.0
226
+ description: Track keywords search, checkout events, add to cart, remove from cart
227
+ and other events.
228
+ email: info@vinsol.com
229
+ executables: []
230
+ extensions: []
231
+ extra_rdoc_files: []
232
+ files:
233
+ - ".gitignore"
234
+ - Gemfile
235
+ - LICENSE
236
+ - README.md
237
+ - Rakefile
238
+ - app/assets/javascripts/spree/backend/spree_events_tracker.js
239
+ - app/assets/javascripts/spree/frontend/spree_events_tracker.js
240
+ - app/assets/stylesheets/spree/backend/spree_events_tracker.css
241
+ - app/assets/stylesheets/spree/frontend/spree_events_tracker.css
242
+ - app/controllers/concerns/spree/checkout_event_tracker.rb
243
+ - app/controllers/concerns/spree/page_tracker.rb
244
+ - app/controllers/spree/checkout_controller_decorator.rb
245
+ - app/controllers/spree/home_controller_decorator.rb
246
+ - app/controllers/spree/orders_controller_decorator.rb
247
+ - app/controllers/spree/products_controller_decorator.rb
248
+ - app/controllers/spree/taxons_controller_decorator.rb
249
+ - app/models/concerns/spree/order_contents_decorator.rb
250
+ - app/models/spree/cart_event.rb
251
+ - app/models/spree/checkout_event.rb
252
+ - app/models/spree/page_event.rb
253
+ - app/trackers/spree/cart/event/tracker.rb
254
+ - app/trackers/spree/checkout/event/tracker.rb
255
+ - app/trackers/spree/event/tracker.rb
256
+ - app/trackers/spree/page/event/tracker.rb
257
+ - bin/rails
258
+ - config/locales/en.yml
259
+ - config/routes.rb
260
+ - db/migrate/20160313145434_create_spree_cart_events.rb
261
+ - db/migrate/20160314080710_create_spree_page_events.rb
262
+ - db/migrate/20160314080822_create_spree_checkout_events.rb
263
+ - lib/generators/spree_events_tracker/install/install_generator.rb
264
+ - lib/spree_events_tracker.rb
265
+ - lib/spree_events_tracker/engine.rb
266
+ - lib/spree_events_tracker/factories.rb
267
+ - spec/controllers/spree/checkout_controlller_decorator_spec.rb
268
+ - spec/controllers/spree/orders_controller_decorator_spec.rb
269
+ - spec/models/spree/cart_event_spec.rb
270
+ - spec/models/spree/checkout_event_spec.rb
271
+ - spec/models/spree/page_event_spec.rb
272
+ - spec/spec_helper.rb
273
+ - spec/trackers/spree/cart/event/tracker_spec.rb
274
+ - spec/trackers/spree/checkout/event/tracker_spec.rb
275
+ - spec/trackers/spree/event/tracker_spec.rb
276
+ - spec/trackers/spree/page/event/tracker_spec.rb
277
+ - spree_events_tracker.gemspec
278
+ homepage: http://vinsol.com
279
+ licenses:
280
+ - BSD-3
281
+ metadata: {}
282
+ post_install_message:
283
+ rdoc_options: []
284
+ require_paths:
285
+ - lib
286
+ required_ruby_version: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ version: 2.1.0
291
+ required_rubygems_version: !ruby/object:Gem::Requirement
292
+ requirements:
293
+ - - ">="
294
+ - !ruby/object:Gem::Version
295
+ version: '0'
296
+ requirements:
297
+ - none
298
+ rubyforge_project:
299
+ rubygems_version: 2.4.5.1
300
+ signing_key:
301
+ specification_version: 4
302
+ summary: Spree Events Tracker is a spree extension used to track various user activities
303
+ test_files: []