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.
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