spree_frontend 3.2.9 → 3.3.0.rc1

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/checkout_controller.rb +8 -2
  3. data/app/controllers/spree/orders_controller.rb +7 -3
  4. data/app/controllers/spree/products_controller.rb +3 -1
  5. data/app/helpers/spree/frontend_helper.rb +1 -1
  6. data/app/helpers/spree/taxons_helper.rb +2 -3
  7. data/app/views/spree/checkout/_confirm.html.erb +3 -0
  8. data/app/views/spree/checkout/_summary.html.erb +1 -1
  9. data/app/views/spree/checkout/payment/_storecredit.html.erb +1 -0
  10. data/app/views/spree/products/_cart_form.html.erb +3 -3
  11. data/app/views/spree/shared/_main_nav_bar.html.erb +1 -1
  12. data/app/views/spree/shared/_order_details.html.erb +0 -1
  13. data/app/views/spree/shared/_products.html.erb +4 -1
  14. data/spec/controllers/controller_extension_spec.rb +126 -0
  15. data/spec/controllers/controller_helpers_spec.rb +122 -0
  16. data/spec/controllers/spree/checkout_controller_spec.rb +547 -0
  17. data/spec/controllers/spree/checkout_controller_with_views_spec.rb +36 -0
  18. data/spec/controllers/spree/content_controller_spec.rb +12 -0
  19. data/spec/controllers/spree/current_order_tracking_spec.rb +44 -0
  20. data/spec/controllers/spree/home_controller_spec.rb +47 -0
  21. data/spec/controllers/spree/orders_controller_ability_spec.rb +96 -0
  22. data/spec/controllers/spree/orders_controller_spec.rb +134 -0
  23. data/spec/controllers/spree/orders_controller_transitions_spec.rb +31 -0
  24. data/spec/controllers/spree/products_controller_spec.rb +87 -0
  25. data/spec/controllers/spree/taxons_controller_spec.rb +12 -0
  26. data/spec/features/address_spec.rb +93 -0
  27. data/spec/features/automatic_promotion_adjustments_spec.rb +47 -0
  28. data/spec/features/caching/products_spec.rb +59 -0
  29. data/spec/features/caching/taxons_spec.rb +22 -0
  30. data/spec/features/cart_spec.rb +132 -0
  31. data/spec/features/checkout_spec.rb +723 -0
  32. data/spec/features/checkout_unshippable_spec.rb +34 -0
  33. data/spec/features/coupon_code_spec.rb +88 -0
  34. data/spec/features/currency_spec.rb +18 -0
  35. data/spec/features/delivery_spec.rb +64 -0
  36. data/spec/features/free_shipping_promotions_spec.rb +59 -0
  37. data/spec/features/locale_spec.rb +60 -0
  38. data/spec/features/microdata_spec.rb +0 -0
  39. data/spec/features/order_spec.rb +107 -0
  40. data/spec/features/page_promotions_spec.rb +36 -0
  41. data/spec/features/products_spec.rb +345 -0
  42. data/spec/features/taxons_spec.rb +147 -0
  43. data/spec/features/template_rendering_spec.rb +19 -0
  44. data/spec/helpers/frontend_helper_spec.rb +57 -0
  45. data/spec/helpers/taxons_helper_spec.rb +17 -0
  46. data/spec/spec_helper.rb +128 -0
  47. data/spec/support/shared_contexts/checkout_setup.rb +10 -0
  48. data/spec/support/shared_contexts/custom_products.rb +25 -0
  49. data/spec/support/shared_contexts/product_prototypes.rb +30 -0
  50. data/spec/views/spree/checkout/_summary_spec.rb +11 -0
  51. data/spree_frontend.gemspec +5 -4
  52. metadata +90 -15
@@ -0,0 +1,128 @@
1
+ if ENV["COVERAGE"]
2
+ # Run Coverage report
3
+ require 'simplecov'
4
+ SimpleCov.start do
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
+ end
13
+
14
+ # This file is copied to ~/spec when you run 'ruby script/generate rspec'
15
+ # from the project root directory.
16
+ ENV["RAILS_ENV"] ||= 'test'
17
+
18
+ begin
19
+ require File.expand_path("../dummy/config/environment", __FILE__)
20
+ rescue LoadError
21
+ puts "Could not load dummy application. Please ensure you have run `bundle exec rake test_app`"
22
+ exit
23
+ end
24
+
25
+ require 'rspec/rails'
26
+ require 'ffaker'
27
+
28
+ # Requires supporting files with custom matchers and macros, etc,
29
+ # in ./support/ and its subdirectories.
30
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
31
+
32
+ require 'database_cleaner'
33
+
34
+ if ENV["CHECK_TRANSLATIONS"]
35
+ require "spree/testing_support/i18n"
36
+ end
37
+
38
+ require 'spree/testing_support/authorization_helpers'
39
+ require 'spree/testing_support/capybara_ext'
40
+ require 'spree/testing_support/factories'
41
+ require 'spree/testing_support/preferences'
42
+ require 'spree/testing_support/controller_requests'
43
+ require 'spree/testing_support/flash'
44
+ require 'spree/testing_support/url_helpers'
45
+ require 'spree/testing_support/order_walkthrough'
46
+ require 'spree/testing_support/caching'
47
+ require 'spree/testing_support/shoulda_matcher_configuration'
48
+
49
+ require 'paperclip/matchers'
50
+
51
+ require 'capybara-screenshot/rspec'
52
+ Capybara.save_path = ENV['CIRCLE_ARTIFACTS'] if ENV['CIRCLE_ARTIFACTS']
53
+
54
+ if ENV['WEBDRIVER'] == 'accessible'
55
+ require 'capybara/accessible'
56
+ Capybara.javascript_driver = :accessible
57
+ else
58
+ require 'capybara/poltergeist'
59
+ Capybara.javascript_driver = :poltergeist
60
+ end
61
+
62
+ RSpec.configure do |config|
63
+ config.color = true
64
+ config.fail_fast = ENV['FAIL_FAST'] || false
65
+ config.fixture_path = File.join(File.expand_path(File.dirname(__FILE__)), "fixtures")
66
+ config.infer_spec_type_from_file_location!
67
+ config.mock_with :rspec
68
+ config.raise_errors_for_deprecations!
69
+
70
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
71
+ # examples within a transaction, comment the following line or assign false
72
+ # instead of true.
73
+ config.use_transactional_fixtures = false
74
+
75
+ if ENV['WEBDRIVER'] == 'accessible'
76
+ config.around(:each, inaccessible: true) do |example|
77
+ Capybara::Accessible.skip_audit { example.run }
78
+ end
79
+ end
80
+
81
+ # Ensure DB is clean, so that transaction isolated specs see
82
+ # pristine state.
83
+ config.before(:suite) do
84
+ DatabaseCleaner.strategy = :truncation
85
+ DatabaseCleaner.clean
86
+ end
87
+
88
+ config.before(:each) do
89
+ WebMock.disable!
90
+ if RSpec.current_example.metadata[:js]
91
+ DatabaseCleaner.strategy = :truncation
92
+ else
93
+ DatabaseCleaner.strategy = :transaction
94
+ end
95
+ # TODO: Find out why open_transactions ever gets below 0
96
+ # See issue #3428
97
+ if ApplicationRecord.connection.open_transactions < 0
98
+ ApplicationRecord.connection.increment_open_transactions
99
+ end
100
+ DatabaseCleaner.start
101
+ reset_spree_preferences
102
+ end
103
+
104
+ config.after(:each) do
105
+ DatabaseCleaner.clean
106
+ end
107
+
108
+ config.after(:each, type: :feature) do |example|
109
+ missing_translations = page.body.scan(/translation missing: #{I18n.locale}\.(.*?)[\s<\"&]/)
110
+ if missing_translations.any?
111
+ puts "Found missing translations: #{missing_translations.inspect}"
112
+ puts "In spec: #{example.location}"
113
+ end
114
+ end
115
+
116
+
117
+ config.include FactoryGirl::Syntax::Methods
118
+
119
+ config.include Spree::TestingSupport::Preferences
120
+ config.include Spree::TestingSupport::UrlHelpers
121
+ config.include Spree::TestingSupport::ControllerRequests, type: :controller
122
+ config.include Spree::TestingSupport::Flash
123
+
124
+ config.include Paperclip::Shoulda::Matchers
125
+
126
+ config.order = :random
127
+ Kernel.srand config.seed
128
+ end
@@ -0,0 +1,10 @@
1
+ shared_context 'checkout setup' do
2
+ let!(:country) { create(:country, states_required: true) }
3
+ let!(:state) { create(:state, country: country) }
4
+ let!(:shipping_method) { create(:shipping_method) }
5
+ let!(:stock_location) { create(:stock_location) }
6
+ let!(:mug) { create(:product, name: "RoR Mug") }
7
+ let!(:payment_method) { create(:check_payment_method) }
8
+ let!(:zone) { create(:zone) }
9
+ let!(:store) { create(:store) }
10
+ end
@@ -0,0 +1,25 @@
1
+ shared_context "custom products" do
2
+ before(:each) do
3
+ taxonomy = FactoryGirl.create(:taxonomy, name: 'Categories')
4
+ root = taxonomy.root
5
+ clothing_taxon = FactoryGirl.create(:taxon, name: 'Clothing', parent_id: root.id)
6
+ bags_taxon = FactoryGirl.create(:taxon, name: 'Bags', parent_id: root.id)
7
+ mugs_taxon = FactoryGirl.create(:taxon, name: 'Mugs', parent_id: root.id)
8
+
9
+ taxonomy = FactoryGirl.create(:taxonomy, name: 'Brands')
10
+ root = taxonomy.root
11
+ apache_taxon = FactoryGirl.create(:taxon, name: 'Apache', parent_id: root.id)
12
+ rails_taxon = FactoryGirl.create(:taxon, name: 'Ruby on Rails', parent_id: root.id)
13
+ ruby_taxon = FactoryGirl.create(:taxon, name: 'Ruby', parent_id: root.id)
14
+
15
+ FactoryGirl.create(:custom_product, name: 'Ruby on Rails Ringer T-Shirt', price: '19.99', taxons: [rails_taxon, clothing_taxon])
16
+ FactoryGirl.create(:custom_product, name: 'Ruby on Rails Mug', price: '15.99', taxons: [rails_taxon, mugs_taxon])
17
+ FactoryGirl.create(:custom_product, name: 'Ruby on Rails Tote', price: '15.99', taxons: [rails_taxon, bags_taxon])
18
+ FactoryGirl.create(:custom_product, name: 'Ruby on Rails Bag', price: '22.99', taxons: [rails_taxon, bags_taxon])
19
+ FactoryGirl.create(:custom_product, name: 'Ruby on Rails Baseball Jersey', price: '19.99', taxons: [rails_taxon, clothing_taxon])
20
+ FactoryGirl.create(:custom_product, name: 'Ruby on Rails Stein', price: '16.99', taxons: [rails_taxon, mugs_taxon])
21
+ FactoryGirl.create(:custom_product, name: 'Ruby on Rails Jr. Spaghetti', price: '19.99', taxons: [rails_taxon, clothing_taxon])
22
+ FactoryGirl.create(:custom_product, name: 'Ruby Baseball Jersey', price: '19.99', taxons: [ruby_taxon, clothing_taxon])
23
+ FactoryGirl.create(:custom_product, name: 'Apache Baseball Jersey', price: '19.99', taxons: [apache_taxon, clothing_taxon])
24
+ end
25
+ end
@@ -0,0 +1,30 @@
1
+ shared_context "product prototype" do
2
+
3
+ def build_option_type_with_values(name, values)
4
+ ot = FactoryGirl.create(:option_type, name: name)
5
+ values.each do |val|
6
+ ot.option_values.create(name: val.downcase, presentation: val)
7
+ end
8
+ ot
9
+ end
10
+
11
+ let(:product_attributes) do
12
+ # FactoryGirl.attributes_for is un-deprecated!
13
+ # https://github.com/thoughtbot/factory_girl/issues/274#issuecomment-3592054
14
+ FactoryGirl.attributes_for(:base_product)
15
+ end
16
+
17
+ let(:prototype) do
18
+ size = build_option_type_with_values("size", %w(Small Medium Large))
19
+ FactoryGirl.create(:prototype, name: "Size", option_types: [ size ])
20
+ end
21
+
22
+ let(:option_values_hash) do
23
+ hash = {}
24
+ prototype.option_types.each do |i|
25
+ hash[i.id.to_s] = i.option_value_ids
26
+ end
27
+ hash
28
+ end
29
+
30
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe "spree/checkout/_summary.html.erb", type: :view do
4
+ # Regression spec for #4223
5
+ it "does not use the @order instance variable" do
6
+ order = stub_model(Spree::Order)
7
+ expect do
8
+ render partial: "spree/checkout/summary", locals: {order: order}
9
+ end.not_to raise_error
10
+ end
11
+ end
@@ -8,14 +8,15 @@ Gem::Specification.new do |s|
8
8
  s.summary = 'Frontend e-commerce functionality for the Spree project.'
9
9
  s.description = s.summary
10
10
 
11
- s.required_ruby_version = '>= 2.2.2'
11
+ s.required_ruby_version = '>= 2.2.7'
12
12
 
13
13
  s.author = 'Sean Schofield'
14
14
  s.email = 'sean@spreecommerce.com'
15
15
  s.homepage = 'https://spreecommerce.com'
16
16
  s.license = 'BSD-3-Clause'
17
17
 
18
- s.files = `git ls-files`.split("\n").reject { |f| f.match(/^spec/) && !f.match(/^spec\/fixtures/) }
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
20
  s.require_path = 'lib'
20
21
  s.requirements << 'none'
21
22
 
@@ -23,8 +24,8 @@ Gem::Specification.new do |s|
23
24
  s.add_dependency 'spree_core', s.version
24
25
 
25
26
  s.add_dependency 'bootstrap-sass', '>= 3.3.5.1', '< 3.4'
26
- s.add_dependency 'canonical-rails', '~> 0.1.0'
27
- s.add_dependency 'jquery-rails', '~> 4.3'
27
+ s.add_dependency 'canonical-rails', '~> 0.2.0'
28
+ s.add_dependency 'jquery-rails', '~> 4.1'
28
29
 
29
30
  s.add_development_dependency 'capybara-accessible'
30
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_frontend
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.9
4
+ version: 3.3.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-24 00:00:00.000000000 Z
11
+ date: 2017-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree_api
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.9
19
+ version: 3.3.0.rc1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 3.2.9
26
+ version: 3.3.0.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: spree_core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 3.2.9
33
+ version: 3.3.0.rc1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 3.2.9
40
+ version: 3.3.0.rc1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bootstrap-sass
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -64,28 +64,28 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 0.1.0
67
+ version: 0.2.0
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 0.1.0
74
+ version: 0.2.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: jquery-rails
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '4.3'
81
+ version: '4.1'
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '4.3'
88
+ version: '4.1'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: capybara-accessible
91
91
  requirement: !ruby/object:Gem::Requirement
@@ -230,7 +230,44 @@ files:
230
230
  - lib/tasks/rake_util.rb
231
231
  - lib/tasks/taxon.rake
232
232
  - script/rails
233
+ - spec/controllers/controller_extension_spec.rb
234
+ - spec/controllers/controller_helpers_spec.rb
235
+ - spec/controllers/spree/checkout_controller_spec.rb
236
+ - spec/controllers/spree/checkout_controller_with_views_spec.rb
237
+ - spec/controllers/spree/content_controller_spec.rb
238
+ - spec/controllers/spree/current_order_tracking_spec.rb
239
+ - spec/controllers/spree/home_controller_spec.rb
240
+ - spec/controllers/spree/orders_controller_ability_spec.rb
241
+ - spec/controllers/spree/orders_controller_spec.rb
242
+ - spec/controllers/spree/orders_controller_transitions_spec.rb
243
+ - spec/controllers/spree/products_controller_spec.rb
244
+ - spec/controllers/spree/taxons_controller_spec.rb
245
+ - spec/features/address_spec.rb
246
+ - spec/features/automatic_promotion_adjustments_spec.rb
247
+ - spec/features/caching/products_spec.rb
248
+ - spec/features/caching/taxons_spec.rb
249
+ - spec/features/cart_spec.rb
250
+ - spec/features/checkout_spec.rb
251
+ - spec/features/checkout_unshippable_spec.rb
252
+ - spec/features/coupon_code_spec.rb
253
+ - spec/features/currency_spec.rb
254
+ - spec/features/delivery_spec.rb
255
+ - spec/features/free_shipping_promotions_spec.rb
256
+ - spec/features/locale_spec.rb
257
+ - spec/features/microdata_spec.rb
258
+ - spec/features/order_spec.rb
259
+ - spec/features/page_promotions_spec.rb
260
+ - spec/features/products_spec.rb
261
+ - spec/features/taxons_spec.rb
262
+ - spec/features/template_rendering_spec.rb
233
263
  - spec/fixtures/thinking-cat.jpg
264
+ - spec/helpers/frontend_helper_spec.rb
265
+ - spec/helpers/taxons_helper_spec.rb
266
+ - spec/spec_helper.rb
267
+ - spec/support/shared_contexts/checkout_setup.rb
268
+ - spec/support/shared_contexts/custom_products.rb
269
+ - spec/support/shared_contexts/product_prototypes.rb
270
+ - spec/views/spree/checkout/_summary_spec.rb
234
271
  - spree_frontend.gemspec
235
272
  - vendor/assets/javascripts/jquery.validate/additional-methods.min.js
236
273
  - vendor/assets/javascripts/jquery.validate/jquery.validate.min.js
@@ -294,17 +331,55 @@ required_ruby_version: !ruby/object:Gem::Requirement
294
331
  requirements:
295
332
  - - ">="
296
333
  - !ruby/object:Gem::Version
297
- version: 2.2.2
334
+ version: 2.2.7
298
335
  required_rubygems_version: !ruby/object:Gem::Requirement
299
336
  requirements:
300
- - - ">="
337
+ - - ">"
301
338
  - !ruby/object:Gem::Version
302
- version: '0'
339
+ version: 1.3.1
303
340
  requirements:
304
341
  - none
305
342
  rubyforge_project:
306
- rubygems_version: 2.6.10
343
+ rubygems_version: 2.6.12
307
344
  signing_key:
308
345
  specification_version: 4
309
346
  summary: Frontend e-commerce functionality for the Spree project.
310
- test_files: []
347
+ test_files:
348
+ - spec/controllers/controller_extension_spec.rb
349
+ - spec/controllers/controller_helpers_spec.rb
350
+ - spec/controllers/spree/checkout_controller_spec.rb
351
+ - spec/controllers/spree/checkout_controller_with_views_spec.rb
352
+ - spec/controllers/spree/content_controller_spec.rb
353
+ - spec/controllers/spree/current_order_tracking_spec.rb
354
+ - spec/controllers/spree/home_controller_spec.rb
355
+ - spec/controllers/spree/orders_controller_ability_spec.rb
356
+ - spec/controllers/spree/orders_controller_spec.rb
357
+ - spec/controllers/spree/orders_controller_transitions_spec.rb
358
+ - spec/controllers/spree/products_controller_spec.rb
359
+ - spec/controllers/spree/taxons_controller_spec.rb
360
+ - spec/features/address_spec.rb
361
+ - spec/features/automatic_promotion_adjustments_spec.rb
362
+ - spec/features/caching/products_spec.rb
363
+ - spec/features/caching/taxons_spec.rb
364
+ - spec/features/cart_spec.rb
365
+ - spec/features/checkout_spec.rb
366
+ - spec/features/checkout_unshippable_spec.rb
367
+ - spec/features/coupon_code_spec.rb
368
+ - spec/features/currency_spec.rb
369
+ - spec/features/delivery_spec.rb
370
+ - spec/features/free_shipping_promotions_spec.rb
371
+ - spec/features/locale_spec.rb
372
+ - spec/features/microdata_spec.rb
373
+ - spec/features/order_spec.rb
374
+ - spec/features/page_promotions_spec.rb
375
+ - spec/features/products_spec.rb
376
+ - spec/features/taxons_spec.rb
377
+ - spec/features/template_rendering_spec.rb
378
+ - spec/fixtures/thinking-cat.jpg
379
+ - spec/helpers/frontend_helper_spec.rb
380
+ - spec/helpers/taxons_helper_spec.rb
381
+ - spec/spec_helper.rb
382
+ - spec/support/shared_contexts/checkout_setup.rb
383
+ - spec/support/shared_contexts/custom_products.rb
384
+ - spec/support/shared_contexts/product_prototypes.rb
385
+ - spec/views/spree/checkout/_summary_spec.rb