spree_frontend 3.2.1 → 3.2.2

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/spree_frontend.gemspec +2 -3
  3. metadata +10 -86
  4. data/spec/controllers/controller_extension_spec.rb +0 -126
  5. data/spec/controllers/controller_helpers_spec.rb +0 -122
  6. data/spec/controllers/spree/checkout_controller_spec.rb +0 -515
  7. data/spec/controllers/spree/checkout_controller_with_views_spec.rb +0 -36
  8. data/spec/controllers/spree/content_controller_spec.rb +0 -12
  9. data/spec/controllers/spree/current_order_tracking_spec.rb +0 -44
  10. data/spec/controllers/spree/home_controller_spec.rb +0 -47
  11. data/spec/controllers/spree/orders_controller_ability_spec.rb +0 -96
  12. data/spec/controllers/spree/orders_controller_spec.rb +0 -134
  13. data/spec/controllers/spree/orders_controller_transitions_spec.rb +0 -31
  14. data/spec/controllers/spree/products_controller_spec.rb +0 -87
  15. data/spec/controllers/spree/taxons_controller_spec.rb +0 -12
  16. data/spec/features/address_spec.rb +0 -93
  17. data/spec/features/automatic_promotion_adjustments_spec.rb +0 -47
  18. data/spec/features/caching/products_spec.rb +0 -59
  19. data/spec/features/caching/taxons_spec.rb +0 -22
  20. data/spec/features/cart_spec.rb +0 -132
  21. data/spec/features/checkout_spec.rb +0 -572
  22. data/spec/features/checkout_unshippable_spec.rb +0 -34
  23. data/spec/features/coupon_code_spec.rb +0 -88
  24. data/spec/features/currency_spec.rb +0 -18
  25. data/spec/features/delivery_spec.rb +0 -64
  26. data/spec/features/free_shipping_promotions_spec.rb +0 -59
  27. data/spec/features/locale_spec.rb +0 -60
  28. data/spec/features/microdata_spec.rb +0 -0
  29. data/spec/features/order_spec.rb +0 -107
  30. data/spec/features/page_promotions_spec.rb +0 -36
  31. data/spec/features/products_spec.rb +0 -334
  32. data/spec/features/taxons_spec.rb +0 -147
  33. data/spec/features/template_rendering_spec.rb +0 -19
  34. data/spec/fixtures/thinking-cat.jpg +0 -0
  35. data/spec/helpers/frontend_helper_spec.rb +0 -57
  36. data/spec/helpers/taxons_helper_spec.rb +0 -17
  37. data/spec/spec_helper.rb +0 -126
  38. data/spec/support/shared_contexts/checkout_setup.rb +0 -10
  39. data/spec/support/shared_contexts/custom_products.rb +0 -25
  40. data/spec/support/shared_contexts/product_prototypes.rb +0 -30
  41. data/spec/views/spree/checkout/_summary_spec.rb +0 -11
@@ -1,36 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- # This spec is useful for when we just want to make sure a view is rendering correctly
5
- # Walking through the entire checkout process is rather tedious, don't you think?
6
- describe Spree::CheckoutController, type: :controller do
7
- render_views
8
- let(:token) { 'some_token' }
9
- let(:user) { stub_model(Spree::LegacyUser) }
10
-
11
- before do
12
- allow(controller).to receive_messages try_spree_current_user: user
13
- end
14
-
15
- # Regression test for #3246
16
- context "when using GBP" do
17
- before do
18
- Spree::Config[:currency] = "GBP"
19
- end
20
-
21
- context "when order is in delivery" do
22
- before do
23
- # Using a let block won't acknowledge the currency setting
24
- # Therefore we just do it like this...
25
- order = OrderWalkthrough.up_to(:delivery)
26
- allow(controller).to receive_messages current_order: order
27
- end
28
-
29
- it "displays rate cost in correct currency" do
30
- spree_get :edit
31
- html = Nokogiri::HTML(response.body)
32
- expect(html.css('.rate-cost').text).to eq "£10.00"
33
- end
34
- end
35
- end
36
- end
@@ -1,12 +0,0 @@
1
- require 'spec_helper'
2
- describe Spree::ContentController, type: :controller do
3
- it "should not display a local file" do
4
- spree_get :show, path: "../../Gemfile"
5
- expect(response.response_code).to eq(404)
6
- end
7
-
8
- it "should display CVV page" do
9
- spree_get :cvv
10
- expect(response.response_code).to eq(200)
11
- end
12
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'current order tracking', type: :controller do
4
- let(:user) { create(:user) }
5
-
6
- controller(Spree::StoreController) do
7
- def index
8
- head :ok
9
- end
10
- end
11
-
12
- let(:order) { FactoryGirl.create(:order) }
13
-
14
- it 'automatically tracks who the order was created by & IP address' do
15
- allow(controller).to receive_messages(try_spree_current_user: user)
16
- get :index
17
- expect(controller.current_order(create_order_if_necessary: true).created_by).to eq controller.try_spree_current_user
18
- expect(controller.current_order.last_ip_address).to eq "0.0.0.0"
19
- end
20
-
21
- context "current order creation" do
22
- before { allow(controller).to receive_messages(try_spree_current_user: user) }
23
-
24
- it "doesn't create a new order out of the blue" do
25
- expect {
26
- spree_get :index
27
- }.not_to change { Spree::Order.count }
28
- end
29
- end
30
- end
31
-
32
- describe Spree::OrdersController, type: :controller do
33
- let(:user) { create(:user) }
34
-
35
- before { allow(controller).to receive_messages(try_spree_current_user: user) }
36
-
37
- describe Spree::OrdersController do
38
- it "doesn't create a new order out of the blue" do
39
- expect {
40
- spree_get :edit
41
- }.not_to change { Spree::Order.count }
42
- end
43
- end
44
- end
@@ -1,47 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::HomeController, type: :controller do
4
- it "provides current user to the searcher class" do
5
- user = mock_model(Spree.user_class, last_incomplete_spree_order: nil, spree_api_key: 'fake')
6
- allow(controller).to receive_messages try_spree_current_user: user
7
- expect_any_instance_of(Spree::Config.searcher_class).to receive(:current_user=).with(user)
8
- spree_get :index
9
- expect(response.status).to eq(200)
10
- end
11
-
12
- context "layout" do
13
- it "renders default layout" do
14
- spree_get :index
15
- expect(response).to render_template(layout: 'spree/layouts/spree_application')
16
- end
17
-
18
- context "different layout specified in config" do
19
- before { Spree::Config.layout = 'layouts/application' }
20
-
21
- it "renders specified layout" do
22
- spree_get :index
23
- expect(response).to render_template(layout: 'layouts/application')
24
- end
25
- end
26
- end
27
-
28
- context "index products" do
29
- it "calls includes when the retrieved_products object responds to it" do
30
- searcher = double("Searcher")
31
- allow(controller).to receive_messages build_searcher: searcher
32
- expect(searcher).to receive_message_chain("retrieve_products.includes")
33
-
34
- spree_get :index
35
- end
36
-
37
- it "does not call includes when it's not available" do
38
- searcher = double("Searcher")
39
- allow(controller).to receive_messages build_searcher: searcher
40
- allow(searcher).to receive(:retrieve_products).and_return([])
41
-
42
- spree_get :index
43
-
44
- expect(assigns(:products)).to eq([])
45
- end
46
- end
47
- end
@@ -1,96 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe OrdersController, type: :controller do
5
- let(:user) { create(:user) }
6
- let(:guest_user) { create(:user) }
7
- let(:order) { Spree::Order.create }
8
-
9
- context 'when an order exists in the cookies.signed' do
10
- let(:token) { 'some_token' }
11
- let(:specified_order) { create(:order) }
12
-
13
- before do
14
- cookies.signed[:guest_token] = token
15
- allow(controller).to receive_messages current_order: order
16
- allow(controller).to receive_messages spree_current_user: user
17
- end
18
-
19
- context '#populate' do
20
- it 'should check if user is authorized for :edit' do
21
- expect(controller).to receive(:authorize!).with(:edit, order, token)
22
- spree_post :populate
23
- end
24
- it "should check against the specified order" do
25
- expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
26
- spree_post :populate, id: specified_order.number
27
- end
28
- end
29
-
30
- context '#edit' do
31
- it 'should check if user is authorized for :edit' do
32
- expect(controller).to receive(:authorize!).with(:edit, order, token)
33
- spree_get :edit
34
- end
35
- it "should check against the specified order" do
36
- expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
37
- spree_get :edit, id: specified_order.number
38
- end
39
- end
40
-
41
- context '#update' do
42
- it 'should check if user is authorized for :edit' do
43
- allow(order).to receive :update_attributes
44
- expect(controller).to receive(:authorize!).with(:edit, order, token)
45
- spree_post :update, order: { email: "foo@bar.com" }
46
- end
47
- it "should check against the specified order" do
48
- allow(order).to receive :update_attributes
49
- expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
50
- spree_post :update, order: { email: "foo@bar.com" }, id: specified_order.number
51
- end
52
- end
53
-
54
- context '#empty' do
55
- it 'should check if user is authorized for :edit' do
56
- expect(controller).to receive(:authorize!).with(:edit, order, token)
57
- spree_post :empty
58
- end
59
- it "should check against the specified order" do
60
- expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
61
- spree_post :empty, id: specified_order.number
62
- end
63
- end
64
-
65
- context "#show" do
66
- it "should check against the specified order" do
67
- expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
68
- spree_get :show, id: specified_order.number
69
- end
70
- end
71
- end
72
-
73
- context 'when no authenticated user' do
74
- let(:order) { create(:order, number: 'R123') }
75
-
76
- context '#show' do
77
- context 'when guest_token correct' do
78
- before { cookies.signed[:guest_token] = order.guest_token }
79
-
80
- it 'displays the page' do
81
- expect(controller).to receive(:authorize!).with(:edit, order, order.guest_token)
82
- spree_get :show, { id: 'R123' }
83
- expect(response.code).to eq('200')
84
- end
85
- end
86
-
87
- context 'when guest_token not present' do
88
- it 'should respond with 404' do
89
- spree_get :show, { id: 'R123'}
90
- expect(response.code).to eq('404')
91
- end
92
- end
93
- end
94
- end
95
- end
96
- end
@@ -1,134 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::OrdersController, type: :controller do
4
- let(:user) { create(:user) }
5
-
6
- context "Order model mock" do
7
- let(:order) do
8
- Spree::Order.create!
9
- end
10
- let(:variant) { create(:variant) }
11
-
12
- before do
13
- allow(controller).to receive_messages(try_spree_current_user: user)
14
- end
15
-
16
- context "#populate" do
17
- it "should create a new order when none specified" do
18
- spree_post :populate, {}, {}
19
- expect(cookies.signed[:guest_token]).not_to be_blank
20
- expect(Spree::Order.find_by_guest_token(cookies.signed[:guest_token])).to be_persisted
21
- end
22
-
23
- context "with Variant" do
24
- it "should handle population" do
25
- expect do
26
- spree_post :populate, variant_id: variant.id, quantity: 5
27
- end.to change { user.orders.count }.by(1)
28
- order = user.orders.last
29
- expect(response).to redirect_to spree.cart_path
30
- expect(order.line_items.size).to eq(1)
31
- line_item = order.line_items.first
32
- expect(line_item.variant_id).to eq(variant.id)
33
- expect(line_item.quantity).to eq(5)
34
- end
35
-
36
- it "shows an error when population fails" do
37
- request.env["HTTP_REFERER"] = '/dummy_redirect'
38
- allow_any_instance_of(Spree::LineItem).to(
39
- receive(:valid?).and_return(false)
40
- )
41
- allow_any_instance_of(Spree::LineItem).to(
42
- receive_message_chain(:errors, :full_messages).
43
- and_return(["Order population failed"])
44
- )
45
-
46
- spree_post :populate, variant_id: variant.id, quantity: 5
47
-
48
- expect(response).to redirect_to('/dummy_redirect')
49
- expect(flash[:error]).to eq("Order population failed")
50
- end
51
-
52
- it "shows an error when quantity is invalid" do
53
- request.env["HTTP_REFERER"] = '/dummy_redirect'
54
-
55
- spree_post(
56
- :populate,
57
- variant_id: variant.id, quantity: -1
58
- )
59
-
60
- expect(response).to redirect_to('/dummy_redirect')
61
- expect(flash[:error]).to eq(
62
- Spree.t(:please_enter_reasonable_quantity)
63
- )
64
- end
65
- end
66
- end
67
-
68
- context "#update" do
69
- context "with authorization" do
70
- before do
71
- allow(controller).to receive :check_authorization
72
- allow(controller).to receive_messages current_order: order
73
- end
74
-
75
- it "should render the edit view (on failure)" do
76
- # email validation is only after address state
77
- order.update_column(:state, "delivery")
78
- spree_put :update, { order: { email: "" } }, { order_id: order.id }
79
- expect(response).to render_template :edit
80
- end
81
-
82
- it "should redirect to cart path (on success)" do
83
- allow(order).to receive(:update_attributes).and_return true
84
- spree_put :update, {}, {order_id: 1}
85
- expect(response).to redirect_to(spree.cart_path)
86
- end
87
- end
88
- end
89
-
90
- context "#empty" do
91
- before do
92
- allow(controller).to receive :check_authorization
93
- end
94
-
95
- it "should destroy line items in the current order" do
96
- allow(controller).to receive(:current_order).and_return(order)
97
- expect(order).to receive(:empty!)
98
- spree_put :empty
99
- expect(response).to redirect_to(spree.cart_path)
100
- end
101
- end
102
-
103
- # Regression test for #2750
104
- context "#update" do
105
- before do
106
- allow(user).to receive :last_incomplete_spree_order
107
- allow(controller).to receive :set_current_order
108
- end
109
-
110
- it "cannot update a blank order" do
111
- spree_put :update, order: { email: "foo" }
112
- expect(flash[:error]).to eq(Spree.t(:order_not_found))
113
- expect(response).to redirect_to(spree.root_path)
114
- end
115
- end
116
- end
117
-
118
- context "line items quantity is 0" do
119
- let(:order) { Spree::Order.create }
120
- let(:variant) { create(:variant) }
121
- let!(:line_item) { order.contents.add(variant, 1) }
122
-
123
- before do
124
- allow(controller).to receive(:check_authorization)
125
- allow(controller).to receive_messages(current_order: order)
126
- end
127
-
128
- it "removes line items on update" do
129
- expect(order.line_items.count).to eq 1
130
- spree_put :update, order: { line_items_attributes: { "0" => { id: line_item.id, quantity: 0 } } }
131
- expect(order.reload.line_items.count).to eq 0
132
- end
133
- end
134
- end
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- Spree::Order.class_eval do
4
- attr_accessor :did_transition
5
- end
6
-
7
- module Spree
8
- describe OrdersController, type: :controller do
9
- # Regression test for #2004
10
- context "with a transition callback on first state" do
11
- let(:order) { Spree::Order.new }
12
-
13
- before do
14
- allow(controller).to receive_messages current_order: order
15
- expect(controller).to receive(:authorize!).at_least(:once).and_return(true)
16
-
17
- first_state, _ = Spree::Order.checkout_steps.first
18
- Spree::Order.state_machine.after_transition to: first_state do |order|
19
- order.did_transition = true
20
- end
21
- end
22
-
23
- it "correctly calls the transition callback" do
24
- expect(order.did_transition).to be_nil
25
- order.line_items << FactoryGirl.create(:line_item)
26
- spree_put :update, { checkout: "checkout" }, { order_id: 1}
27
- expect(order.did_transition).to be true
28
- end
29
- end
30
- end
31
- end
@@ -1,87 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::ProductsController, type: :controller do
4
- let!(:product) { create(:product, available_on: 1.year.from_now) }
5
- let(:taxon) { create(:taxon) }
6
-
7
- # Regression test for #1390
8
- it "allows admins to view non-active products" do
9
- allow(controller).to receive_messages spree_current_user: mock_model(Spree.user_class, has_spree_role?: true, last_incomplete_spree_order: nil, spree_api_key: 'fake')
10
- spree_get :show, id: product.to_param
11
- expect(response.status).to eq(200)
12
- end
13
-
14
- it "cannot view non-active products" do
15
- spree_get :show, id: product.to_param
16
- expect(response.status).to eq(404)
17
- end
18
-
19
- it "should provide the current user to the searcher class" do
20
- user = mock_model(Spree.user_class, last_incomplete_spree_order: nil, spree_api_key: 'fake')
21
- allow(controller).to receive_messages spree_current_user: user
22
- expect_any_instance_of(Spree::Config.searcher_class).to receive(:current_user=).with(user)
23
- spree_get :index
24
- expect(response.status).to eq(200)
25
- end
26
-
27
- # Regression test for #2249
28
- it "doesn't error when given an invalid referer" do
29
- current_user = mock_model(Spree.user_class, has_spree_role?: true, last_incomplete_spree_order: nil, generate_spree_api_key!: nil)
30
- allow(controller).to receive_messages spree_current_user: current_user
31
- request.env['HTTP_REFERER'] = "not|a$url"
32
-
33
- # Previously a URI::InvalidURIError exception was being thrown
34
- expect { spree_get :show, id: product.to_param }.not_to raise_error
35
- end
36
-
37
- context 'with history slugs present' do
38
- let!(:product) { create(:product, available_on: 1.day.ago) }
39
-
40
- it 'will redirect with a 301 with legacy url used' do
41
- legacy_params = product.to_param
42
- product.name = product.name + " Brand New"
43
- product.slug = nil
44
- product.save!
45
- spree_get :show, id: legacy_params
46
- expect(response.status).to eq(301)
47
- end
48
-
49
- it 'will redirect with a 301 with id used' do
50
- product.name = product.name + " Brand New"
51
- product.slug = nil
52
- product.save!
53
- spree_get :show, id: product.id
54
- expect(response.status).to eq(301)
55
- end
56
-
57
- it "will keep url params on legacy url redirect" do
58
- legacy_params = product.to_param
59
- product.name = product.name + " Brand New"
60
- product.slug = nil
61
- product.save!
62
- spree_get :show, id: legacy_params, taxon_id: taxon.id
63
- expect(response.status).to eq(301)
64
- expect(response.header["Location"]).to include("taxon_id=#{taxon.id}")
65
- end
66
- end
67
-
68
- context "index products" do
69
- it "calls includes when the retrieved_products object responds to it" do
70
- searcher = double("Searcher")
71
- allow(controller).to receive_messages build_searcher: searcher
72
- expect(searcher).to receive_message_chain("retrieve_products.includes")
73
-
74
- spree_get :index
75
- end
76
-
77
- it "does not call includes when it's not available" do
78
- searcher = double("Searcher")
79
- allow(controller).to receive_messages build_searcher: searcher
80
- allow(searcher).to receive(:retrieve_products).and_return([])
81
-
82
- spree_get :index
83
-
84
- expect(assigns(:products)).to eq([])
85
- end
86
- end
87
- end