@@ -137,7 +137,61 @@ def load_response_fixture(path_suffix)
137
137
end
138
138
end
139
139
140
- describe 'a variety of POA request configurations' do
140
+ describe 'sorting' do
141
+ let! ( :poa_requests ) do
142
+ [
143
+ create ( :power_of_attorney_request , :with_veteran_claimant ,
144
+ created_at : time . to_time - 2 . days ,
145
+ poa_code :) ,
146
+ create ( :power_of_attorney_request , :with_veteran_claimant ,
147
+ created_at : time . to_time - 1 . day ,
148
+ poa_code :) ,
149
+ create ( :power_of_attorney_request , :with_veteran_claimant ,
150
+ created_at : time . to_time - 3 . days ,
151
+ poa_code :)
152
+ ]
153
+ end
154
+
155
+ it 'sorts by created_at in ascending order' do
156
+ get ( '/accredited_representative_portal/v0/power_of_attorney_requests' ,
157
+ params : { sort : { by : 'created_at' , order : 'asc' } } )
158
+
159
+ expect ( response ) . to have_http_status ( :ok )
160
+
161
+ # check that they're sorted by created_at in ascending order
162
+ ids = parsed_response . to_h [ 'data' ] . map { |item | item [ 'id' ] } [ 0 ..2 ]
163
+ expect ( ids ) . to eq ( [ poa_requests [ 2 ] . id , poa_requests [ 0 ] . id , poa_requests [ 1 ] . id ] )
164
+ end
165
+
166
+ it 'sorts by created_at in descending order' do
167
+ get ( '/accredited_representative_portal/v0/power_of_attorney_requests' ,
168
+ params : { sort : { by : 'created_at' , order : 'desc' } } )
169
+
170
+ expect ( response ) . to have_http_status ( :ok )
171
+
172
+ # check that they're sorted by created_at in descending order
173
+ ids = parsed_response . to_h [ 'data' ] . map { |item | item [ 'id' ] } [ 1 ..3 ]
174
+ expect ( ids ) . to eq ( [ poa_requests [ 1 ] . id , poa_requests [ 0 ] . id , poa_requests [ 2 ] . id ] )
175
+ end
176
+
177
+ it 'returns error for invalid sort field' do
178
+ get ( '/accredited_representative_portal/v0/power_of_attorney_requests' ,
179
+ params : { sort : { by : 'invalid_field' } } )
180
+
181
+ expect ( response ) . to have_http_status ( :bad_request )
182
+ expect ( parsed_response . to_h [ 'errors' ] ) . to include ( /Invalid parameters/ )
183
+ end
184
+
185
+ it 'returns error for invalid sort order' do
186
+ get ( '/accredited_representative_portal/v0/power_of_attorney_requests' ,
187
+ params : { sort : { by : 'created_at' , order : 'invalid' } } )
188
+
189
+ expect ( response ) . to have_http_status ( :bad_request )
190
+ expect ( parsed_response . to_h [ 'errors' ] ) . to include ( /Invalid parameters/ )
191
+ end
192
+ end
193
+
194
+ describe 'a variety of poa request configurations' do
141
195
let ( :poa_requests ) do
142
196
[ ] . tap do |memo |
143
197
memo <<
0 commit comments