introspective_grape 0.3.5 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +13 -37
- data/CHANGELOG.md +7 -0
- data/gemfiles/2.2.0-Gemfile +1 -1
- data/gemfiles/Gemfile.rails.4.2.10 +12 -0
- data/gemfiles/Gemfile.rails.4.2.7.1 +1 -0
- data/gemfiles/Gemfile.rails.4.2.7.1.new.swagger +1 -0
- data/gemfiles/Gemfile.rails.4.2.8 +2 -0
- data/gemfiles/Gemfile.rails.5.0.0 +13 -0
- data/gemfiles/Gemfile.rails.5.0.1 +1 -1
- data/gemfiles/Gemfile.rails.5.1.0 +13 -0
- data/gemfiles/Gemfile.rails.5.2.0 +13 -0
- data/gemfiles/Gemfile.rails.6.0.0.beta1 +13 -0
- data/gemfiles/Gemfile.rails.master +1 -1
- data/introspective_grape.gemspec +11 -11
- data/lib/introspective_grape/api.rb +28 -29
- data/lib/introspective_grape/camel_snake.rb +30 -31
- data/lib/introspective_grape/create_helpers.rb +2 -2
- data/lib/introspective_grape/version.rb +1 -1
- data/spec/dummy/Gemfile +6 -4
- data/spec/dummy/app/models/role.rb +1 -1
- data/spec/dummy/app/models/user.rb +2 -2
- data/spec/dummy/config/application.rb +1 -1
- data/spec/dummy/config/environments/development.rb +3 -3
- data/spec/dummy/config/initializers/paperclip_adapter.rb +1 -1
- data/spec/requests/chat_api_spec.rb +26 -26
- data/spec/requests/company_api_spec.rb +15 -15
- data/spec/requests/location_api_spec.rb +18 -18
- data/spec/requests/project_api_spec.rb +20 -20
- data/spec/requests/role_api_spec.rb +4 -4
- data/spec/requests/sessions_api_spec.rb +10 -10
- data/spec/requests/swagger_spec.rb +1 -1
- data/spec/requests/user_api_spec.rb +34 -36
- metadata +29 -30
@@ -2,7 +2,7 @@ module IntrospectiveGrape
|
|
2
2
|
module CreateHelpers
|
3
3
|
|
4
4
|
def add_new_records_to_root_record(dsl, routes, params, model)
|
5
|
-
dsl.authorize model, :create?
|
5
|
+
dsl.send(:authorize, model, :create?)
|
6
6
|
ActiveRecord::Base.transaction do
|
7
7
|
old = find_leaves(routes, model, params)
|
8
8
|
model.update_attributes( dsl.send(:safe_params,params).permit(whitelist) )
|
@@ -13,7 +13,7 @@ module IntrospectiveGrape
|
|
13
13
|
|
14
14
|
def create_new_record(dsl, routes, params)
|
15
15
|
model = routes.first.model.new( dsl.send(:safe_params,params).permit(whitelist) )
|
16
|
-
dsl.authorize model, :create?
|
16
|
+
dsl.send(:authorize, model, :create?)
|
17
17
|
model.save!
|
18
18
|
|
19
19
|
# reload the model with eager loading
|
data/spec/dummy/Gemfile
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
-
gem 'rails'
|
2
|
+
gem 'rails'
|
3
3
|
|
4
4
|
#gem 'byebug'
|
5
|
-
|
5
|
+
gem 'camel_snake_keys'
|
6
6
|
|
7
|
+
gem 'devise'
|
7
8
|
gem 'delayed_paperclip'
|
8
9
|
#gem 'devise-async'
|
9
10
|
|
10
11
|
gem 'grape'
|
11
12
|
gem 'grape-entity'
|
12
|
-
gem 'grape-kaminari'
|
13
|
+
gem 'grape-kaminari', '<1.8.0'
|
13
14
|
gem 'grape-swagger'
|
15
|
+
gem 'introspective_grape', git: 'https://github.com/buermann/introspective_grape', branch: 'rails.5'
|
14
16
|
|
15
17
|
gem 'paperclip'
|
16
18
|
gem 'pundit'
|
17
19
|
|
18
|
-
gem 'sqlite3'
|
20
|
+
gem 'sqlite3', '< 1.4.0'
|
@@ -2,7 +2,7 @@ class Role < AbstractAdapter
|
|
2
2
|
belongs_to :user
|
3
3
|
belongs_to :ownable, polymorphic: true
|
4
4
|
|
5
|
-
validates_uniqueness_of :user_id, scope: [:ownable_type,:ownable_id], unless:
|
5
|
+
validates_uniqueness_of :user_id, scope: [:ownable_type,:ownable_id], unless: Proc.new {|u| u.user_id.nil? }, message: "user has already been assigned that role"
|
6
6
|
OWNABLE_TYPES = %w(Company Project).freeze
|
7
7
|
validates_inclusion_of :ownable_type, in: OWNABLE_TYPES
|
8
8
|
|
@@ -33,8 +33,8 @@ class User < AbstractAdapter
|
|
33
33
|
|
34
34
|
has_many :roles, dependent: :destroy, inverse_of: :user
|
35
35
|
accepts_nested_attributes_for :roles, allow_destroy: true
|
36
|
-
has_many :admin_companies, through: :roles, source: :ownable, source_type: Company
|
37
|
-
has_many :admin_projects, through: :roles, source: :ownable, source_type: Project
|
36
|
+
has_many :admin_companies, through: :roles, source: :ownable, source_type: 'Company'
|
37
|
+
has_many :admin_projects, through: :roles, source: :ownable, source_type: 'Project'
|
38
38
|
|
39
39
|
def all_admin_projects # aggregate companies' projects with project admin roles
|
40
40
|
(admin_companies.map(&:projects)+admin_projects).flatten
|
@@ -5,7 +5,7 @@ require "active_record/railtie"
|
|
5
5
|
require "action_controller/railtie"
|
6
6
|
require "action_mailer/railtie"
|
7
7
|
require "action_view/railtie"
|
8
|
-
|
8
|
+
require "sprockets/railtie"
|
9
9
|
require 'devise'
|
10
10
|
#require 'devise/async'
|
11
11
|
require 'grape-swagger'
|
@@ -26,16 +26,16 @@ Rails.application.configure do
|
|
26
26
|
# Debug mode disables concatenation and preprocessing of assets.
|
27
27
|
# This option may cause significant delays in view rendering with a large
|
28
28
|
# number of complex assets.
|
29
|
-
config.assets.debug = true
|
29
|
+
#config.assets.debug = true
|
30
30
|
|
31
31
|
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
32
32
|
# yet still be able to expire them through the digest params.
|
33
|
-
config.assets.digest = true
|
33
|
+
#config.assets.digest = true
|
34
34
|
|
35
35
|
# Adds additional error checking when serving assets at runtime.
|
36
36
|
# Checks for improperly declared sprockets dependencies.
|
37
37
|
# Raises helpful error messages.
|
38
|
-
config.assets.raise_runtime_errors = true
|
38
|
+
#config.assets.raise_runtime_errors = true
|
39
39
|
|
40
40
|
# Raises error for missing translations
|
41
41
|
# config.action_view.raise_on_missing_translations = true
|
@@ -31,7 +31,7 @@ describe Dummy::ChatAPI, type: :request do
|
|
31
31
|
|
32
32
|
it "should return a list of a user's chats" do
|
33
33
|
get "/api/v1/chats"
|
34
|
-
response.should
|
34
|
+
response.should be_successful
|
35
35
|
json.size.should == 2
|
36
36
|
json.first['creator_id'].to_i.should == @sender.id
|
37
37
|
json.first['users'].size.should == Chat.find(json.first['id']).users.size
|
@@ -40,20 +40,20 @@ describe Dummy::ChatAPI, type: :request do
|
|
40
40
|
context :notifications do
|
41
41
|
it "should get new chat notifications" do
|
42
42
|
get "/api/v1/chats/notifications/"
|
43
|
-
response.should
|
43
|
+
response.should be_successful
|
44
44
|
json.keys.size.should == 1
|
45
45
|
json[@pm.id.to_s].should == 3
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should get new chat notifications for a particular chat" do
|
49
|
-
get "/api/v1/chats/notifications/", id: @pm.id
|
50
|
-
response.should
|
49
|
+
get "/api/v1/chats/notifications/", params: { id: @pm.id }
|
50
|
+
response.should be_successful
|
51
51
|
json[@pm.id.to_s].should == 3
|
52
52
|
end
|
53
53
|
|
54
54
|
it "should return 0 for non-existent chats" do
|
55
|
-
get "/api/v1/chats/notifications/", id: 0
|
56
|
-
response.should
|
55
|
+
get "/api/v1/chats/notifications/", params: { id: 0 }
|
56
|
+
response.should be_successful
|
57
57
|
json['0'].should == 0
|
58
58
|
end
|
59
59
|
end
|
@@ -61,23 +61,23 @@ describe Dummy::ChatAPI, type: :request do
|
|
61
61
|
context :messages do
|
62
62
|
|
63
63
|
it "should get no new chat messages if user was last to reply" do
|
64
|
-
get "/api/v1/chats/messages", id: @chat.id, new: true
|
65
|
-
response.should
|
64
|
+
get "/api/v1/chats/messages", params: { id: @chat.id, new: true }
|
65
|
+
response.should be_successful
|
66
66
|
json.size.should == 0
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should get new chat messages if user recieves another reply" do
|
70
70
|
@sender.reply(@chat, "And now for something completely different.")
|
71
|
-
get "/api/v1/chats/messages", id: @chat.id, new: true
|
72
|
-
response.should
|
71
|
+
get "/api/v1/chats/messages", params: { id: @chat.id, new: true }
|
72
|
+
response.should be_successful
|
73
73
|
json.size.should == 1
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should mark all new messages from all chats as read if mark_as_read is true" do
|
77
77
|
@sender.reply(@chat, 'A new response.')
|
78
78
|
@current_user.new_messages?.keys.size.should == 2
|
79
|
-
get "/api/v1/chats/messages", new: true, mark_as_read: true
|
80
|
-
response.should
|
79
|
+
get "/api/v1/chats/messages", params: { new: true, mark_as_read: true }
|
80
|
+
response.should be_successful
|
81
81
|
json.size.should == 4
|
82
82
|
@current_user.new_messages?.keys.size.should == 0
|
83
83
|
end
|
@@ -86,8 +86,8 @@ describe Dummy::ChatAPI, type: :request do
|
|
86
86
|
|
87
87
|
context :users do
|
88
88
|
it "should list the users in a chat" do
|
89
|
-
get "/api/v1/chats/users", id: @chat.id
|
90
|
-
response.should
|
89
|
+
get "/api/v1/chats/users", params: { id: @chat.id }
|
90
|
+
response.should be_successful
|
91
91
|
json.size.should == 3
|
92
92
|
json.map{|u| u['email']}.sort.should == [ "current_user@springshot.com", "lurker@springshot.com", "sender@springshot.com" ]
|
93
93
|
end
|
@@ -95,8 +95,8 @@ describe Dummy::ChatAPI, type: :request do
|
|
95
95
|
it "should add a new user to a chat" do
|
96
96
|
new_user1 = User.make
|
97
97
|
new_user1.save!
|
98
|
-
post "/api/v1/chats/users", id: @chat.id, user_ids: new_user1.id
|
99
|
-
response.should
|
98
|
+
post "/api/v1/chats/users", params: { id: @chat.id, user_ids: new_user1.id }
|
99
|
+
response.should be_successful
|
100
100
|
json['status'].should == true
|
101
101
|
@chat.reload
|
102
102
|
@chat.active_users.include?(new_user1).should == true
|
@@ -107,8 +107,8 @@ describe Dummy::ChatAPI, type: :request do
|
|
107
107
|
new_user2 = User.make
|
108
108
|
new_user1.save!
|
109
109
|
new_user2.save!
|
110
|
-
post "/api/v1/chats/users", id: @chat.id, user_ids: "#{new_user1.id},#{new_user2.id}"
|
111
|
-
response.should
|
110
|
+
post "/api/v1/chats/users", params: { id: @chat.id, user_ids: "#{new_user1.id},#{new_user2.id}" }
|
111
|
+
response.should be_successful
|
112
112
|
json['status'].should == true
|
113
113
|
@chat.reload
|
114
114
|
@chat.active_users.include?(new_user1).should == true
|
@@ -117,7 +117,7 @@ describe Dummy::ChatAPI, type: :request do
|
|
117
117
|
|
118
118
|
it "should be invalid to add an already active chat member to a chat" do
|
119
119
|
@chat.chat_users.size.should == 3
|
120
|
-
post "/api/v1/chats/users", id: @chat.id, user_ids: @chat.active_users.first.id
|
120
|
+
post "/api/v1/chats/users", params: { id: @chat.id, user_ids: @chat.active_users.first.id }
|
121
121
|
response.status.should == 400
|
122
122
|
json['error'].should == "#{@chat.active_users.first.name} is already present in this chat."
|
123
123
|
@chat.reload
|
@@ -125,7 +125,7 @@ describe Dummy::ChatAPI, type: :request do
|
|
125
125
|
end
|
126
126
|
|
127
127
|
it "should raise an error when an outsider tries to add themselves to a chat" do
|
128
|
-
post "/api/v1/chats/users", id: @lurk.id, user_ids: @current_user.id
|
128
|
+
post "/api/v1/chats/users", params: { id: @lurk.id, user_ids: @current_user.id }
|
129
129
|
response.status.should == 400
|
130
130
|
json['error'].should == 'Only current chat participants can add users.'
|
131
131
|
@lurk.reload
|
@@ -136,8 +136,8 @@ describe Dummy::ChatAPI, type: :request do
|
|
136
136
|
|
137
137
|
context :chat do
|
138
138
|
it "should start a new chat" do
|
139
|
-
post "/api/v1/chats", user_ids:@lurker.id, message: 'a new chat'
|
140
|
-
response.should
|
139
|
+
post "/api/v1/chats", params: { user_ids:@lurker.id, message: 'a new chat' }
|
140
|
+
response.should be_successful
|
141
141
|
json['creator_id'].should == @current_user.id
|
142
142
|
Chat.last.creator.should == @current_user
|
143
143
|
Chat.last.messages.map(&:message).first.should == 'a new chat'
|
@@ -145,8 +145,8 @@ describe Dummy::ChatAPI, type: :request do
|
|
145
145
|
end
|
146
146
|
|
147
147
|
it "should reply to a chat" do
|
148
|
-
put "/api/v1/chats/#{@chat.id}", message: 'A reply.'
|
149
|
-
response.should
|
148
|
+
put "/api/v1/chats/#{@chat.id}", params: { message: 'A reply.' }
|
149
|
+
response.should be_successful
|
150
150
|
ChatMessage.last.author.should == @current_user
|
151
151
|
@sender.read_messages(Chat.last.id ).last.message.should == 'A reply.'
|
152
152
|
@lurker.read_messages(Chat.last.id ).last.message.should == 'A reply.'
|
@@ -154,7 +154,7 @@ describe Dummy::ChatAPI, type: :request do
|
|
154
154
|
|
155
155
|
it "should leave a chat" do
|
156
156
|
delete "/api/v1/chats/#{@chat.id}"
|
157
|
-
response.should
|
157
|
+
response.should be_successful
|
158
158
|
json['status'].should == true
|
159
159
|
@chat.reload
|
160
160
|
@chat.active_users.include?(@current_user).should == false
|
@@ -163,7 +163,7 @@ describe Dummy::ChatAPI, type: :request do
|
|
163
163
|
it "should only allow chat participants to reply" do
|
164
164
|
@current_user.leave_chat(@chat)
|
165
165
|
@current_user.reload
|
166
|
-
put "/api/v1/chats/#{@chat.id}", message: "I'm an interloper"
|
166
|
+
put "/api/v1/chats/#{@chat.id}", params: { message: "I'm an interloper" }
|
167
167
|
response.status.should == 400
|
168
168
|
json['error'].should == 'Messages: is invalid'
|
169
169
|
@chat.messages.last.should_not == "I'm an interloper"
|
@@ -4,13 +4,13 @@ describe Dummy::CompanyAPI, type: :request do
|
|
4
4
|
context :default_values do
|
5
5
|
it "should respect default values" do
|
6
6
|
get '/api/v1/companies/special/list'
|
7
|
-
response.should
|
7
|
+
response.should be_successful
|
8
8
|
json.should eq({"boolean_default"=>false, "string_default"=>"foo", "integer_default"=>123})
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should override default values" do
|
12
|
-
get '/api/v1/companies/special/list', boolean_default: true, string_default: 'bar', integer_default: 321
|
13
|
-
response.should
|
12
|
+
get '/api/v1/companies/special/list', params: { boolean_default: true, string_default: 'bar', integer_default: 321 }
|
13
|
+
response.should be_successful
|
14
14
|
json.should eq({"boolean_default"=>true, "string_default"=>"bar", "integer_default"=>321})
|
15
15
|
end
|
16
16
|
end
|
@@ -22,7 +22,7 @@ describe Dummy::CompanyAPI, type: :request do
|
|
22
22
|
|
23
23
|
get '/api/v1/companies'
|
24
24
|
|
25
|
-
response.should
|
25
|
+
response.should be_successful
|
26
26
|
json.length.should eq 25
|
27
27
|
json.first['id'].should eq Company.first.id
|
28
28
|
response.headers.slice("X-Total", "X-Total-Pages", "X-Per-Page", "X-Page", "X-Next-Page", "X-Prev-Page", "X-Offset").values.should eq ["30", "2", "25", "1", "2", "", "0"]
|
@@ -37,14 +37,14 @@ describe Dummy::CompanyAPI, type: :request do
|
|
37
37
|
|
38
38
|
it "should return a list of companies" do
|
39
39
|
get '/api/v1/companies'
|
40
|
-
response.should
|
40
|
+
response.should be_successful
|
41
41
|
json.length.should > 0
|
42
42
|
json.map{|c| c['id'].to_i}.include?(company.id).should == true
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should return the specified company" do
|
46
46
|
get "/api/v1/companies/#{company.id}"
|
47
|
-
response.should
|
47
|
+
response.should be_successful
|
48
48
|
json['name'].should == company.name
|
49
49
|
end
|
50
50
|
|
@@ -55,14 +55,14 @@ describe Dummy::CompanyAPI, type: :request do
|
|
55
55
|
|
56
56
|
|
57
57
|
it "should create a company" do
|
58
|
-
post "/api/v1/companies", { name: 'Test 123', short_name: 'T123' }
|
59
|
-
response.should
|
58
|
+
post "/api/v1/companies", params: { name: 'Test 123', short_name: 'T123' }
|
59
|
+
response.should be_successful
|
60
60
|
json['name'].should == "Test 123"
|
61
61
|
json['short_name'].should == "T123"
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should validate a new company" do
|
65
|
-
post "/api/v1/companies", { name: 'a'*257, short_name: 'a'*11 }
|
65
|
+
post "/api/v1/companies", params: { name: 'a'*257, short_name: 'a'*11 }
|
66
66
|
response.code.should == "400"
|
67
67
|
json['error'].should == "Name: is too long (maximum is 256 characters), Short Name: is too long (maximum is 10 characters)"
|
68
68
|
end
|
@@ -70,8 +70,8 @@ describe Dummy::CompanyAPI, type: :request do
|
|
70
70
|
|
71
71
|
it "should update the company" do
|
72
72
|
new_name = 'New Test 1234'
|
73
|
-
put "/api/v1/companies/#{company.id}", { name: new_name }
|
74
|
-
response.should
|
73
|
+
put "/api/v1/companies/#{company.id}", params: { name: new_name }
|
74
|
+
response.should be_successful
|
75
75
|
company.reload
|
76
76
|
company.name.should == new_name
|
77
77
|
json['name'].should == new_name
|
@@ -79,7 +79,7 @@ describe Dummy::CompanyAPI, type: :request do
|
|
79
79
|
|
80
80
|
it "should validate the company on update" do
|
81
81
|
old_name = company.name
|
82
|
-
put "/api/v1/companies/#{company.id}", { name: 'a'*257, short_name: 'a'*11 }
|
82
|
+
put "/api/v1/companies/#{company.id}", params: { name: 'a'*257, short_name: 'a'*11 }
|
83
83
|
response.code.should == "400"
|
84
84
|
company.reload
|
85
85
|
company.name.should == old_name
|
@@ -87,17 +87,17 @@ describe Dummy::CompanyAPI, type: :request do
|
|
87
87
|
end
|
88
88
|
|
89
89
|
it "should validate json parameters" do
|
90
|
-
put "/api/v1/companies/#{company.id}", { gizmos: "garbage" }
|
90
|
+
put "/api/v1/companies/#{company.id}", params: { gizmos: "garbage" }
|
91
91
|
json["error"].should eq "gizmos must be valid JSON!"
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should validate json array parameters" do
|
95
|
-
put "/api/v1/companies/#{company.id}", { widgets: "[garbage[\"A\",\"B\"]" }
|
95
|
+
put "/api/v1/companies/#{company.id}", params: { widgets: "[garbage[\"A\",\"B\"]" }
|
96
96
|
json["error"].should eq "widgets must be a valid JSON array!"
|
97
97
|
end
|
98
98
|
|
99
99
|
it "should validate json hash parameters" do
|
100
|
-
put "/api/v1/companies/#{company.id}", { sprockets: "{\"foo\":\"bar\"}garbage}" }
|
100
|
+
put "/api/v1/companies/#{company.id}", params: { sprockets: "{\"foo\":\"bar\"}garbage}" }
|
101
101
|
json["error"].should eq "sprockets must be a valid JSON hash!"
|
102
102
|
end
|
103
103
|
|
@@ -13,7 +13,7 @@ describe Dummy::LocationAPI, type: :request do
|
|
13
13
|
|
14
14
|
it "should return an array of camelized location entities" do
|
15
15
|
get '/api/v1/locations'
|
16
|
-
response.should
|
16
|
+
response.should be_successful
|
17
17
|
j = JSON.parse(response.body)
|
18
18
|
j.each {|l| l.key?('childLocations').should be_truthy }
|
19
19
|
j.each {|l| l.key?('parentLocationId').should be_truthy }
|
@@ -23,7 +23,7 @@ describe Dummy::LocationAPI, type: :request do
|
|
23
23
|
|
24
24
|
it "should return a list of top level locations and their children" do
|
25
25
|
get '/api/v1/locations'
|
26
|
-
response.should
|
26
|
+
response.should be_successful
|
27
27
|
json.length.should eq 2
|
28
28
|
json.map{|l| l['id'].to_i }.include?(location.id).should == true
|
29
29
|
|
@@ -33,15 +33,15 @@ describe Dummy::LocationAPI, type: :request do
|
|
33
33
|
|
34
34
|
|
35
35
|
it "should generate basic filters on the whitelisted model attributes" do
|
36
|
-
get '/api/v1/locations', { name: "TEST" }
|
37
|
-
response.should
|
36
|
+
get '/api/v1/locations', params: { name: "TEST" }
|
37
|
+
response.should be_successful
|
38
38
|
json.length.should eq 1
|
39
39
|
json.first['name'].should eq "TEST"
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should parse more advanced JSON filters" do
|
43
|
-
get '/api/v1/locations', filter: "{\"child_locations_locations\":{\"name\":\"Terminal A\"}}"
|
44
|
-
response.should
|
43
|
+
get '/api/v1/locations', params: { filter: "{\"child_locations_locations\":{\"name\":\"Terminal A\"}}" }
|
44
|
+
response.should be_successful
|
45
45
|
json.length.should eq 1
|
46
46
|
json.first['child_locations'].length.should eq 1
|
47
47
|
json.first['child_locations'].first['name'].should eq "Terminal A"
|
@@ -49,7 +49,7 @@ describe Dummy::LocationAPI, type: :request do
|
|
49
49
|
|
50
50
|
it "should return the specified location" do
|
51
51
|
get "/api/v1/locations/#{location.id}"
|
52
|
-
response.should
|
52
|
+
response.should be_successful
|
53
53
|
json['name'].should == location.name
|
54
54
|
end
|
55
55
|
|
@@ -59,15 +59,15 @@ describe Dummy::LocationAPI, type: :request do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should create a location" do
|
62
|
-
post "/api/v1/locations", { name: 'Test 123', kind: "terminal" }
|
63
|
-
response.should
|
62
|
+
post "/api/v1/locations", params: { name: 'Test 123', kind: "terminal" }
|
63
|
+
response.should be_successful
|
64
64
|
json['name'].should == "Test 123"
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should create a location with a beacon" do
|
68
68
|
b = LocationBeacon.make(company: Company.last)
|
69
|
-
post "/api/v1/locations", { name: 'Test 123', kind: "gate", beacons_attributes: [ b.attributes ] }
|
70
|
-
response.should
|
69
|
+
post "/api/v1/locations", params: { name: 'Test 123', kind: "gate", beacons_attributes: [ b.attributes ] }
|
70
|
+
response.should be_successful
|
71
71
|
json['name'].should == "Test 123"
|
72
72
|
l = Location.find(json['id'])
|
73
73
|
created = l.beacons.first
|
@@ -78,8 +78,8 @@ describe Dummy::LocationAPI, type: :request do
|
|
78
78
|
|
79
79
|
it "should create a location with gps coordinates" do
|
80
80
|
gps = LocationGps.make
|
81
|
-
post "/api/v1/locations", { name: 'Test 123', kind: "airport", gps_attributes: gps.attributes }
|
82
|
-
response.should
|
81
|
+
post "/api/v1/locations", params: { name: 'Test 123', kind: "airport", gps_attributes: gps.attributes }
|
82
|
+
response.should be_successful
|
83
83
|
json['name'].should == "Test 123"
|
84
84
|
l = Location.find(json['id'])
|
85
85
|
created = l.gps
|
@@ -90,15 +90,15 @@ describe Dummy::LocationAPI, type: :request do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
it "should validate a new location" do
|
93
|
-
post "/api/v1/locations", { name: 'test' }
|
93
|
+
post "/api/v1/locations", params: { name: 'test' }
|
94
94
|
response.code.should == "400"
|
95
95
|
json['error'].should == "Kind: is not included in the list"
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should update the location" do
|
99
99
|
new_name = 'New Test 1234'
|
100
|
-
put "/api/v1/locations/#{location.id}", { name: new_name }
|
101
|
-
response.should
|
100
|
+
put "/api/v1/locations/#{location.id}", params: { name: new_name }
|
101
|
+
response.should be_successful
|
102
102
|
location.reload
|
103
103
|
location.name.should == new_name
|
104
104
|
json['name'].should == new_name
|
@@ -106,7 +106,7 @@ describe Dummy::LocationAPI, type: :request do
|
|
106
106
|
|
107
107
|
it "should validate the location on update" do
|
108
108
|
old_kind = location.kind
|
109
|
-
put "/api/v1/locations/#{location.id}", { kind: 'bring the noise' }
|
109
|
+
put "/api/v1/locations/#{location.id}", params: { kind: 'bring the noise' }
|
110
110
|
response.code.should == "400"
|
111
111
|
location.reload
|
112
112
|
location.kind.should == old_kind
|
@@ -116,7 +116,7 @@ describe Dummy::LocationAPI, type: :request do
|
|
116
116
|
it "should destroy the location and all of its child and grandchild locations" do
|
117
117
|
child_locations = location.child_locations.map {|l| [l.id, l.child_locations.map(&:id)] }.flatten
|
118
118
|
delete "/api/v1/locations/#{location.id}"
|
119
|
-
response.should
|
119
|
+
response.should be_successful
|
120
120
|
Location.find_by_id(location.id).should == nil
|
121
121
|
Location.where(id: child_locations).size.should == 0
|
122
122
|
end
|