spree_api 3.1.5 → 3.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/api/v1/product_properties_controller.rb +7 -10
  3. data/app/views/spree/api/v1/countries/index.v1.rabl +1 -1
  4. data/app/views/spree/api/v1/credit_cards/index.v1.rabl +1 -1
  5. data/app/views/spree/api/v1/orders/index.v1.rabl +1 -1
  6. data/app/views/spree/api/v1/orders/mine.v1.rabl +1 -1
  7. data/app/views/spree/api/v1/payments/index.v1.rabl +1 -1
  8. data/app/views/spree/api/v1/product_properties/index.v1.rabl +1 -1
  9. data/app/views/spree/api/v1/products/index.v1.rabl +1 -1
  10. data/app/views/spree/api/v1/properties/index.v1.rabl +1 -1
  11. data/app/views/spree/api/v1/return_authorizations/index.v1.rabl +1 -1
  12. data/app/views/spree/api/v1/shipments/mine.v1.rabl +1 -1
  13. data/app/views/spree/api/v1/states/index.v1.rabl +1 -1
  14. data/app/views/spree/api/v1/stock_items/index.v1.rabl +1 -1
  15. data/app/views/spree/api/v1/stock_locations/index.v1.rabl +1 -1
  16. data/app/views/spree/api/v1/stock_movements/index.v1.rabl +1 -1
  17. data/app/views/spree/api/v1/taxonomies/index.v1.rabl +1 -1
  18. data/app/views/spree/api/v1/taxons/index.v1.rabl +1 -1
  19. data/app/views/spree/api/v1/users/index.v1.rabl +1 -1
  20. data/app/views/spree/api/v1/zones/index.v1.rabl +1 -1
  21. data/spree_api.gemspec +1 -2
  22. metadata +6 -88
  23. data/spec/controllers/spree/api/base_controller_spec.rb +0 -96
  24. data/spec/controllers/spree/api/v1/addresses_controller_spec.rb +0 -56
  25. data/spec/controllers/spree/api/v1/checkouts_controller_spec.rb +0 -363
  26. data/spec/controllers/spree/api/v1/classifications_controller_spec.rb +0 -48
  27. data/spec/controllers/spree/api/v1/countries_controller_spec.rb +0 -48
  28. data/spec/controllers/spree/api/v1/credit_cards_controller_spec.rb +0 -80
  29. data/spec/controllers/spree/api/v1/images_controller_spec.rb +0 -115
  30. data/spec/controllers/spree/api/v1/inventory_units_controller_spec.rb +0 -49
  31. data/spec/controllers/spree/api/v1/line_items_controller_spec.rb +0 -184
  32. data/spec/controllers/spree/api/v1/option_types_controller_spec.rb +0 -122
  33. data/spec/controllers/spree/api/v1/option_values_controller_spec.rb +0 -141
  34. data/spec/controllers/spree/api/v1/orders_controller_spec.rb +0 -735
  35. data/spec/controllers/spree/api/v1/payments_controller_spec.rb +0 -234
  36. data/spec/controllers/spree/api/v1/product_properties_controller_spec.rb +0 -116
  37. data/spec/controllers/spree/api/v1/products_controller_spec.rb +0 -409
  38. data/spec/controllers/spree/api/v1/promotion_application_spec.rb +0 -50
  39. data/spec/controllers/spree/api/v1/promotions_controller_spec.rb +0 -64
  40. data/spec/controllers/spree/api/v1/properties_controller_spec.rb +0 -102
  41. data/spec/controllers/spree/api/v1/return_authorizations_controller_spec.rb +0 -161
  42. data/spec/controllers/spree/api/v1/shipments_controller_spec.rb +0 -187
  43. data/spec/controllers/spree/api/v1/states_controller_spec.rb +0 -86
  44. data/spec/controllers/spree/api/v1/stock_items_controller_spec.rb +0 -143
  45. data/spec/controllers/spree/api/v1/stock_locations_controller_spec.rb +0 -113
  46. data/spec/controllers/spree/api/v1/stock_movements_controller_spec.rb +0 -84
  47. data/spec/controllers/spree/api/v1/stores_controller_spec.rb +0 -133
  48. data/spec/controllers/spree/api/v1/taxonomies_controller_spec.rb +0 -114
  49. data/spec/controllers/spree/api/v1/taxons_controller_spec.rb +0 -177
  50. data/spec/controllers/spree/api/v1/unauthenticated_products_controller_spec.rb +0 -26
  51. data/spec/controllers/spree/api/v1/users_controller_spec.rb +0 -153
  52. data/spec/controllers/spree/api/v1/variants_controller_spec.rb +0 -205
  53. data/spec/controllers/spree/api/v1/zones_controller_spec.rb +0 -91
  54. data/spec/fixtures/thinking-cat.jpg +0 -0
  55. data/spec/models/spree/legacy_user_spec.rb +0 -19
  56. data/spec/requests/rabl_cache_spec.rb +0 -32
  57. data/spec/requests/ransackable_attributes_spec.rb +0 -79
  58. data/spec/requests/version_spec.rb +0 -19
  59. data/spec/shared_examples/protect_product_actions.rb +0 -17
  60. data/spec/spec_helper.rb +0 -55
  61. data/spec/support/controller_hacks.rb +0 -33
  62. data/spec/support/database_cleaner.rb +0 -14
  63. 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