spree_api 3.1.5 → 3.1.6
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.
- checksums.yaml +4 -4
- data/app/controllers/spree/api/v1/product_properties_controller.rb +7 -10
- data/app/views/spree/api/v1/countries/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/credit_cards/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/orders/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/orders/mine.v1.rabl +1 -1
- data/app/views/spree/api/v1/payments/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/product_properties/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/products/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/properties/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/return_authorizations/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/shipments/mine.v1.rabl +1 -1
- data/app/views/spree/api/v1/states/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/stock_items/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/stock_locations/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/stock_movements/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/taxonomies/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/taxons/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/users/index.v1.rabl +1 -1
- data/app/views/spree/api/v1/zones/index.v1.rabl +1 -1
- data/spree_api.gemspec +1 -2
- metadata +6 -88
- data/spec/controllers/spree/api/base_controller_spec.rb +0 -96
- data/spec/controllers/spree/api/v1/addresses_controller_spec.rb +0 -56
- data/spec/controllers/spree/api/v1/checkouts_controller_spec.rb +0 -363
- data/spec/controllers/spree/api/v1/classifications_controller_spec.rb +0 -48
- data/spec/controllers/spree/api/v1/countries_controller_spec.rb +0 -48
- data/spec/controllers/spree/api/v1/credit_cards_controller_spec.rb +0 -80
- data/spec/controllers/spree/api/v1/images_controller_spec.rb +0 -115
- data/spec/controllers/spree/api/v1/inventory_units_controller_spec.rb +0 -49
- data/spec/controllers/spree/api/v1/line_items_controller_spec.rb +0 -184
- data/spec/controllers/spree/api/v1/option_types_controller_spec.rb +0 -122
- data/spec/controllers/spree/api/v1/option_values_controller_spec.rb +0 -141
- data/spec/controllers/spree/api/v1/orders_controller_spec.rb +0 -735
- data/spec/controllers/spree/api/v1/payments_controller_spec.rb +0 -234
- data/spec/controllers/spree/api/v1/product_properties_controller_spec.rb +0 -116
- data/spec/controllers/spree/api/v1/products_controller_spec.rb +0 -409
- data/spec/controllers/spree/api/v1/promotion_application_spec.rb +0 -50
- data/spec/controllers/spree/api/v1/promotions_controller_spec.rb +0 -64
- data/spec/controllers/spree/api/v1/properties_controller_spec.rb +0 -102
- data/spec/controllers/spree/api/v1/return_authorizations_controller_spec.rb +0 -161
- data/spec/controllers/spree/api/v1/shipments_controller_spec.rb +0 -187
- data/spec/controllers/spree/api/v1/states_controller_spec.rb +0 -86
- data/spec/controllers/spree/api/v1/stock_items_controller_spec.rb +0 -143
- data/spec/controllers/spree/api/v1/stock_locations_controller_spec.rb +0 -113
- data/spec/controllers/spree/api/v1/stock_movements_controller_spec.rb +0 -84
- data/spec/controllers/spree/api/v1/stores_controller_spec.rb +0 -133
- data/spec/controllers/spree/api/v1/taxonomies_controller_spec.rb +0 -114
- data/spec/controllers/spree/api/v1/taxons_controller_spec.rb +0 -177
- data/spec/controllers/spree/api/v1/unauthenticated_products_controller_spec.rb +0 -26
- data/spec/controllers/spree/api/v1/users_controller_spec.rb +0 -153
- data/spec/controllers/spree/api/v1/variants_controller_spec.rb +0 -205
- data/spec/controllers/spree/api/v1/zones_controller_spec.rb +0 -91
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/models/spree/legacy_user_spec.rb +0 -19
- data/spec/requests/rabl_cache_spec.rb +0 -32
- data/spec/requests/ransackable_attributes_spec.rb +0 -79
- data/spec/requests/version_spec.rb +0 -19
- data/spec/shared_examples/protect_product_actions.rb +0 -17
- data/spec/spec_helper.rb +0 -55
- data/spec/support/controller_hacks.rb +0 -33
- data/spec/support/database_cleaner.rb +0 -14
- data/spec/support/have_attributes_matcher.rb +0 -13
@@ -1,86 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Spree
|
4
|
-
describe Api::V1::StatesController, :type => :controller do
|
5
|
-
render_views
|
6
|
-
|
7
|
-
let!(:state) { create(:state, :name => "Victoria") }
|
8
|
-
let(:attributes) { [:id, :name, :abbr, :country_id] }
|
9
|
-
|
10
|
-
before do
|
11
|
-
stub_authentication!
|
12
|
-
end
|
13
|
-
|
14
|
-
it "gets all states" do
|
15
|
-
api_get :index
|
16
|
-
expect(json_response["states"].first).to have_attributes(attributes)
|
17
|
-
expect(json_response['states'].first['name']).to eq(state.name)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "gets all the states for a particular country" do
|
21
|
-
api_get :index, :country_id => state.country.id
|
22
|
-
expect(json_response["states"].first).to have_attributes(attributes)
|
23
|
-
expect(json_response['states'].first['name']).to eq(state.name)
|
24
|
-
end
|
25
|
-
|
26
|
-
context "pagination" do
|
27
|
-
let(:scope) { double('scope') }
|
28
|
-
|
29
|
-
before do
|
30
|
-
expect(scope).to receive_messages(last: state)
|
31
|
-
expect(State).to receive_messages(accessible_by: scope)
|
32
|
-
expect(scope).to receive_messages(order: scope)
|
33
|
-
allow(scope).to receive_message_chain(:ransack, :result, :includes).and_return(scope)
|
34
|
-
end
|
35
|
-
|
36
|
-
it "does not paginate states results when asked not to do so" do
|
37
|
-
expect(scope).not_to receive(:page)
|
38
|
-
expect(scope).not_to receive(:per)
|
39
|
-
api_get :index
|
40
|
-
end
|
41
|
-
|
42
|
-
it "paginates when page parameter is passed through" do
|
43
|
-
expect(scope).to receive(:page).with(1).and_return(scope)
|
44
|
-
expect(scope).to receive(:per).with(nil).and_return(scope)
|
45
|
-
api_get :index, :page => 1
|
46
|
-
end
|
47
|
-
|
48
|
-
it "paginates when per_page parameter is passed through" do
|
49
|
-
expect(scope).to receive(:page).with(nil).and_return(scope)
|
50
|
-
expect(scope).to receive(:per).with(25).and_return(scope)
|
51
|
-
api_get :index, :per_page => 25
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
|
56
|
-
context "with two states" do
|
57
|
-
before { create(:state, :name => "New South Wales") }
|
58
|
-
|
59
|
-
it "gets all states for a country" do
|
60
|
-
country = create(:country, :states_required => true)
|
61
|
-
state.country = country
|
62
|
-
state.save
|
63
|
-
|
64
|
-
api_get :index, :country_id => country.id
|
65
|
-
expect(json_response["states"].first).to have_attributes(attributes)
|
66
|
-
expect(json_response["states"].count).to eq(1)
|
67
|
-
json_response["states_required"] = true
|
68
|
-
end
|
69
|
-
|
70
|
-
it "can view all states" do
|
71
|
-
api_get :index
|
72
|
-
expect(json_response["states"].first).to have_attributes(attributes)
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'can query the results through a paramter' do
|
76
|
-
api_get :index, :q => { :name_cont => 'Vic' }
|
77
|
-
expect(json_response['states'].first['name']).to eq("Victoria")
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
it "can view a state" do
|
82
|
-
api_get :show, :id => state.id
|
83
|
-
expect(json_response).to have_attributes(attributes)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
@@ -1,143 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Spree
|
4
|
-
describe Api::V1::StockItemsController, :type => :controller do
|
5
|
-
render_views
|
6
|
-
|
7
|
-
let!(:stock_location) { create(:stock_location_with_items) }
|
8
|
-
let!(:stock_item) { stock_location.stock_items.order(:id).first }
|
9
|
-
let!(:attributes) { [:id, :count_on_hand, :backorderable,
|
10
|
-
:stock_location_id, :variant_id] }
|
11
|
-
|
12
|
-
before do
|
13
|
-
stub_authentication!
|
14
|
-
end
|
15
|
-
|
16
|
-
context "as a normal user" do
|
17
|
-
it "cannot list stock items for a stock location" do
|
18
|
-
api_get :index, stock_location_id: stock_location.to_param
|
19
|
-
expect(response.status).to eq(404)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "cannot see a stock item" do
|
23
|
-
api_get :show, stock_location_id: stock_location.to_param, id: stock_item.to_param
|
24
|
-
expect(response.status).to eq(404)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "cannot create a stock item" do
|
28
|
-
variant = create(:variant)
|
29
|
-
params = {
|
30
|
-
stock_location_id: stock_location.to_param,
|
31
|
-
stock_item: {
|
32
|
-
variant_id: variant.id,
|
33
|
-
count_on_hand: '20'
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
api_post :create, params
|
38
|
-
expect(response.status).to eq(404)
|
39
|
-
end
|
40
|
-
|
41
|
-
it "cannot update a stock item" do
|
42
|
-
api_put :update, stock_location_id: stock_location.to_param,
|
43
|
-
id: stock_item.to_param
|
44
|
-
expect(response.status).to eq(404)
|
45
|
-
end
|
46
|
-
|
47
|
-
it "cannot destroy a stock item" do
|
48
|
-
api_delete :destroy, stock_location_id: stock_location.to_param,
|
49
|
-
id: stock_item.to_param
|
50
|
-
expect(response.status).to eq(404)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
context "as an admin" do
|
55
|
-
sign_in_as_admin!
|
56
|
-
|
57
|
-
it 'cannot list of stock items' do
|
58
|
-
api_get :index, stock_location_id: stock_location.to_param
|
59
|
-
expect(json_response['stock_items'].first).to have_attributes(attributes)
|
60
|
-
expect(json_response['stock_items'].first['variant']['sku']).to include 'SKU'
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'requires a stock_location_id to be passed as a parameter' do
|
64
|
-
api_get :index
|
65
|
-
expect(json_response['error']).to match(/stock_location_id parameter must be provided/)
|
66
|
-
expect(response.status).to eq(422)
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'can control the page size through a parameter' do
|
70
|
-
api_get :index, stock_location_id: stock_location.to_param, per_page: 1
|
71
|
-
expect(json_response['count']).to eq(1)
|
72
|
-
expect(json_response['current_page']).to eq(1)
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'can query the results through a paramter' do
|
76
|
-
stock_item.update_column(:count_on_hand, 30)
|
77
|
-
api_get :index, stock_location_id: stock_location.to_param, q: { count_on_hand_eq: '30' }
|
78
|
-
expect(json_response['count']).to eq(1)
|
79
|
-
expect(json_response['stock_items'].first['count_on_hand']).to eq 30
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'gets a stock item' do
|
83
|
-
api_get :show, stock_location_id: stock_location.to_param, id: stock_item.to_param
|
84
|
-
expect(json_response).to have_attributes(attributes)
|
85
|
-
expect(json_response['count_on_hand']).to eq stock_item.count_on_hand
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'can create a new stock item' do
|
89
|
-
variant = create(:variant)
|
90
|
-
# Creating a variant also creates stock items.
|
91
|
-
# We don't want any to exist (as they would conflict with what we're about to create)
|
92
|
-
StockItem.delete_all
|
93
|
-
params = {
|
94
|
-
stock_location_id: stock_location.to_param,
|
95
|
-
stock_item: {
|
96
|
-
variant_id: variant.id,
|
97
|
-
count_on_hand: '20'
|
98
|
-
}
|
99
|
-
}
|
100
|
-
|
101
|
-
api_post :create, params
|
102
|
-
expect(response.status).to eq(201)
|
103
|
-
expect(json_response).to have_attributes(attributes)
|
104
|
-
end
|
105
|
-
|
106
|
-
it 'can update a stock item to add new inventory' do
|
107
|
-
expect(stock_item.count_on_hand).to eq(10)
|
108
|
-
params = {
|
109
|
-
id: stock_item.to_param,
|
110
|
-
stock_item: {
|
111
|
-
count_on_hand: 40,
|
112
|
-
}
|
113
|
-
}
|
114
|
-
|
115
|
-
api_put :update, params
|
116
|
-
expect(response.status).to eq(200)
|
117
|
-
expect(json_response['count_on_hand']).to eq 50
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'can set a stock item to modify the current inventory' do
|
121
|
-
expect(stock_item.count_on_hand).to eq(10)
|
122
|
-
|
123
|
-
params = {
|
124
|
-
id: stock_item.to_param,
|
125
|
-
stock_item: {
|
126
|
-
count_on_hand: 40,
|
127
|
-
force: true,
|
128
|
-
}
|
129
|
-
}
|
130
|
-
|
131
|
-
api_put :update, params
|
132
|
-
expect(response.status).to eq(200)
|
133
|
-
expect(json_response['count_on_hand']).to eq 40
|
134
|
-
end
|
135
|
-
|
136
|
-
it 'can delete a stock item' do
|
137
|
-
api_delete :destroy, id: stock_item.to_param
|
138
|
-
expect(response.status).to eq(204)
|
139
|
-
expect { Spree::StockItem.find(stock_item.id) }.to raise_error(ActiveRecord::RecordNotFound)
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
@@ -1,113 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Spree
|
4
|
-
describe Api::V1::StockLocationsController, :type => :controller do
|
5
|
-
render_views
|
6
|
-
|
7
|
-
let!(:stock_location) { create(:stock_location) }
|
8
|
-
let!(:attributes) { [:id, :name, :address1, :address2, :city, :state_id, :state_name, :country_id, :zipcode, :phone, :active] }
|
9
|
-
|
10
|
-
before do
|
11
|
-
stub_authentication!
|
12
|
-
end
|
13
|
-
|
14
|
-
context "as a user" do
|
15
|
-
it "cannot see stock locations" do
|
16
|
-
api_get :index
|
17
|
-
expect(response.status).to eq(401)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "cannot see a single stock location" do
|
21
|
-
api_get :show, :id => stock_location.id
|
22
|
-
expect(response.status).to eq(404)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "cannot create a new stock location" do
|
26
|
-
params = {
|
27
|
-
stock_location: {
|
28
|
-
name: "North Pole",
|
29
|
-
active: true
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
api_post :create, params
|
34
|
-
expect(response.status).to eq(401)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "cannot update a stock location" do
|
38
|
-
api_put :update, :stock_location => { :name => "South Pole" }, :id => stock_location.to_param
|
39
|
-
expect(response.status).to eq(404)
|
40
|
-
end
|
41
|
-
|
42
|
-
it "cannot delete a stock location" do
|
43
|
-
api_put :destroy, :id => stock_location.to_param
|
44
|
-
expect(response.status).to eq(404)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
context "as an admin" do
|
50
|
-
sign_in_as_admin!
|
51
|
-
|
52
|
-
it "gets list of stock locations" do
|
53
|
-
api_get :index
|
54
|
-
expect(json_response['stock_locations'].first).to have_attributes(attributes)
|
55
|
-
expect(json_response['stock_locations'].first['country']).not_to be_nil
|
56
|
-
expect(json_response['stock_locations'].first['state']).not_to be_nil
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'can control the page size through a parameter' do
|
60
|
-
create(:stock_location)
|
61
|
-
api_get :index, per_page: 1
|
62
|
-
expect(json_response['count']).to eq(1)
|
63
|
-
expect(json_response['current_page']).to eq(1)
|
64
|
-
expect(json_response['pages']).to eq(2)
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'can query the results through a paramter' do
|
68
|
-
expected_result = create(:stock_location, name: 'South America')
|
69
|
-
api_get :index, q: { name_cont: 'south' }
|
70
|
-
expect(json_response['count']).to eq(1)
|
71
|
-
expect(json_response['stock_locations'].first['name']).to eq expected_result.name
|
72
|
-
end
|
73
|
-
|
74
|
-
it "gets a stock location" do
|
75
|
-
api_get :show, id: stock_location.to_param
|
76
|
-
expect(json_response).to have_attributes(attributes)
|
77
|
-
expect(json_response['name']).to eq stock_location.name
|
78
|
-
end
|
79
|
-
|
80
|
-
it "can create a new stock location" do
|
81
|
-
params = {
|
82
|
-
stock_location: {
|
83
|
-
name: "North Pole",
|
84
|
-
active: true
|
85
|
-
}
|
86
|
-
}
|
87
|
-
|
88
|
-
api_post :create, params
|
89
|
-
expect(response.status).to eq(201)
|
90
|
-
expect(json_response).to have_attributes(attributes)
|
91
|
-
end
|
92
|
-
|
93
|
-
it "can update a stock location" do
|
94
|
-
params = {
|
95
|
-
id: stock_location.to_param,
|
96
|
-
stock_location: {
|
97
|
-
name: "South Pole"
|
98
|
-
}
|
99
|
-
}
|
100
|
-
|
101
|
-
api_put :update, params
|
102
|
-
expect(response.status).to eq(200)
|
103
|
-
expect(json_response['name']).to eq 'South Pole'
|
104
|
-
end
|
105
|
-
|
106
|
-
it "can delete a stock location" do
|
107
|
-
api_delete :destroy, id: stock_location.to_param
|
108
|
-
expect(response.status).to eq(204)
|
109
|
-
expect { stock_location.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
@@ -1,84 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Spree
|
4
|
-
describe Api::V1::StockMovementsController, :type => :controller do
|
5
|
-
render_views
|
6
|
-
|
7
|
-
let!(:stock_location) { create(:stock_location_with_items) }
|
8
|
-
let!(:stock_item) { stock_location.stock_items.order(:id).first }
|
9
|
-
let!(:stock_movement) { create(:stock_movement, stock_item: stock_item) }
|
10
|
-
let!(:attributes) { [:id, :quantity, :stock_item_id] }
|
11
|
-
|
12
|
-
before do
|
13
|
-
stub_authentication!
|
14
|
-
end
|
15
|
-
|
16
|
-
context 'as a user' do
|
17
|
-
it 'cannot see a list of stock movements' do
|
18
|
-
api_get :index, stock_location_id: stock_location.to_param
|
19
|
-
expect(response.status).to eq(404)
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'cannot see a stock movement' do
|
23
|
-
api_get :show, stock_location_id: stock_location.to_param, id: stock_movement.id
|
24
|
-
expect(response.status).to eq(404)
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'cannot create a stock movement' do
|
28
|
-
params = {
|
29
|
-
stock_location_id: stock_location.to_param,
|
30
|
-
stock_movement: {
|
31
|
-
stock_item_id: stock_item.to_param
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
api_post :create, params
|
36
|
-
expect(response.status).to eq(404)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
context 'as an admin' do
|
41
|
-
sign_in_as_admin!
|
42
|
-
|
43
|
-
it 'gets list of stock movements' do
|
44
|
-
api_get :index, stock_location_id: stock_location.to_param
|
45
|
-
expect(json_response['stock_movements'].first).to have_attributes(attributes)
|
46
|
-
expect(json_response['stock_movements'].first['stock_item']['count_on_hand']).to eq 11
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'can control the page size through a parameter' do
|
50
|
-
create(:stock_movement, stock_item: stock_item)
|
51
|
-
api_get :index, stock_location_id: stock_location.to_param, per_page: 1
|
52
|
-
expect(json_response['count']).to eq(1)
|
53
|
-
expect(json_response['current_page']).to eq(1)
|
54
|
-
expect(json_response['pages']).to eq(2)
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'can query the results through a paramter' do
|
58
|
-
expected_result = create(:stock_movement, :received, quantity: 10, stock_item: stock_item)
|
59
|
-
api_get :index, stock_location_id: stock_location.to_param, q: { quantity_eq: '10' }
|
60
|
-
expect(json_response['count']).to eq(1)
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'gets a stock movement' do
|
64
|
-
api_get :show, stock_location_id: stock_location.to_param, id: stock_movement.to_param
|
65
|
-
expect(json_response).to have_attributes(attributes)
|
66
|
-
expect(json_response['stock_item_id']).to eq stock_movement.stock_item_id
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'can create a new stock movement' do
|
70
|
-
params = {
|
71
|
-
stock_location_id: stock_location.to_param,
|
72
|
-
stock_movement: {
|
73
|
-
stock_item_id: stock_item.to_param
|
74
|
-
}
|
75
|
-
}
|
76
|
-
|
77
|
-
api_post :create, params
|
78
|
-
expect(response.status).to eq(201)
|
79
|
-
expect(json_response).to have_attributes(attributes)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
@@ -1,133 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
module Spree
|
4
|
-
describe Api::V1::StoresController, type: :controller do
|
5
|
-
render_views
|
6
|
-
|
7
|
-
let!(:store) do
|
8
|
-
create(:store, name: "My Spree Store", url: "spreestore.example.com")
|
9
|
-
end
|
10
|
-
|
11
|
-
before do
|
12
|
-
stub_authentication!
|
13
|
-
end
|
14
|
-
|
15
|
-
context "as an admin" do
|
16
|
-
sign_in_as_admin!
|
17
|
-
|
18
|
-
let!(:non_default_store) do
|
19
|
-
create(:store,
|
20
|
-
name: "Extra Store",
|
21
|
-
url: "spreestore-5.example.com",
|
22
|
-
default: false
|
23
|
-
)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "I can list the available stores" do
|
27
|
-
api_get :index
|
28
|
-
expect(json_response["stores"]).to eq([
|
29
|
-
{
|
30
|
-
"id" => store.id,
|
31
|
-
"name" => "My Spree Store",
|
32
|
-
"url" => "spreestore.example.com",
|
33
|
-
"meta_description" => nil,
|
34
|
-
"meta_keywords" => nil,
|
35
|
-
"seo_title" => nil,
|
36
|
-
"mail_from_address" => "spree@example.org",
|
37
|
-
"default_currency" => nil,
|
38
|
-
"code" => store.code,
|
39
|
-
"default" => true
|
40
|
-
},
|
41
|
-
{
|
42
|
-
"id" => non_default_store.id,
|
43
|
-
"name" => "Extra Store",
|
44
|
-
"url" => "spreestore-5.example.com",
|
45
|
-
"meta_description" => nil,
|
46
|
-
"meta_keywords" => nil,
|
47
|
-
"seo_title" => nil,
|
48
|
-
"mail_from_address" => "spree@example.org",
|
49
|
-
"default_currency" => nil,
|
50
|
-
"code" => non_default_store.code,
|
51
|
-
"default" => false
|
52
|
-
}
|
53
|
-
])
|
54
|
-
end
|
55
|
-
|
56
|
-
it "I can get the store details" do
|
57
|
-
api_get :show, id: store.id
|
58
|
-
expect(json_response).to eq(
|
59
|
-
"id" => store.id,
|
60
|
-
"name" => "My Spree Store",
|
61
|
-
"url" => "spreestore.example.com",
|
62
|
-
"meta_description" => nil,
|
63
|
-
"meta_keywords" => nil,
|
64
|
-
"seo_title" => nil,
|
65
|
-
"mail_from_address" => "spree@example.org",
|
66
|
-
"default_currency" => nil,
|
67
|
-
"code" => store.code,
|
68
|
-
"default" => true
|
69
|
-
)
|
70
|
-
end
|
71
|
-
|
72
|
-
it "I can create a new store" do
|
73
|
-
store_hash = {
|
74
|
-
code: "spree123",
|
75
|
-
name: "Hack0rz",
|
76
|
-
url: "spree123.example.com",
|
77
|
-
mail_from_address: "me@example.com"
|
78
|
-
}
|
79
|
-
api_post :create, store: store_hash
|
80
|
-
expect(response.status).to eq(201)
|
81
|
-
end
|
82
|
-
|
83
|
-
it "I can update an existing store" do
|
84
|
-
store_hash = {
|
85
|
-
url: "spree123.example.com",
|
86
|
-
mail_from_address: "me@example.com"
|
87
|
-
}
|
88
|
-
api_put :update, id: store.id, store: store_hash
|
89
|
-
expect(response.status).to eq(200)
|
90
|
-
expect(store.reload.url).to eql "spree123.example.com"
|
91
|
-
expect(store.reload.mail_from_address).to eql "me@example.com"
|
92
|
-
end
|
93
|
-
|
94
|
-
context "deleting a store" do
|
95
|
-
it "will fail if it's the default Store" do
|
96
|
-
api_delete :destroy, id: store.id
|
97
|
-
expect(response.status).to eq(422)
|
98
|
-
expect(json_response["errors"]["base"]).to eql(
|
99
|
-
["Cannot destroy the default Store."]
|
100
|
-
)
|
101
|
-
end
|
102
|
-
|
103
|
-
it "will destroy the store" do
|
104
|
-
api_delete :destroy, id: non_default_store.id
|
105
|
-
expect(response.status).to eq(204)
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
context "as an user" do
|
111
|
-
|
112
|
-
it "I cannot list all the stores" do
|
113
|
-
api_get :index
|
114
|
-
expect(response.status).to eq(401)
|
115
|
-
end
|
116
|
-
|
117
|
-
it "I cannot get the store details" do
|
118
|
-
api_get :show, id: store.id
|
119
|
-
expect(response.status).to eq(401)
|
120
|
-
end
|
121
|
-
|
122
|
-
it "I cannot create a new store" do
|
123
|
-
api_post :create, store: {}
|
124
|
-
expect(response.status).to eq(401)
|
125
|
-
end
|
126
|
-
|
127
|
-
it "I cannot update an existing store" do
|
128
|
-
api_put :update, id: store.id, store: {}
|
129
|
-
expect(response.status).to eq(401)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|