spree_frontend 3.2.9 → 3.3.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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