spree_api 2.4.0.rc2 → 2.4.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/api/base_controller.rb +4 -6
  3. data/app/controllers/spree/api/option_types_controller.rb +2 -2
  4. data/app/controllers/spree/api/orders_controller.rb +9 -1
  5. data/app/controllers/spree/api/return_authorizations_controller.rb +0 -9
  6. data/app/controllers/spree/api/taxons_controller.rb +3 -3
  7. data/app/helpers/spree/api/api_helpers.rb +0 -2
  8. data/app/views/spree/api/orders/show.v1.rabl +4 -0
  9. data/app/views/spree/api/products/show.v1.rabl +4 -0
  10. data/app/views/spree/api/shipments/small.v1.rabl +4 -0
  11. data/lib/spree/api/testing_support/helpers.rb +6 -6
  12. data/lib/spree/api/testing_support/setup.rb +2 -2
  13. data/spec/controllers/spree/api/addresses_controller_spec.rb +8 -8
  14. data/spec/controllers/spree/api/base_controller_spec.rb +22 -22
  15. data/spec/controllers/spree/api/checkouts_controller_spec.rb +53 -53
  16. data/spec/controllers/spree/api/classifications_controller_spec.rb +5 -5
  17. data/spec/controllers/spree/api/config_controller_spec.rb +9 -9
  18. data/spec/controllers/spree/api/countries_controller_spec.rb +11 -11
  19. data/spec/controllers/spree/api/credit_cards_controller_spec.rb +16 -16
  20. data/spec/controllers/spree/api/images_controller_spec.rb +21 -21
  21. data/spec/controllers/spree/api/inventory_units_controller_spec.rb +6 -6
  22. data/spec/controllers/spree/api/line_items_controller_spec.rb +33 -33
  23. data/spec/controllers/spree/api/option_types_controller_spec.rb +19 -19
  24. data/spec/controllers/spree/api/option_values_controller_spec.rb +23 -23
  25. data/spec/controllers/spree/api/orders_controller_spec.rb +186 -143
  26. data/spec/controllers/spree/api/payments_controller_spec.rb +39 -39
  27. data/spec/controllers/spree/api/product_properties_controller_spec.rb +21 -21
  28. data/spec/controllers/spree/api/products_controller_spec.rb +71 -66
  29. data/spec/controllers/spree/api/promotion_application_spec.rb +13 -13
  30. data/spec/controllers/spree/api/promotions_controller_spec.rb +1 -1
  31. data/spec/controllers/spree/api/properties_controller_spec.rb +25 -25
  32. data/spec/controllers/spree/api/return_authorizations_controller_spec.rb +27 -36
  33. data/spec/controllers/spree/api/shipments_controller_spec.rb +22 -22
  34. data/spec/controllers/spree/api/states_controller_spec.rb +18 -18
  35. data/spec/controllers/spree/api/stock_items_controller_spec.rb +26 -26
  36. data/spec/controllers/spree/api/stock_locations_controller_spec.rb +22 -22
  37. data/spec/controllers/spree/api/stock_movements_controller_spec.rb +16 -16
  38. data/spec/controllers/spree/api/taxonomies_controller_spec.rb +24 -24
  39. data/spec/controllers/spree/api/taxons_controller_spec.rb +39 -39
  40. data/spec/controllers/spree/api/unauthenticated_products_controller_spec.rb +6 -6
  41. data/spec/controllers/spree/api/users_controller_spec.rb +25 -25
  42. data/spec/controllers/spree/api/variants_controller_spec.rb +36 -36
  43. data/spec/controllers/spree/api/zones_controller_spec.rb +20 -20
  44. data/spec/models/spree/legacy_user_spec.rb +5 -5
  45. data/spec/requests/rabl_cache_spec.rb +9 -9
  46. data/spec/spec_helper.rb +0 -1
  47. data/spec/support/controller_hacks.rb +4 -0
  48. metadata +4 -4
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Api::OptionTypesController do
4
+ describe Api::OptionTypesController, :type => :controller do
5
5
  render_views
6
6
 
7
7
  let(:attributes) { [:id, :name, :position, :presentation] }
@@ -13,15 +13,15 @@ module Spree
13
13
  end
14
14
 
15
15
  def check_option_values(option_values)
16
- option_values.count.should == 1
17
- option_values.first.should have_attributes([:id, :name, :presentation,
16
+ expect(option_values.count).to eq(1)
17
+ expect(option_values.first).to have_attributes([:id, :name, :presentation,
18
18
  :option_type_name, :option_type_id])
19
19
  end
20
20
 
21
21
  it "can list all option types" do
22
22
  api_get :index
23
- json_response.count.should == 1
24
- json_response.first.should have_attributes(attributes)
23
+ expect(json_response.count).to eq(1)
24
+ expect(json_response.first).to have_attributes(attributes)
25
25
 
26
26
  check_option_values(json_response.first["option_values"])
27
27
  end
@@ -29,22 +29,22 @@ module Spree
29
29
  it "can search for an option type" do
30
30
  create(:option_type, :name => "buzz")
31
31
  api_get :index, :q => { :name_cont => option_type.name }
32
- json_response.count.should == 1
33
- json_response.first.should have_attributes(attributes)
32
+ expect(json_response.count).to eq(1)
33
+ expect(json_response.first).to have_attributes(attributes)
34
34
  end
35
35
 
36
- it "can retreive a list of specific option types" do
36
+ it "can retrieve a list of specific option types" do
37
37
  option_type_1 = create(:option_type)
38
38
  option_type_2 = create(:option_type)
39
39
  api_get :index, :ids => "#{option_type.id},#{option_type_1.id}"
40
- json_response.count.should == 2
40
+ expect(json_response.count).to eq(2)
41
41
 
42
42
  check_option_values(json_response.first["option_values"])
43
43
  end
44
44
 
45
45
  it "can list a single option type" do
46
46
  api_get :show, :id => option_type.id
47
- json_response.should have_attributes(attributes)
47
+ expect(json_response).to have_attributes(attributes)
48
48
  check_option_values(json_response["option_values"])
49
49
  end
50
50
 
@@ -63,13 +63,13 @@ module Spree
63
63
  :name => "Option Type"
64
64
  }
65
65
  assert_not_found!
66
- option_type.reload.name.should == original_name
66
+ expect(option_type.reload.name).to eq(original_name)
67
67
  end
68
68
 
69
69
  it "cannot delete an option type" do
70
70
  api_delete :destroy, :id => option_type.id
71
71
  assert_not_found!
72
- lambda { option_type.reload }.should_not raise_error
72
+ expect { option_type.reload }.not_to raise_error
73
73
  end
74
74
 
75
75
  context "as an admin" do
@@ -80,13 +80,13 @@ module Spree
80
80
  :name => "Option Type",
81
81
  :presentation => "Option Type"
82
82
  }
83
- json_response.should have_attributes(attributes)
84
- response.status.should == 201
83
+ expect(json_response).to have_attributes(attributes)
84
+ expect(response.status).to eq(201)
85
85
  end
86
86
 
87
87
  it "cannot create an option type with invalid attributes" do
88
88
  api_post :create, :option_type => {}
89
- response.status.should == 422
89
+ expect(response.status).to eq(422)
90
90
  end
91
91
 
92
92
  it "can update an option type" do
@@ -94,22 +94,22 @@ module Spree
94
94
  api_put :update, :id => option_type.id, :option_type => {
95
95
  :name => "Option Type",
96
96
  }
97
- response.status.should == 200
97
+ expect(response.status).to eq(200)
98
98
 
99
99
  option_type.reload
100
- option_type.name.should == "Option Type"
100
+ expect(option_type.name).to eq("Option Type")
101
101
  end
102
102
 
103
103
  it "cannot update an option type with invalid attributes" do
104
104
  api_put :update, :id => option_type.id, :option_type => {
105
105
  :name => ""
106
106
  }
107
- response.status.should == 422
107
+ expect(response.status).to eq(422)
108
108
  end
109
109
 
110
110
  it "can delete an option type" do
111
111
  api_delete :destroy, :id => option_type.id
112
- response.status.should == 204
112
+ expect(response.status).to eq(204)
113
113
  end
114
114
  end
115
115
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Api::OptionValuesController do
4
+ describe Api::OptionValuesController, :type => :controller do
5
5
  render_views
6
6
 
7
7
  let(:attributes) { [:id, :name, :presentation, :option_type_name, :option_type_name] }
@@ -13,8 +13,8 @@ module Spree
13
13
  end
14
14
 
15
15
  def check_option_values(option_values)
16
- option_values.count.should == 1
17
- option_values.first.should have_attributes([:id, :name, :presentation,
16
+ expect(option_values.count).to eq(1)
17
+ expect(option_values.first).to have_attributes([:id, :name, :presentation,
18
18
  :option_type_name, :option_type_id])
19
19
  end
20
20
 
@@ -24,10 +24,10 @@ module Spree
24
24
  create(:option_value, :option_type => create(:option_type))
25
25
  end
26
26
 
27
- it "can retreive a list of all option values" do
27
+ it "can retrieve a list of all option values" do
28
28
  api_get :index
29
- json_response.count.should == 2
30
- json_response.first.should have_attributes(attributes)
29
+ expect(json_response.count).to eq(2)
30
+ expect(json_response.first).to have_attributes(attributes)
31
31
  end
32
32
  end
33
33
 
@@ -36,27 +36,27 @@ module Spree
36
36
 
37
37
  it "can list all option values" do
38
38
  api_get :index
39
- json_response.count.should == 1
40
- json_response.first.should have_attributes(attributes)
39
+ expect(json_response.count).to eq(1)
40
+ expect(json_response.first).to have_attributes(attributes)
41
41
  end
42
42
 
43
43
  it "can search for an option type" do
44
44
  create(:option_value, :name => "buzz")
45
45
  api_get :index, :q => { :name_cont => option_value.name }
46
- json_response.count.should == 1
47
- json_response.first.should have_attributes(attributes)
46
+ expect(json_response.count).to eq(1)
47
+ expect(json_response.first).to have_attributes(attributes)
48
48
  end
49
49
 
50
- it "can retreive a list of option types" do
50
+ it "can retrieve a list of option types" do
51
51
  option_value_1 = create(:option_value, :option_type => option_type)
52
52
  option_value_2 = create(:option_value, :option_type => option_type)
53
53
  api_get :index, :ids => [option_value.id, option_value_1.id]
54
- json_response.count.should == 2
54
+ expect(json_response.count).to eq(2)
55
55
  end
56
56
 
57
57
  it "can list a single option value" do
58
58
  api_get :show, :id => option_value.id
59
- json_response.should have_attributes(attributes)
59
+ expect(json_response).to have_attributes(attributes)
60
60
  end
61
61
 
62
62
  it "cannot create a new option value" do
@@ -74,13 +74,13 @@ module Spree
74
74
  :name => "Option Value"
75
75
  }
76
76
  assert_not_found!
77
- option_type.reload.name.should == original_name
77
+ expect(option_type.reload.name).to eq(original_name)
78
78
  end
79
79
 
80
80
  it "cannot delete an option value" do
81
81
  api_delete :destroy, :id => option_type.id
82
82
  assert_not_found!
83
- lambda { option_type.reload }.should_not raise_error
83
+ expect { option_type.reload }.not_to raise_error
84
84
  end
85
85
 
86
86
  context "as an admin" do
@@ -91,13 +91,13 @@ module Spree
91
91
  :name => "Option Value",
92
92
  :presentation => "Option Value"
93
93
  }
94
- json_response.should have_attributes(attributes)
95
- response.status.should == 201
94
+ expect(json_response).to have_attributes(attributes)
95
+ expect(response.status).to eq(201)
96
96
  end
97
97
 
98
98
  it "cannot create an option type with invalid attributes" do
99
99
  api_post :create, :option_value => {}
100
- response.status.should == 422
100
+ expect(response.status).to eq(422)
101
101
  end
102
102
 
103
103
  it "can update an option value" do
@@ -105,14 +105,14 @@ module Spree
105
105
  api_put :update, :id => option_value.id, :option_value => {
106
106
  :name => "Option Value",
107
107
  }
108
- response.status.should == 200
108
+ expect(response.status).to eq(200)
109
109
 
110
110
  option_value.reload
111
- option_value.name.should == "Option Value"
111
+ expect(option_value.name).to eq("Option Value")
112
112
  end
113
113
 
114
114
  it "permits the correct attributes" do
115
- controller.should_receive(:permitted_option_value_attributes)
115
+ expect(controller).to receive(:permitted_option_value_attributes)
116
116
  api_put :update, :id => option_value.id, :option_value => {
117
117
  :name => ""
118
118
  }
@@ -122,12 +122,12 @@ module Spree
122
122
  api_put :update, :id => option_value.id, :option_value => {
123
123
  :name => ""
124
124
  }
125
- response.status.should == 422
125
+ expect(response.status).to eq(422)
126
126
  end
127
127
 
128
128
  it "can delete an option value" do
129
129
  api_delete :destroy, :id => option_value.id
130
- response.status.should == 204
130
+ expect(response.status).to eq(204)
131
131
  end
132
132
  end
133
133
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
  require 'spree/testing_support/bar_ability'
3
3
 
4
4
  module Spree
5
- describe Api::OrdersController do
5
+ describe Api::OrdersController, :type => :controller do
6
6
  render_views
7
7
 
8
8
  let!(:order) { create(:order) }
@@ -19,11 +19,11 @@ module Spree
19
19
  let(:address_params) { { :country_id => Country.first.id, :state_id => State.first.id } }
20
20
 
21
21
  let(:billing_address) { { :firstname => "Tiago", :lastname => "Motta", :address1 => "Av Paulista",
22
- :city => "Sao Paulo", :zipcode => "1234567", :phone => "12345678",
22
+ :city => "Sao Paulo", :zipcode => "35762", :phone => "12345678",
23
23
  :country_id => Country.first.id, :state_id => State.first.id} }
24
24
 
25
25
  let(:shipping_address) { { :firstname => "Tiago", :lastname => "Motta", :address1 => "Av Paulista",
26
- :city => "Sao Paulo", :zipcode => "1234567", :phone => "12345678",
26
+ :city => "Sao Paulo", :zipcode => "35762", :phone => "12345678",
27
27
  :country_id => Country.first.id, :state_id => State.first.id} }
28
28
 
29
29
  let(:current_api_user) do
@@ -36,6 +36,28 @@ module Spree
36
36
  stub_authentication!
37
37
  end
38
38
 
39
+ describe 'PATCH #update' do
40
+ subject { api_patch :update, id: order.to_param, order: { email: "foo@bar.com" } }
41
+
42
+ before do
43
+ allow_any_instance_of(Spree::Order).to receive_messages :user => current_api_user
44
+ end
45
+
46
+ it 'should be ok' do
47
+ expect(subject).to be_ok
48
+ end
49
+
50
+ it 'should not invoke OrderContents#update_cart' do
51
+ expect_any_instance_of(Spree::OrderContents).to_not receive(:update_cart)
52
+ subject
53
+ end
54
+
55
+ it 'should update the email' do
56
+ subject
57
+ expect(order.reload.email).to eq('foo@bar.com')
58
+ end
59
+ end
60
+
39
61
  it "cannot view all orders" do
40
62
  api_get :index
41
63
  assert_unauthorized!
@@ -46,7 +68,7 @@ module Spree
46
68
 
47
69
  it "returns a 401" do
48
70
  api_get :mine
49
- response.status.should == 401
71
+ expect(response.status).to eq(401)
50
72
  end
51
73
  end
52
74
 
@@ -57,40 +79,40 @@ module Spree
57
79
  it "can view all of their own orders" do
58
80
  api_get :mine
59
81
 
60
- response.status.should == 200
61
- json_response["pages"].should == 1
62
- json_response["current_page"].should == 1
63
- json_response["orders"].length.should == 1
64
- json_response["orders"].first["number"].should == order.number
65
- json_response["orders"].first["line_items"].length.should == 1
66
- json_response["orders"].first["line_items"].first["id"].should == line_item.id
82
+ expect(response.status).to eq(200)
83
+ expect(json_response["pages"]).to eq(1)
84
+ expect(json_response["current_page"]).to eq(1)
85
+ expect(json_response["orders"].length).to eq(1)
86
+ expect(json_response["orders"].first["number"]).to eq(order.number)
87
+ expect(json_response["orders"].first["line_items"].length).to eq(1)
88
+ expect(json_response["orders"].first["line_items"].first["id"]).to eq(line_item.id)
67
89
  end
68
90
 
69
91
  it "can filter the returned results" do
70
92
  api_get :mine, q: {completed_at_not_null: 1}
71
93
 
72
- response.status.should == 200
73
- json_response["orders"].length.should == 0
94
+ expect(response.status).to eq(200)
95
+ expect(json_response["orders"].length).to eq(0)
74
96
  end
75
97
 
76
98
  it "returns orders in reverse chronological order by completed_at" do
77
99
  order.update_columns completed_at: Time.now
78
100
 
79
101
  order2 = Order.create user: order.user, completed_at: Time.now - 1.day
80
- order2.created_at.should > order.created_at
102
+ expect(order2.created_at).to be > order.created_at
81
103
  order3 = Order.create user: order.user, completed_at: nil
82
- order3.created_at.should > order2.created_at
104
+ expect(order3.created_at).to be > order2.created_at
83
105
  order4 = Order.create user: order.user, completed_at: nil
84
- order4.created_at.should > order3.created_at
106
+ expect(order4.created_at).to be > order3.created_at
85
107
 
86
108
  api_get :mine
87
- response.status.should == 200
88
- json_response["pages"].should == 1
89
- json_response["orders"].length.should == 4
90
- json_response["orders"][0]["number"].should == order.number
91
- json_response["orders"][1]["number"].should == order2.number
92
- json_response["orders"][2]["number"].should == order4.number
93
- json_response["orders"][3]["number"].should == order3.number
109
+ expect(response.status).to eq(200)
110
+ expect(json_response["pages"]).to eq(1)
111
+ expect(json_response["orders"].length).to eq(4)
112
+ expect(json_response["orders"][0]["number"]).to eq(order.number)
113
+ expect(json_response["orders"][1]["number"]).to eq(order2.number)
114
+ expect(json_response["orders"][2]["number"]).to eq(order4.number)
115
+ expect(json_response["orders"][3]["number"]).to eq(order3.number)
94
116
  end
95
117
  end
96
118
 
@@ -138,42 +160,63 @@ module Spree
138
160
  end
139
161
 
140
162
  it "can view their own order" do
141
- Order.any_instance.stub :user => current_api_user
163
+ allow_any_instance_of(Order).to receive_messages :user => current_api_user
142
164
  api_get :show, :id => order.to_param
143
- response.status.should == 200
144
- json_response.should have_attributes(attributes)
145
- json_response["adjustments"].should be_empty
165
+ expect(response.status).to eq(200)
166
+ expect(json_response).to have_attributes(attributes)
167
+ expect(json_response["adjustments"]).to be_empty
168
+ end
169
+
170
+ context 'when shipment adjustments are present' do
171
+ let(:adjustment) { FactoryGirl.create(:adjustment, order: order) }
172
+
173
+ before do
174
+ allow_any_instance_of(Order).to receive_messages :user => current_api_user
175
+ shipment = FactoryGirl.create(:shipment, order: order)
176
+ shipment.adjustments << adjustment
177
+ end
178
+
179
+ subject { api_get :show, :id => order.to_param }
180
+
181
+ it 'contains adjustments in JSON' do
182
+ subject
183
+ # Test to insure shipment has adjustments
184
+ shipment = json_response['shipments'][0]
185
+ expect(shipment).to_not be_nil
186
+ expect(shipment['adjustments'][0]).not_to be_empty
187
+ expect(shipment['adjustments'][0]['label']).to eq(adjustment.label)
188
+ end
146
189
  end
147
190
 
148
191
  it "orders contain the basic checkout steps" do
149
- Order.any_instance.stub :user => current_api_user
192
+ allow_any_instance_of(Order).to receive_messages :user => current_api_user
150
193
  api_get :show, :id => order.to_param
151
- response.status.should == 200
152
- json_response["checkout_steps"].should == ["address", "delivery", "complete"]
194
+ expect(response.status).to eq(200)
195
+ expect(json_response["checkout_steps"]).to eq(["address", "delivery", "complete"])
153
196
  end
154
197
 
155
198
  # Regression test for #1992
156
199
  it "can view an order not in a standard state" do
157
- Order.any_instance.stub :user => current_api_user
200
+ allow_any_instance_of(Order).to receive_messages :user => current_api_user
158
201
  order.update_column(:state, 'shipped')
159
202
  api_get :show, :id => order.to_param
160
203
  end
161
204
 
162
205
  it "can not view someone else's order" do
163
- Order.any_instance.stub :user => stub_model(Spree::LegacyUser)
206
+ allow_any_instance_of(Order).to receive_messages :user => stub_model(Spree::LegacyUser)
164
207
  api_get :show, :id => order.to_param
165
208
  assert_unauthorized!
166
209
  end
167
210
 
168
211
  it "can view an order if the token is known" do
169
212
  api_get :show, :id => order.to_param, :order_token => order.guest_token
170
- response.status.should == 200
213
+ expect(response.status).to eq(200)
171
214
  end
172
215
 
173
216
  it "can view an order if the token is passed in header" do
174
217
  request.headers["X-Spree-Order-Token"] = order.guest_token
175
218
  api_get :show, :id => order.to_param
176
- response.status.should == 200
219
+ expect(response.status).to eq(200)
177
220
  end
178
221
 
179
222
  context "with BarAbility registered" do
@@ -182,12 +225,12 @@ module Spree
182
225
 
183
226
  it "can view an order" do
184
227
  user = mock_model(Spree::LegacyUser)
185
- user.stub_chain(:spree_roles, :pluck).and_return(["bar"])
186
- user.stub(:has_spree_role?).with('bar').and_return(true)
187
- user.stub(:has_spree_role?).with('admin').and_return(false)
188
- controller.stub try_spree_current_user: user
228
+ allow(user).to receive_message_chain(:spree_roles, :pluck).and_return(["bar"])
229
+ allow(user).to receive(:has_spree_role?).with('bar').and_return(true)
230
+ allow(user).to receive(:has_spree_role?).with('admin').and_return(false)
231
+ allow(controller).to receive_messages try_spree_current_user: user
189
232
  api_get :show, :id => order.to_param
190
- response.status.should == 200
233
+ expect(response.status).to eq(200)
191
234
  end
192
235
  end
193
236
 
@@ -205,19 +248,19 @@ module Spree
205
248
 
206
249
  it "can create an order" do
207
250
  api_post :create, :order => { :line_items => { "0" => { :variant_id => variant.to_param, :quantity => 5 } } }
208
- response.status.should == 201
251
+ expect(response.status).to eq(201)
209
252
 
210
253
  order = Order.last
211
- order.line_items.count.should == 1
212
- order.line_items.first.variant.should == variant
213
- order.line_items.first.quantity.should == 5
214
-
215
- json_response['number'].should be_present
216
- json_response["token"].should_not be_blank
217
- json_response["state"].should == "cart"
218
- order.user.should == current_api_user
219
- order.email.should == current_api_user.email
220
- json_response["user_id"].should == current_api_user.id
254
+ expect(order.line_items.count).to eq(1)
255
+ expect(order.line_items.first.variant).to eq(variant)
256
+ expect(order.line_items.first.quantity).to eq(5)
257
+
258
+ expect(json_response['number']).to be_present
259
+ expect(json_response["token"]).not_to be_blank
260
+ expect(json_response["state"]).to eq("cart")
261
+ expect(order.user).to eq(current_api_user)
262
+ expect(order.email).to eq(current_api_user.email)
263
+ expect(json_response["user_id"]).to eq(current_api_user.id)
221
264
  end
222
265
 
223
266
  it "assigns email when creating a new order" do
@@ -228,12 +271,12 @@ module Spree
228
271
 
229
272
  # Regression test for #3404
230
273
  it "can specify additional parameters for a line item" do
231
- Order.should_receive(:create!).and_return(order = Spree::Order.new)
232
- order.stub(:associate_user!)
233
- order.stub_chain(:contents, :add).and_return(line_item = double('LineItem'))
234
- line_item.should_receive(:update_attributes!).with("special" => true)
274
+ expect(Order).to receive(:create!).and_return(order = Spree::Order.new)
275
+ allow(order).to receive(:associate_user!)
276
+ allow(order).to receive_message_chain(:contents, :add).and_return(line_item = double('LineItem'))
277
+ expect(line_item).to receive(:update_attributes!).with("special" => true)
235
278
 
236
- controller.stub(permitted_line_item_attributes: [:id, :variant_id, :quantity, :special])
279
+ allow(controller).to receive_messages(permitted_line_item_attributes: [:id, :variant_id, :quantity, :special])
237
280
  api_post :create, :order => {
238
281
  :line_items => {
239
282
  "0" => {
@@ -241,7 +284,7 @@ module Spree
241
284
  }
242
285
  }
243
286
  }
244
- response.status.should == 201
287
+ expect(response.status).to eq(201)
245
288
  end
246
289
 
247
290
  it "cannot arbitrarily set the line items price" do
@@ -259,8 +302,8 @@ module Spree
259
302
 
260
303
  context "admin user imports order" do
261
304
  before do
262
- current_api_user.stub has_spree_role?: true
263
- current_api_user.stub_chain :spree_roles, pluck: ["admin"]
305
+ allow(current_api_user).to receive_messages has_spree_role?: true
306
+ allow(current_api_user).to receive_message_chain :spree_roles, pluck: ["admin"]
264
307
  end
265
308
 
266
309
  it "is able to set any default unpermitted attribute" do
@@ -272,10 +315,10 @@ module Spree
272
315
 
273
316
  # Regression test for #3404
274
317
  it "does not update line item needlessly" do
275
- Order.should_receive(:create!).and_return(order = Spree::Order.new)
276
- order.stub(:associate_user!)
277
- order.stub_chain(:contents, :add).and_return(line_item = double('LineItem'))
278
- line_item.should_not_receive(:update_attributes)
318
+ expect(Order).to receive(:create!).and_return(order = Spree::Order.new)
319
+ allow(order).to receive(:associate_user!)
320
+ allow(order).to receive_message_chain(:contents, :add).and_return(line_item = double('LineItem'))
321
+ expect(line_item).not_to receive(:update_attributes)
279
322
  api_post :create, :order => {
280
323
  :line_items => {
281
324
  "0" => {
@@ -286,10 +329,10 @@ module Spree
286
329
  end
287
330
 
288
331
  it "can create an order without any parameters" do
289
- lambda { api_post :create }.should_not raise_error
290
- response.status.should == 201
332
+ expect { api_post :create }.not_to raise_error
333
+ expect(response.status).to eq(201)
291
334
  order = Order.last
292
- json_response["state"].should == "cart"
335
+ expect(json_response["state"]).to eq("cart")
293
336
  end
294
337
 
295
338
  context "working with an order" do
@@ -300,20 +343,20 @@ module Spree
300
343
 
301
344
  let(:address_params) { { :country_id => Country.first.id, :state_id => State.first.id } }
302
345
  let(:billing_address) { { :firstname => "Tiago", :lastname => "Motta", :address1 => "Av Paulista",
303
- :city => "Sao Paulo", :zipcode => "1234567", :phone => "12345678",
346
+ :city => "Sao Paulo", :zipcode => "35762", :phone => "12345678",
304
347
  :country_id => Country.first.id, :state_id => State.first.id} }
305
348
  let(:shipping_address) { { :firstname => "Tiago", :lastname => "Motta", :address1 => "Av Paulista",
306
- :city => "Sao Paulo", :zipcode => "1234567", :phone => "12345678",
349
+ :city => "Sao Paulo", :zipcode => "35762", :phone => "12345678",
307
350
  :country_id => Country.first.id, :state_id => State.first.id} }
308
351
 
309
352
  before do
310
- Spree::LineItem.stub(:find_by_id).and_return(Spree::LineItem.new)
311
- Order.any_instance.stub :user => current_api_user
353
+ allow(Spree::LineItem).to receive(:find_by_id).and_return(Spree::LineItem.new)
354
+ allow_any_instance_of(Order).to receive_messages :user => current_api_user
312
355
  order.next # Switch from cart to address
313
356
  order.bill_address = nil
314
357
  order.ship_address = nil
315
358
  order.save
316
- order.state.should == "address"
359
+ expect(order.state).to eq("address")
317
360
  end
318
361
 
319
362
  def clean_address(address)
@@ -339,9 +382,9 @@ module Spree
339
382
  }
340
383
  }
341
384
 
342
- response.status.should == 200
343
- json_response['line_items'].count.should == 1
344
- json_response['line_items'].first['quantity'].should == 10
385
+ expect(response.status).to eq(200)
386
+ expect(json_response['line_items'].count).to eq(1)
387
+ expect(json_response['line_items'].first['quantity']).to eq(10)
345
388
  end
346
389
 
347
390
  it "adds an extra line item" do
@@ -353,11 +396,11 @@ module Spree
353
396
  }
354
397
  }
355
398
 
356
- response.status.should == 200
357
- json_response['line_items'].count.should == 2
358
- json_response['line_items'][0]['quantity'].should == 10
359
- json_response['line_items'][1]['variant_id'].should == variant2.id
360
- json_response['line_items'][1]['quantity'].should == 1
399
+ expect(response.status).to eq(200)
400
+ expect(json_response['line_items'].count).to eq(2)
401
+ expect(json_response['line_items'][0]['quantity']).to eq(10)
402
+ expect(json_response['line_items'][1]['variant_id']).to eq(variant2.id)
403
+ expect(json_response['line_items'][1]['quantity']).to eq(1)
361
404
  end
362
405
 
363
406
  it "cannot change the price of an existing line item" do
@@ -367,8 +410,8 @@ module Spree
367
410
  }
368
411
  }
369
412
 
370
- response.status.should == 200
371
- json_response['line_items'].count.should == 1
413
+ expect(response.status).to eq(200)
414
+ expect(json_response['line_items'].count).to eq(1)
372
415
  expect(json_response['line_items'].first['price'].to_f).to_not eq(0)
373
416
  expect(json_response['line_items'].first['price'].to_f).to eq(line_item.variant.price)
374
417
  end
@@ -376,7 +419,7 @@ module Spree
376
419
  it "can add billing address" do
377
420
  api_put :update, :id => order.to_param, :order => { :bill_address_attributes => billing_address }
378
421
 
379
- order.reload.bill_address.should_not be_nil
422
+ expect(order.reload.bill_address).to_not be_nil
380
423
  end
381
424
 
382
425
  it "receives error message if trying to add billing address with errors" do
@@ -384,28 +427,28 @@ module Spree
384
427
 
385
428
  api_put :update, :id => order.to_param, :order => { :bill_address_attributes => billing_address }
386
429
 
387
- json_response['error'].should_not be_nil
388
- json_response['errors'].should_not be_nil
389
- json_response['errors']['bill_address.firstname'].first.should eq "can't be blank"
430
+ expect(json_response['error']).not_to be_nil
431
+ expect(json_response['errors']).not_to be_nil
432
+ expect(json_response['errors']['bill_address.firstname'].first).to eq "can't be blank"
390
433
  end
391
434
 
392
435
  it "can add shipping address" do
393
- order.ship_address.should be_nil
436
+ expect(order.ship_address).to be_nil
394
437
 
395
438
  api_put :update, :id => order.to_param, :order => { :ship_address_attributes => shipping_address }
396
439
 
397
- order.reload.ship_address.should_not be_nil
440
+ expect(order.reload.ship_address).not_to be_nil
398
441
  end
399
442
 
400
443
  it "receives error message if trying to add shipping address with errors" do
401
- order.ship_address.should be_nil
444
+ expect(order.ship_address).to be_nil
402
445
  shipping_address[:firstname] = ""
403
446
 
404
447
  api_put :update, :id => order.to_param, :order => { :ship_address_attributes => shipping_address }
405
448
 
406
- json_response['error'].should_not be_nil
407
- json_response['errors'].should_not be_nil
408
- json_response['errors']['ship_address.firstname'].first.should eq "can't be blank"
449
+ expect(json_response['error']).not_to be_nil
450
+ expect(json_response['errors']).not_to be_nil
451
+ expect(json_response['errors']['ship_address.firstname'].first).to eq "can't be blank"
409
452
  end
410
453
 
411
454
  it "cannot set the user_id for the order" do
@@ -413,7 +456,7 @@ module Spree
413
456
  original_id = order.user_id
414
457
  api_post :update, :id => order.to_param, :order => { user_id: user.id }
415
458
  expect(response.status).to eq 200
416
- json_response["user_id"].should == original_id
459
+ expect(json_response["user_id"]).to eq(original_id)
417
460
  end
418
461
 
419
462
  context "order has shipments" do
@@ -433,17 +476,17 @@ module Spree
433
476
  context "with a line item" do
434
477
  let(:order_with_line_items) do
435
478
  order = create(:order_with_line_items)
436
- create(:adjustment, :adjustable => order)
479
+ create(:adjustment, order: order, adjustable: order)
437
480
  order
438
481
  end
439
482
 
440
483
  it "can empty an order" do
441
- order_with_line_items.adjustments.count.should be == 1
484
+ expect(order_with_line_items.adjustments.count).to eq(1)
442
485
  api_put :empty, :id => order_with_line_items.to_param
443
- response.status.should == 204
486
+ expect(response.status).to eq(204)
444
487
  order_with_line_items.reload
445
- order_with_line_items.line_items.should be_empty
446
- order_with_line_items.adjustments.should be_empty
488
+ expect(order_with_line_items.line_items).to be_empty
489
+ expect(order_with_line_items.adjustments).to be_empty
447
490
  end
448
491
 
449
492
  it "can list its line items with images" do
@@ -451,22 +494,22 @@ module Spree
451
494
 
452
495
  api_get :show, :id => order.to_param
453
496
 
454
- json_response['line_items'].first['variant'].should have_attributes([:images])
497
+ expect(json_response['line_items'].first['variant']).to have_attributes([:images])
455
498
  end
456
499
 
457
500
  it "lists variants product id" do
458
501
  api_get :show, :id => order.to_param
459
502
 
460
- json_response['line_items'].first['variant'].should have_attributes([:product_id])
503
+ expect(json_response['line_items'].first['variant']).to have_attributes([:product_id])
461
504
  end
462
505
 
463
506
  it "includes the tax_total in the response" do
464
507
  api_get :show, :id => order.to_param
465
508
 
466
- json_response['included_tax_total'].should == '0.0'
467
- json_response['additional_tax_total'].should == '0.0'
468
- json_response['display_included_tax_total'].should == '$0.00'
469
- json_response['display_additional_tax_total'].should == '$0.00'
509
+ expect(json_response['included_tax_total']).to eq('0.0')
510
+ expect(json_response['additional_tax_total']).to eq('0.0')
511
+ expect(json_response['display_included_tax_total']).to eq('$0.00')
512
+ expect(json_response['display_additional_tax_total']).to eq('$0.00')
470
513
  end
471
514
 
472
515
  it "lists line item adjustments" do
@@ -478,8 +521,8 @@ module Spree
478
521
  api_get :show, :id => order.to_param
479
522
 
480
523
  adjustment = json_response['line_items'].first['adjustments'].first
481
- adjustment['label'].should == "10% off!"
482
- adjustment['amount'].should == "5.0"
524
+ expect(adjustment['label']).to eq("10% off!")
525
+ expect(adjustment['amount']).to eq("5.0")
483
526
  end
484
527
 
485
528
  it "lists payments source without gateway info" do
@@ -520,33 +563,33 @@ module Spree
520
563
 
521
564
  it "returns available shipments for an order" do
522
565
  api_get :show, :id => order.to_param
523
- response.status.should == 200
524
- json_response["shipments"].should_not be_empty
566
+ expect(response.status).to eq(200)
567
+ expect(json_response["shipments"]).not_to be_empty
525
568
  shipment = json_response["shipments"][0]
526
569
  # Test for correct shipping method attributes
527
570
  # Regression test for #3206
528
- shipment["shipping_methods"].should_not be_nil
571
+ expect(shipment["shipping_methods"]).not_to be_nil
529
572
  json_shipping_method = shipment["shipping_methods"][0]
530
- json_shipping_method["id"].should == shipping_method.id
531
- json_shipping_method["name"].should == shipping_method.name
532
- json_shipping_method["code"].should == shipping_method.code
533
- json_shipping_method["zones"].should_not be_empty
534
- json_shipping_method["shipping_categories"].should_not be_empty
573
+ expect(json_shipping_method["id"]).to eq(shipping_method.id)
574
+ expect(json_shipping_method["name"]).to eq(shipping_method.name)
575
+ expect(json_shipping_method["code"]).to eq(shipping_method.code)
576
+ expect(json_shipping_method["zones"]).not_to be_empty
577
+ expect(json_shipping_method["shipping_categories"]).not_to be_empty
535
578
 
536
579
  # Test for correct shipping rates attributes
537
580
  # Regression test for #3206
538
- shipment["shipping_rates"].should_not be_nil
581
+ expect(shipment["shipping_rates"]).not_to be_nil
539
582
  shipping_rate = shipment["shipping_rates"][0]
540
- shipping_rate["name"].should == json_shipping_method["name"]
541
- shipping_rate["cost"].should == "10.0"
542
- shipping_rate["selected"].should be true
543
- shipping_rate["display_cost"].should == "$10.00"
544
- shipping_rate["shipping_method_code"].should == json_shipping_method["code"]
583
+ expect(shipping_rate["name"]).to eq(json_shipping_method["name"])
584
+ expect(shipping_rate["cost"]).to eq("10.0")
585
+ expect(shipping_rate["selected"]).to be true
586
+ expect(shipping_rate["display_cost"]).to eq("$10.00")
587
+ expect(shipping_rate["shipping_method_code"]).to eq(json_shipping_method["code"])
545
588
 
546
- shipment["stock_location_name"].should_not be_blank
589
+ expect(shipment["stock_location_name"]).not_to be_blank
547
590
  manifest_item = shipment["manifest"][0]
548
- manifest_item["quantity"].should == 1
549
- manifest_item["variant_id"].should == order.line_items.first.variant_id
591
+ expect(manifest_item["quantity"]).to eq(1)
592
+ expect(manifest_item["variant_id"]).to eq(order.line_items.first.variant_id)
550
593
  end
551
594
  end
552
595
  end
@@ -559,7 +602,7 @@ module Spree
559
602
  before { Spree::Order.delete_all }
560
603
  it "still returns a root :orders key" do
561
604
  api_get :index
562
- json_response["orders"].should == []
605
+ expect(json_response["orders"]).to eq([])
563
606
  end
564
607
  end
565
608
 
@@ -612,20 +655,20 @@ module Spree
612
655
 
613
656
  it "can view all orders" do
614
657
  api_get :index
615
- json_response["orders"].first.should have_attributes(attributes)
616
- json_response["count"].should == 2
617
- json_response["current_page"].should == 1
618
- json_response["pages"].should == 1
658
+ expect(json_response["orders"].first).to have_attributes(attributes)
659
+ expect(json_response["count"]).to eq(2)
660
+ expect(json_response["current_page"]).to eq(1)
661
+ expect(json_response["pages"]).to eq(1)
619
662
  end
620
663
 
621
664
  # Test for #1763
622
665
  it "can control the page size through a parameter" do
623
666
  api_get :index, :per_page => 1
624
- json_response["orders"].count.should == 1
625
- json_response["orders"].first.should have_attributes(attributes)
626
- json_response["count"].should == 1
627
- json_response["current_page"].should == 1
628
- json_response["pages"].should == 2
667
+ expect(json_response["orders"].count).to eq(1)
668
+ expect(json_response["orders"].first).to have_attributes(attributes)
669
+ expect(json_response["count"]).to eq(1)
670
+ expect(json_response["current_page"]).to eq(1)
671
+ expect(json_response["pages"]).to eq(2)
629
672
  end
630
673
  end
631
674
 
@@ -639,21 +682,21 @@ module Spree
639
682
 
640
683
  it "can query the results through a parameter" do
641
684
  api_get :index, :q => { :email_cont => 'spree' }
642
- json_response["orders"].count.should == 1
643
- json_response["orders"].first.should have_attributes(attributes)
644
- json_response["orders"].first["email"].should == expected_result.email
645
- json_response["count"].should == 1
646
- json_response["current_page"].should == 1
647
- json_response["pages"].should == 1
685
+ expect(json_response["orders"].count).to eq(1)
686
+ expect(json_response["orders"].first).to have_attributes(attributes)
687
+ expect(json_response["orders"].first["email"]).to eq(expected_result.email)
688
+ expect(json_response["count"]).to eq(1)
689
+ expect(json_response["current_page"]).to eq(1)
690
+ expect(json_response["pages"]).to eq(1)
648
691
  end
649
692
  end
650
693
 
651
694
  context "creation" do
652
695
  it "can create an order without any parameters" do
653
- lambda { api_post :create }.should_not raise_error
654
- response.status.should == 201
696
+ expect { api_post :create }.not_to raise_error
697
+ expect(response.status).to eq(201)
655
698
  order = Order.last
656
- json_response["state"].should == "cart"
699
+ expect(json_response["state"]).to eq("cart")
657
700
  end
658
701
 
659
702
  it "can arbitrarily set the line items price" do
@@ -672,7 +715,7 @@ module Spree
672
715
  user = Spree.user_class.create
673
716
  api_post :create, :order => { user_id: user.id }
674
717
  expect(response.status).to eq 201
675
- json_response["user_id"].should == user.id
718
+ expect(json_response["user_id"]).to eq(user.id)
676
719
  end
677
720
  end
678
721
 
@@ -681,7 +724,7 @@ module Spree
681
724
  user = Spree.user_class.create
682
725
  api_post :update, :id => order.number, :order => { user_id: user.id }
683
726
  expect(response.status).to eq 200
684
- json_response["user_id"].should == user.id
727
+ expect(json_response["user_id"]).to eq(user.id)
685
728
  end
686
729
  end
687
730
 
@@ -697,7 +740,7 @@ module Spree
697
740
 
698
741
  specify do
699
742
  api_put :cancel, :id => order.to_param
700
- json_response["state"].should == "canceled"
743
+ expect(json_response["state"]).to eq("canceled")
701
744
  end
702
745
  end
703
746
  end