gds-api-adapters 34.0.0 → 34.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c31508a987b6157626ddc9dd154b5458db554ea2
4
- data.tar.gz: 43b17d83043656ccdd24b88fcb6d07c74d9c19cf
3
+ metadata.gz: 43d2b87fd0e5761a6e0f58ba5cf043625d32ba1f
4
+ data.tar.gz: 2806a9f5c8d029e6f1de2dd040f6b2f437b68333
5
5
  SHA512:
6
- metadata.gz: 68f4709932906aca95ba97ea7343bbc9896953be06c57871e7ab9e93c3ce45f4b3f73bb093a14844d6cd37e44c0030457cbf1d1013b978f26eb0467b19febc66
7
- data.tar.gz: 634deb28aee00f3ca3050ab8cea2b41eabd31bead3207ecd9ba98a8306dea9edd1dc7a260de634a511932f1b099600f3ce7d7bfc3718230a42077f72ceda032e
6
+ metadata.gz: 0a44f33186db19f7f1c30b11d1e9fb6bd1cf9bbd31dbe3209150c8b67650c6b681df303bec317775fb127b4b3690a6686a9b90748ebcdc91d65e3518d4dfcd37
7
+ data.tar.gz: 6289d4f548c633be92764965903deb86955921c971e29f9dc45e87f755090cf9978b2ec7ad9eecf1ca50a200ba18dde19940489259e576962a8f20291fc6574f
data/README.md CHANGED
@@ -7,7 +7,7 @@ Example usage:
7
7
  ```ruby
8
8
  require 'gds_api/rummager'
9
9
  rummager = GdsApi::Rummager.new(Plek.new.find('rummager'))
10
- results = rummager.unified_search(q: "taxes")
10
+ results = rummager.search(q: "taxes")
11
11
  ```
12
12
 
13
13
  Example adapters for frequently used applications:
@@ -6,6 +6,7 @@ module GdsApi
6
6
 
7
7
  # Perform a search.
8
8
  #
9
+ # @deprecated Alias for `#search`.
9
10
  # @param query [Hash] A valid search query. See Rummager documentation for options.
10
11
  #
11
12
  # @see https://github.com/alphagov/rummager/blob/master/docs/unified-search-api.md
@@ -14,9 +15,19 @@ module GdsApi
14
15
  get_json!(request_url)
15
16
  end
16
17
 
18
+ # Perform a search.
19
+ #
20
+ # @param query [Hash] A valid search query. See Rummager documentation for options.
21
+ #
22
+ # @see https://github.com/alphagov/rummager/blob/master/docs/unified-search-api.md
23
+ def search(args)
24
+ request_url = "#{base_url}/search.json?#{Rack::Utils.build_nested_query(args)}"
25
+ get_json!(request_url)
26
+ end
27
+
17
28
  # Advanced search.
18
29
  #
19
- # @deprecated Only in use by Whitehall. Use the `unified_search` method.
30
+ # @deprecated Only in use by Whitehall. Use the `#search` method.
20
31
  def advanced_search(args)
21
32
  raise ArgumentError.new("Args cannot be blank") if args.nil? || args.empty?
22
33
  request_path = "#{base_url}/advanced_search?#{Rack::Utils.build_nested_query(args)}"
@@ -94,27 +94,27 @@ module GdsApi
94
94
  end
95
95
 
96
96
  def rummager_has_no_policies_for_any_type
97
- stub_request(:get, %r{/unified_search.json})
97
+ stub_request(:get, %r{/search.json})
98
98
  .to_return(body: no_search_results_found)
99
99
  end
100
100
 
101
101
  def rummager_has_policies_for_every_type(options = {})
102
102
  if count = options[:count]
103
- stub_request(:get, %r{/unified_search.json.*count=#{count}.*})
103
+ stub_request(:get, %r{/search.json.*count=#{count}.*})
104
104
  .to_return(body: first_n_results(new_policies_results, n: count))
105
105
  else
106
- stub_request(:get, %r{/unified_search.json})
106
+ stub_request(:get, %r{/search.json})
107
107
  .to_return(body: new_policies_results)
108
108
  end
109
109
  end
110
110
 
111
111
  private
112
112
  def stub_request_for(result_set)
113
- stub_request(:get, /example.com\/unified_search/).to_return(body: result_set)
113
+ stub_request(:get, /example.com\/search/).to_return(body: result_set)
114
114
  end
115
115
 
116
116
  def run_example_query
117
- client.unified_search(example_query)
117
+ client.search(example_query)
118
118
  end
119
119
 
120
120
  def search_results_found
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '34.0.0'
2
+ VERSION = '34.1.0'
3
3
  end
@@ -26,8 +26,12 @@ describe GdsApi::PublishingApiV2 do
26
26
  end
27
27
 
28
28
  before do
29
+ @bearer_token = "example-bearer-token"
29
30
  @base_api_url = Plek.current.find("publishing-api")
30
- @api_client = GdsApi::PublishingApiV2.new('http://localhost:3093')
31
+ @api_client = GdsApi::PublishingApiV2.new(
32
+ "http://localhost:3093",
33
+ bearer_token: @bearer_token,
34
+ )
31
35
 
32
36
  @content_id = "bed722e6-db68-43e5-9079-063f623335a7"
33
37
  end
@@ -44,9 +48,9 @@ describe GdsApi::PublishingApiV2 do
44
48
  method: :put,
45
49
  path: "/v2/content/#{@content_id}",
46
50
  body: @content_item,
47
- headers: {
48
- "Content-Type" => "application/json",
49
- },
51
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
52
+ "Authorization" => "Bearer #{@bearer_token}"
53
+ ),
50
54
  )
51
55
  .will_respond_with(
52
56
  status: 200,
@@ -70,9 +74,9 @@ describe GdsApi::PublishingApiV2 do
70
74
  method: :put,
71
75
  path: "/v2/content/#{@content_id}",
72
76
  body: @content_item,
73
- headers: {
74
- "Content-Type" => "application/json",
75
- }
77
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
78
+ "Authorization" => "Bearer #{@bearer_token}"
79
+ ),
76
80
  )
77
81
  .will_respond_with(
78
82
  status: 422,
@@ -110,9 +114,9 @@ describe GdsApi::PublishingApiV2 do
110
114
  method: :put,
111
115
  path: "/v2/content/#{@content_id}",
112
116
  body: @content_item,
113
- headers: {
114
- "Content-Type" => "application/json",
115
- },
117
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
118
+ "Authorization" => "Bearer #{@bearer_token}"
119
+ ),
116
120
  )
117
121
  .will_respond_with(
118
122
  status: 422,
@@ -152,9 +156,9 @@ describe GdsApi::PublishingApiV2 do
152
156
  method: :put,
153
157
  path: "/v2/content/#{@content_id}",
154
158
  body: @content_item,
155
- headers: {
156
- "Content-Type" => "application/json",
157
- },
159
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
160
+ "Authorization" => "Bearer #{@bearer_token}"
161
+ ),
158
162
  )
159
163
  .will_respond_with(
160
164
  status: 200,
@@ -178,9 +182,9 @@ describe GdsApi::PublishingApiV2 do
178
182
  method: :put,
179
183
  path: "/v2/content/#{@content_id}",
180
184
  body: @content_item,
181
- headers: {
182
- "Content-Type" => "application/json",
183
- },
185
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
186
+ "Authorization" => "Bearer #{@bearer_token}"
187
+ ),
184
188
  )
185
189
  .will_respond_with(
186
190
  status: 409,
@@ -221,6 +225,9 @@ describe GdsApi::PublishingApiV2 do
221
225
  .with(
222
226
  method: :get,
223
227
  path: "/v2/content/#{@content_id}",
228
+ headers: GdsApi::JsonClient.default_request_headers.merge(
229
+ "Authorization" => "Bearer #{@bearer_token}"
230
+ ),
224
231
  )
225
232
  .will_respond_with(
226
233
  status: 200,
@@ -259,6 +266,9 @@ describe GdsApi::PublishingApiV2 do
259
266
  method: :get,
260
267
  path: "/v2/content/#{@content_id}",
261
268
  query: "locale=fr",
269
+ headers: GdsApi::JsonClient.default_request_headers.merge(
270
+ "Authorization" => "Bearer #{@bearer_token}"
271
+ ),
262
272
  )
263
273
  .will_respond_with(
264
274
  status: 200,
@@ -298,6 +308,9 @@ describe GdsApi::PublishingApiV2 do
298
308
  method: :get,
299
309
  path: "/v2/content/#{@content_id}",
300
310
  query: "version=1",
311
+ headers: GdsApi::JsonClient.default_request_headers.merge(
312
+ "Authorization" => "Bearer #{@bearer_token}"
313
+ ),
301
314
  )
302
315
  .will_respond_with(
303
316
  status: 200,
@@ -337,6 +350,9 @@ describe GdsApi::PublishingApiV2 do
337
350
  method: :get,
338
351
  path: "/v2/content/#{@content_id}",
339
352
  query: "version=2",
353
+ headers: GdsApi::JsonClient.default_request_headers.merge(
354
+ "Authorization" => "Bearer #{@bearer_token}"
355
+ ),
340
356
  )
341
357
  .will_respond_with(
342
358
  status: 200,
@@ -375,6 +391,9 @@ describe GdsApi::PublishingApiV2 do
375
391
  .with(
376
392
  method: :get,
377
393
  path: "/v2/content/#{@content_id}",
394
+ headers: GdsApi::JsonClient.default_request_headers.merge(
395
+ "Authorization" => "Bearer #{@bearer_token}"
396
+ ),
378
397
  )
379
398
  .will_respond_with(
380
399
  status: 200,
@@ -412,6 +431,9 @@ describe GdsApi::PublishingApiV2 do
412
431
  .with(
413
432
  method: :get,
414
433
  path: "/v2/content/#{@content_id}",
434
+ headers: GdsApi::JsonClient.default_request_headers.merge(
435
+ "Authorization" => "Bearer #{@bearer_token}"
436
+ ),
415
437
  )
416
438
  .will_respond_with(
417
439
  status: 404,
@@ -445,9 +467,9 @@ describe GdsApi::PublishingApiV2 do
445
467
  body: {
446
468
  update_type: "major",
447
469
  },
448
- headers: {
449
- "Content-Type" => "application/json",
450
- },
470
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
471
+ "Authorization" => "Bearer #{@bearer_token}"
472
+ ),
451
473
  )
452
474
  .will_respond_with(
453
475
  status: 200
@@ -471,9 +493,9 @@ describe GdsApi::PublishingApiV2 do
471
493
  body: {
472
494
  update_type: "major",
473
495
  },
474
- headers: {
475
- "Content-Type" => "application/json",
476
- },
496
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
497
+ "Authorization" => "Bearer #{@bearer_token}"
498
+ ),
477
499
  )
478
500
  .will_respond_with(
479
501
  status: 404
@@ -500,9 +522,9 @@ describe GdsApi::PublishingApiV2 do
500
522
  body: {
501
523
  "update_type" => ""
502
524
  },
503
- headers: {
504
- "Content-Type" => "application/json",
505
- },
525
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
526
+ "Authorization" => "Bearer #{@bearer_token}"
527
+ ),
506
528
  )
507
529
  .will_respond_with(
508
530
  status: 422,
@@ -539,9 +561,9 @@ describe GdsApi::PublishingApiV2 do
539
561
  body: {
540
562
  update_type: "major",
541
563
  },
542
- headers: {
543
- "Content-Type" => "application/json",
544
- },
564
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
565
+ "Authorization" => "Bearer #{@bearer_token}"
566
+ ),
545
567
  )
546
568
  .will_respond_with(
547
569
  status: 400,
@@ -575,9 +597,9 @@ describe GdsApi::PublishingApiV2 do
575
597
  update_type: "major",
576
598
  locale: "fr",
577
599
  },
578
- headers: {
579
- "Content-Type" => "application/json",
580
- },
600
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
601
+ "Authorization" => "Bearer #{@bearer_token}"
602
+ ),
581
603
  )
582
604
  .will_respond_with(
583
605
  status: 200,
@@ -603,9 +625,9 @@ describe GdsApi::PublishingApiV2 do
603
625
  update_type: "minor",
604
626
  previous_version: 3,
605
627
  },
606
- headers: {
607
- "Content-Type" => "application/json",
608
- },
628
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
629
+ "Authorization" => "Bearer #{@bearer_token}"
630
+ ),
609
631
  )
610
632
  .will_respond_with(
611
633
  status: 200,
@@ -630,9 +652,9 @@ describe GdsApi::PublishingApiV2 do
630
652
  update_type: "minor",
631
653
  previous_version: 2,
632
654
  },
633
- headers: {
634
- "Content-Type" => "application/json",
635
- },
655
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
656
+ "Authorization" => "Bearer #{@bearer_token}"
657
+ ),
636
658
  )
637
659
  .will_respond_with(
638
660
  status: 409,
@@ -674,9 +696,9 @@ describe GdsApi::PublishingApiV2 do
674
696
  body: {
675
697
  type: "gone",
676
698
  },
677
- headers: {
678
- "Content-Type" => "application/json",
679
- },
699
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
700
+ "Authorization" => "Bearer #{@bearer_token}"
701
+ ),
680
702
  )
681
703
  .will_respond_with(
682
704
  status: 200
@@ -700,9 +722,9 @@ describe GdsApi::PublishingApiV2 do
700
722
  body: {
701
723
  type: "gone",
702
724
  },
703
- headers: {
704
- "Content-Type" => "application/json",
705
- },
725
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
726
+ "Authorization" => "Bearer #{@bearer_token}"
727
+ ),
706
728
  )
707
729
  .will_respond_with(
708
730
  status: 404
@@ -729,9 +751,9 @@ describe GdsApi::PublishingApiV2 do
729
751
  body: {
730
752
  type: "not-a-valid-type",
731
753
  },
732
- headers: {
733
- "Content-Type" => "application/json",
734
- },
754
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
755
+ "Authorization" => "Bearer #{@bearer_token}"
756
+ ),
735
757
  )
736
758
  .will_respond_with(
737
759
  status: 422,
@@ -766,9 +788,9 @@ describe GdsApi::PublishingApiV2 do
766
788
  body: {
767
789
  type: "gone",
768
790
  },
769
- headers: {
770
- "Content-Type" => "application/json",
771
- },
791
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
792
+ "Authorization" => "Bearer #{@bearer_token}"
793
+ ),
772
794
  )
773
795
  .will_respond_with(
774
796
  status: 200
@@ -794,9 +816,9 @@ describe GdsApi::PublishingApiV2 do
794
816
  type: "gone",
795
817
  previous_version: 3,
796
818
  },
797
- headers: {
798
- "Content-Type" => "application/json",
799
- },
819
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
820
+ "Authorization" => "Bearer #{@bearer_token}"
821
+ ),
800
822
  )
801
823
  .will_respond_with(
802
824
  status: 200,
@@ -821,9 +843,9 @@ describe GdsApi::PublishingApiV2 do
821
843
  type: "gone",
822
844
  previous_version: 2,
823
845
  },
824
- headers: {
825
- "Content-Type" => "application/json",
826
- },
846
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
847
+ "Authorization" => "Bearer #{@bearer_token}"
848
+ ),
827
849
  )
828
850
  .will_respond_with(
829
851
  status: 409,
@@ -1121,7 +1143,9 @@ describe GdsApi::PublishingApiV2 do
1121
1143
  method: :get,
1122
1144
  path: "/v2/linkables",
1123
1145
  query: "document_type=topic",
1124
- headers: {},
1146
+ headers: GdsApi::JsonClient.default_request_headers.merge(
1147
+ "Authorization" => "Bearer #{@bearer_token}"
1148
+ ),
1125
1149
  )
1126
1150
  .will_respond_with(
1127
1151
  status: 200,
@@ -1148,7 +1172,9 @@ describe GdsApi::PublishingApiV2 do
1148
1172
  method: :get,
1149
1173
  path: "/v2/content",
1150
1174
  query: "content_format=topic&fields%5B%5D=title&fields%5B%5D=base_path",
1151
- headers: {},
1175
+ headers: GdsApi::JsonClient.default_request_headers.merge(
1176
+ "Authorization" => "Bearer #{@bearer_token}"
1177
+ ),
1152
1178
  )
1153
1179
  .will_respond_with(
1154
1180
  status: 200,
@@ -1192,7 +1218,9 @@ describe GdsApi::PublishingApiV2 do
1192
1218
  method: :get,
1193
1219
  path: "/v2/content",
1194
1220
  query: "content_format=topic&fields%5B%5D=content_id&fields%5B%5D=locale",
1195
- headers: {},
1221
+ headers: GdsApi::JsonClient.default_request_headers.merge(
1222
+ "Authorization" => "Bearer #{@bearer_token}"
1223
+ ),
1196
1224
  )
1197
1225
  .will_respond_with(
1198
1226
  status: 200,
@@ -1234,7 +1262,9 @@ describe GdsApi::PublishingApiV2 do
1234
1262
  method: :get,
1235
1263
  path: "/v2/content",
1236
1264
  query: "content_format=topic&fields%5B%5D=content_id&fields%5B%5D=locale&locale=fr",
1237
- headers: {},
1265
+ headers: GdsApi::JsonClient.default_request_headers.merge(
1266
+ "Authorization" => "Bearer #{@bearer_token}"
1267
+ ),
1238
1268
  )
1239
1269
  .will_respond_with(
1240
1270
  status: 200,
@@ -1276,7 +1306,9 @@ describe GdsApi::PublishingApiV2 do
1276
1306
  method: :get,
1277
1307
  path: "/v2/content",
1278
1308
  query: "content_format=topic&fields%5B%5D=content_id&fields%5B%5D=locale&locale=all",
1279
- headers: {},
1309
+ headers: GdsApi::JsonClient.default_request_headers.merge(
1310
+ "Authorization" => "Bearer #{@bearer_token}"
1311
+ ),
1280
1312
  )
1281
1313
  .will_respond_with(
1282
1314
  status: 200,
@@ -1323,7 +1355,9 @@ describe GdsApi::PublishingApiV2 do
1323
1355
  method: :get,
1324
1356
  path: "/v2/content",
1325
1357
  query: "content_format=topic&fields%5B%5D=content_id&fields%5B%5D=details",
1326
- headers: {},
1358
+ headers: GdsApi::JsonClient.default_request_headers.merge(
1359
+ "Authorization" => "Bearer #{@bearer_token}"
1360
+ ),
1327
1361
  )
1328
1362
  .will_respond_with(
1329
1363
  status: 200,
@@ -1368,9 +1402,9 @@ describe GdsApi::PublishingApiV2 do
1368
1402
  method: :post,
1369
1403
  path: "/v2/content/#{@content_id}/discard-draft",
1370
1404
  body: {},
1371
- headers: {
1372
- "Content-Type" => "application/json",
1373
- },
1405
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
1406
+ "Authorization" => "Bearer #{@bearer_token}"
1407
+ ),
1374
1408
  )
1375
1409
  .will_respond_with(
1376
1410
  status: 200,
@@ -1394,9 +1428,9 @@ describe GdsApi::PublishingApiV2 do
1394
1428
  body: {
1395
1429
  locale: "fr",
1396
1430
  },
1397
- headers: {
1398
- "Content-Type" => "application/json",
1399
- },
1431
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
1432
+ "Authorization" => "Bearer #{@bearer_token}"
1433
+ ),
1400
1434
  )
1401
1435
  .will_respond_with(
1402
1436
  status: 200,
@@ -1418,9 +1452,9 @@ describe GdsApi::PublishingApiV2 do
1418
1452
  method: :post,
1419
1453
  path: "/v2/content/#{@content_id}/discard-draft",
1420
1454
  body: {},
1421
- headers: {
1422
- "Content-Type" => "application/json",
1423
- },
1455
+ headers: GdsApi::JsonClient.default_request_with_json_body_headers.merge(
1456
+ "Authorization" => "Bearer #{@bearer_token}"
1457
+ ),
1424
1458
  )
1425
1459
  .will_respond_with(
1426
1460
  status: 404,
@@ -1446,6 +1480,9 @@ describe GdsApi::PublishingApiV2 do
1446
1480
  method: :get,
1447
1481
  path: "/v2/linked/#{@content_id}",
1448
1482
  query: "fields%5B%5D=content_id&fields%5B%5D=base_path&link_type=topic",
1483
+ headers: GdsApi::JsonClient.default_request_headers.merge(
1484
+ "Authorization" => "Bearer #{@bearer_token}"
1485
+ ),
1449
1486
  )
1450
1487
  .will_respond_with(
1451
1488
  status: 404,
@@ -1497,7 +1534,9 @@ describe GdsApi::PublishingApiV2 do
1497
1534
  method: :get,
1498
1535
  path: "/v2/linked/" + @linked_content_item['content_id'],
1499
1536
  query: "fields%5B%5D=content_id&fields%5B%5D=base_path&link_type=topic",
1500
- headers: {},
1537
+ headers: GdsApi::JsonClient.default_request_headers.merge(
1538
+ "Authorization" => "Bearer #{@bearer_token}"
1539
+ ),
1501
1540
  )
1502
1541
  .will_respond_with(
1503
1542
  status: 200,
@@ -5,6 +5,7 @@ describe GdsApi::Rummager do
5
5
  before(:each) do
6
6
  stub_request(:get, /example.com\/advanced_search/).to_return(body: "[]")
7
7
  stub_request(:get, /example.com\/unified_search/).to_return(body: "[]")
8
+ stub_request(:get, /example.com\/search/).to_return(body: "[]")
8
9
  end
9
10
 
10
11
  # tests for #advanced_search
@@ -132,6 +133,74 @@ describe GdsApi::Rummager do
132
133
  assert_requested :get, /order=-public_timestamp/
133
134
  end
134
135
 
136
+ # tests for search
137
+
138
+ it "#search should raise an exception if the service at the search URI returns a 500" do
139
+ stub_request(:get, /example.com\/search.json/).to_return(status: [500, "Internal Server Error"])
140
+ assert_raises(GdsApi::HTTPServerError) do
141
+ GdsApi::Rummager.new("http://example.com").search(q: "query")
142
+ end
143
+ end
144
+
145
+ it "#search should raise an exception if the service at the search URI returns a 404" do
146
+ stub_request(:get, /example.com\/search/).to_return(status: [404, "Not Found"])
147
+ assert_raises(GdsApi::HTTPNotFound) do
148
+ GdsApi::Rummager.new("http://example.com").search(q: "query")
149
+ end
150
+ end
151
+
152
+ it "#search should raise an exception if the service at the unified search URI returns a 400" do
153
+ stub_request(:get, /example.com\/search/).to_return(
154
+ status: [400, "Bad Request"],
155
+ body: %q("error":"Filtering by \"coffee\" is not allowed"),
156
+ )
157
+ assert_raises(GdsApi::HTTPClientError) do
158
+ GdsApi::Rummager.new("http://example.com").search(q: "query", filter_coffee: "tea")
159
+ end
160
+ end
161
+
162
+ it "#search should raise an exception if the service at the unified search URI returns a 422" do
163
+ stub_request(:get, /example.com\/search/).to_return(
164
+ status: [422, "Bad Request"],
165
+ body: %q("error":"Filtering by \"coffee\" is not allowed"),
166
+ )
167
+ assert_raises(GdsApi::HTTPClientError) do
168
+ GdsApi::Rummager.new("http://example.com").search(q: "query", filter_coffee: "tea")
169
+ end
170
+ end
171
+
172
+ it "#search should raise an exception if the service at the search URI times out" do
173
+ stub_request(:get, /example.com\/search/).to_timeout
174
+ assert_raises(GdsApi::TimedOutException) do
175
+ GdsApi::Rummager.new("http://example.com").search(q: "query")
176
+ end
177
+ end
178
+
179
+ it "#search should return the search deserialized from json" do
180
+ search_results = [{"title" => "document-title"}]
181
+ stub_request(:get, /example.com\/search/).to_return(body: search_results.to_json)
182
+ results = GdsApi::Rummager.new("http://example.com").search(q: "query")
183
+ assert_equal search_results, results.to_hash
184
+ end
185
+
186
+ it "#search should request the search results in JSON format" do
187
+ GdsApi::Rummager.new("http://example.com").search(q: "query")
188
+
189
+ assert_requested :get, /.*/, headers: {"Accept" => "application/json"}
190
+ end
191
+
192
+ it "#search should issue a request for all the params supplied" do
193
+ GdsApi::Rummager.new("http://example.com").search(
194
+ q: "query & stuff",
195
+ filter_topics: ["1", "2"],
196
+ order: "-public_timestamp",
197
+ )
198
+
199
+ assert_requested :get, /q=query%20%26%20stuff/
200
+ assert_requested :get, /filter_topics\[\]=1&filter_topics\[\]=2/
201
+ assert_requested :get, /order=-public_timestamp/
202
+ end
203
+
135
204
  it "#delete_content removes a document" do
136
205
  request = stub_request(:delete, "http://example.com/content?link=/foo/bar")
137
206
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 34.0.0
4
+ version: 34.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Stewart
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-23 00:00:00.000000000 Z
11
+ date: 2016-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: plek