introspective_grape 0.3.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +5 -52
- data/CHANGELOG.md +46 -0
- data/Gemfile +2 -0
- data/README.md +15 -0
- data/gemfiles/{Gemfile.rails.4.2.7.1 → Gemfile.rails.5.0.0} +5 -4
- data/gemfiles/Gemfile.rails.5.0.1 +1 -0
- data/gemfiles/{Gemfile.rails.4.2.7.1.new.swagger → Gemfile.rails.5.1.0} +5 -3
- data/gemfiles/{Gemfile.rails.3.2.22 → Gemfile.rails.5.2.0} +5 -4
- data/gemfiles/Gemfile.rails.master +1 -0
- data/introspective_grape.gemspec +15 -13
- data/lib/introspective_grape.rb +1 -1
- data/lib/introspective_grape/api.rb +38 -31
- data/lib/introspective_grape/camel_snake.rb +30 -31
- data/lib/introspective_grape/create_helpers.rb +8 -3
- data/lib/introspective_grape/version.rb +1 -1
- data/spec/dummy/Gemfile +6 -3
- data/spec/dummy/app/api/api_helpers.rb +2 -0
- data/spec/dummy/app/api/dummy/company_api.rb +1 -1
- data/spec/dummy/app/models/image.rb +1 -1
- data/spec/dummy/app/models/role.rb +1 -1
- data/spec/dummy/app/models/user.rb +2 -2
- data/spec/dummy/config.ru +12 -0
- 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/dummy/db/migrate/20190325231304_add_test_data.rb +5 -0
- data/spec/dummy/db/schema.rb +154 -173
- 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 +21 -21
- 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 -34
- metadata +33 -44
- data/gemfiles/2.0.0-Gemfile +0 -22
- data/gemfiles/2.2.0-Gemfile +0 -21
- data/gemfiles/Gemfile.rails.4.1.13 +0 -13
- data/gemfiles/Gemfile.rails.4.2.8 +0 -12
@@ -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
|
@@ -24,15 +24,15 @@ describe Dummy::ProjectAPI, type: :request do
|
|
24
24
|
|
25
25
|
context "As a super admin" do
|
26
26
|
it "should return a list of all projects" do
|
27
|
-
get '/api/v1/projects', per_page: 10, offset: 0
|
28
|
-
response.should
|
27
|
+
get '/api/v1/projects', params: { per_page: 10, offset: 0 }
|
28
|
+
response.should be_successful
|
29
29
|
json.length.should == Project.count
|
30
30
|
json.map{|c| c['id'].to_i}.include?(project.id).should == true
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should return the specified project" do
|
34
34
|
get "/api/v1/projects/#{project.id}"
|
35
|
-
response.should
|
35
|
+
response.should be_successful
|
36
36
|
json['name'].should == project.name
|
37
37
|
end
|
38
38
|
|
@@ -56,8 +56,8 @@ describe Dummy::ProjectAPI, type: :request do
|
|
56
56
|
p = {
|
57
57
|
name: 'New Team', team_users_attributes: [{ user_id: @u1.id }, { user_id: @u2.id }]
|
58
58
|
}
|
59
|
-
post "/api/v1/projects/#{project.id}/teams", p
|
60
|
-
response.should
|
59
|
+
post "/api/v1/projects/#{project.id}/teams", params: p
|
60
|
+
response.should be_successful
|
61
61
|
Team.last.name.should == 'New Team'
|
62
62
|
Team.last.users.to_a.should == [@u1,@u2]
|
63
63
|
end
|
@@ -66,8 +66,8 @@ describe Dummy::ProjectAPI, type: :request do
|
|
66
66
|
p = { team_users_attributes: [
|
67
67
|
{ user_id: @u1.id }, { user_id: @u2.id }
|
68
68
|
] }
|
69
|
-
put "/api/v1/projects/#{project.id}/teams/#{@team.id}", p
|
70
|
-
response.should
|
69
|
+
put "/api/v1/projects/#{project.id}/teams/#{@team.id}", params: p
|
70
|
+
response.should be_successful
|
71
71
|
|
72
72
|
Team.last.users.to_a.should == [@u1,@u2]
|
73
73
|
end
|
@@ -78,8 +78,8 @@ describe Dummy::ProjectAPI, type: :request do
|
|
78
78
|
p = { team_users_attributes: [
|
79
79
|
{ id: @team.team_users.where(user_id:@u1.id).first.id, _destroy: 1 }
|
80
80
|
] }
|
81
|
-
put "/api/v1/projects/#{project.id}/teams/#{@team.id}", p
|
82
|
-
response.should
|
81
|
+
put "/api/v1/projects/#{project.id}/teams/#{@team.id}", params: p
|
82
|
+
response.should be_successful
|
83
83
|
Team.last.users.to_a.should == [@u2]
|
84
84
|
end
|
85
85
|
end
|
@@ -87,8 +87,8 @@ describe Dummy::ProjectAPI, type: :request do
|
|
87
87
|
context "edit a project team via nested routes" do
|
88
88
|
it "should add a team member" do
|
89
89
|
p = { user_id: @u1.id }
|
90
|
-
post "/api/v1/projects/#{project.id}/teams/#{@team.id}/team_users", p
|
91
|
-
response.should
|
90
|
+
post "/api/v1/projects/#{project.id}/teams/#{@team.id}/team_users", params: p
|
91
|
+
response.should be_successful
|
92
92
|
Team.last.users.to_a.should == [@u1]
|
93
93
|
end
|
94
94
|
|
@@ -97,7 +97,7 @@ describe Dummy::ProjectAPI, type: :request do
|
|
97
97
|
@team.save!
|
98
98
|
id = @team.team_users.where(user_id:@u1.id).first.id
|
99
99
|
delete "/api/v1/projects/#{project.id}/teams/#{@team.id}/team_users/#{id}"
|
100
|
-
response.should
|
100
|
+
response.should be_successful
|
101
101
|
Team.last.users.to_a.should == [@u2]
|
102
102
|
end
|
103
103
|
end
|
@@ -118,8 +118,8 @@ describe Dummy::ProjectAPI, type: :request do
|
|
118
118
|
end
|
119
119
|
|
120
120
|
it "should return a list of all the company's projects" do
|
121
|
-
get '/api/v1/projects', offset: 0
|
122
|
-
response.should
|
121
|
+
get '/api/v1/projects', params: { offset: 0 }
|
122
|
+
response.should be_successful
|
123
123
|
json.length.should == 2
|
124
124
|
json.map{|c| c['name']}.include?("Manufacture Sprockets").should == true
|
125
125
|
json.map{|c| c['name']}.include?("Disassemble Sprockets").should == true
|
@@ -140,8 +140,8 @@ describe Dummy::ProjectAPI, type: :request do
|
|
140
140
|
end
|
141
141
|
|
142
142
|
it "should return a list of all the project admin's projects" do
|
143
|
-
get '/api/v1/projects', offset: 0
|
144
|
-
response.should
|
143
|
+
get '/api/v1/projects', params: { offset: 0 }
|
144
|
+
response.should be_successful
|
145
145
|
json.length.should == 1
|
146
146
|
json.map{|c| c['name']}.include?("Manufacture Sprockets").should == true
|
147
147
|
json.map{|c| c['name']}.include?("Disassemble Sprockets").should == false
|
@@ -156,7 +156,7 @@ describe Dummy::ProjectAPI, type: :request do
|
|
156
156
|
|
157
157
|
it "should return the project API's declared default paginated results" do
|
158
158
|
get '/api/v1/projects'
|
159
|
-
response.should
|
159
|
+
response.should be_successful
|
160
160
|
json.length.should == 2
|
161
161
|
json.first['id'].should eq Project.all[2].id
|
162
162
|
json.second['id'].should eq Project.all[3].id
|
@@ -164,17 +164,17 @@ describe Dummy::ProjectAPI, type: :request do
|
|
164
164
|
end
|
165
165
|
|
166
166
|
it "should return the request number of results" do
|
167
|
-
get '/api/v1/projects', per_page: 9, offset: 9
|
168
|
-
response.should
|
167
|
+
get '/api/v1/projects', params: { per_page: 9, offset: 9 }
|
168
|
+
response.should be_successful
|
169
169
|
json.size.should == 9
|
170
170
|
json.map {|j| j['id']}.should eq Project.all[9..17].map(&:id)
|
171
171
|
response.headers.slice("X-Total", "X-Total-Pages", "X-Per-Page", "X-Page", "X-Next-Page", "X-Prev-Page", "X-Offset").values.should eq ["20", "2", "9", "1", "2", "", "9"]
|
172
172
|
end
|
173
173
|
|
174
174
|
it "should respect the maximum number of results" do
|
175
|
-
get '/api/v1/projects', per_page: 20, offset: 0
|
175
|
+
get '/api/v1/projects', params: { per_page: 20, offset: 0 }
|
176
176
|
response.code.should eq "400"
|
177
|
-
json['error'].should eq "per_page must be less than 10"
|
177
|
+
json['error'].should eq "per_page must be less than or equal 10"
|
178
178
|
end
|
179
179
|
end
|
180
180
|
|