qa 0.10.2 → 0.11.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: e2bdd4569dfb4ab638c33d27795cfbb461f2559d
4
- data.tar.gz: 1ac7796c5f9a0dd23e5721a9c3c5f65e579674d2
3
+ metadata.gz: 480d64287a822e05e82705e1ff868e963c65cd24
4
+ data.tar.gz: dc6f5d1daf37f5618a5c39fc10f239c1c4bdad0a
5
5
  SHA512:
6
- metadata.gz: f0e9691da5a0d9d980ed2cc7192ad705601c646820a4042366440db60061cdaa953a9cd627c74378442dc06816149f2e38a810c2719c1bbbbe8735ced44fa81a
7
- data.tar.gz: d8d96b05bc5e2d3b6ddd808e432df99b0c264a941b4dce2c617e2b854e4fc723e0282464084163af4fd612807262531c4fea13fcae3d5432bd62333e248d2b86
6
+ metadata.gz: f766d2479209faf8b67ec4bb682f8dc820b774eb4e8404eaca6910c50137cf4f70ac858f3f8accfa3508525f64025d9de578dfa737a9d814ee6c2c4237c04005
7
+ data.tar.gz: 9515a364e8d1bf4f0dbfafe45affbdf07257c8617b0b752052c9cbec76d1d562750aa666f32f16c7d7113d3db4e2c03a941796b78c320612b4087eca022cce68
@@ -14,7 +14,7 @@ class Qa::TermsController < ApplicationController
14
14
 
15
15
  # Return a list of terms based on a query
16
16
  def search
17
- terms = @authority.search(url_search)
17
+ terms = @authority.method(:search).arity == 2 ? @authority.search(url_search, self) : @authority.search(url_search)
18
18
  render json: terms
19
19
  end
20
20
 
@@ -10,6 +10,16 @@ module Qa::Authorities
10
10
 
11
11
  include WebServiceBase
12
12
 
13
+ require 'qa/authorities/assign_fast/space_fix_encoder'
14
+ # FAST requires spaces to be encoded as %20 and will not accept + which is Faraday's default encoding
15
+ def response(url)
16
+ space_fix_encoder = AssignFast::SpaceFixEncoder.new
17
+ Faraday.get(url) do |req|
18
+ req.options.params_encoder = space_fix_encoder
19
+ req.headers['Accept'] = 'application/json'
20
+ end
21
+ end
22
+
13
23
  # Search the FAST api
14
24
  #
15
25
  # @param [String] the query
@@ -0,0 +1,13 @@
1
+ module Qa::Authorities
2
+ # for use with Faraday; encode spaces as '%20' not '+'
3
+ class AssignFast::SpaceFixEncoder
4
+ def encode(hash)
5
+ encoded = Faraday::NestedParamsEncoder.encode(hash)
6
+ encoded.gsub('+', '%20')
7
+ end
8
+
9
+ def decode(str)
10
+ Faraday::NestedParamsEncoder.decode(str)
11
+ end
12
+ end
13
+ end
data/lib/qa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Qa
2
- VERSION = "0.10.2".freeze
2
+ VERSION = "0.11.0".freeze
3
3
  end
@@ -47,6 +47,26 @@ describe Qa::TermsController, type: :controller do
47
47
  end
48
48
 
49
49
  describe "#search" do
50
+ context "when a local authority expects two arguments" do
51
+ before do
52
+ class Qa::Authorities::Local::TwoArgs < Qa::Authorities::Base
53
+ attr_reader :subauthority
54
+ def initialize(subauthority)
55
+ @subauthority = subauthority
56
+ end
57
+
58
+ def search(_arg1, _arg2)
59
+ true
60
+ end
61
+ end
62
+ Qa::Authorities::Local.register_subauthority('two_args', 'Qa::Authorities::Local::TwoArgs')
63
+ end
64
+ it "succeeds" do
65
+ get :search, q: "a query", vocab: "local", subauthority: "two_args"
66
+ expect(response).to be_success
67
+ end
68
+ end
69
+
50
70
  context "loc" do
51
71
  before do
52
72
  stub_request(:get, "http://id.loc.gov/search/?format=json&q=Berry&q=cs:http://id.loc.gov/authorities/names")
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Qa::Authorities::AssignFast::SpaceFixEncoder do
4
+ let(:encoder) { described_class.new }
5
+
6
+ it 'encodes spaces as %20 instead of +' do
7
+ input = { "query" => "word ling", "queryIndex" => "suggestall", "queryReturn" => "suggestall,idroot,auth,type", "suggest" => "autoSubject", "rows" => "20" }
8
+ expected = "query=word%20ling&queryIndex=suggestall&queryReturn=suggestall%2Cidroot%2Cauth%2Ctype&rows=20&suggest=autoSubject"
9
+ expect(encoder.encode(input)).to eq expected
10
+ end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.2
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Anderson
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2016-10-25 00:00:00.000000000 Z
18
+ date: 2017-01-04 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rails
@@ -57,14 +57,14 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 1.6.0
60
+ version: '1.6'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 1.6.0
67
+ version: '1.6'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: activerecord-import
70
70
  requirement: !ruby/object:Gem::Requirement
@@ -211,14 +211,14 @@ dependencies:
211
211
  requirements:
212
212
  - - "~>"
213
213
  - !ruby/object:Gem::Version
214
- version: '1.5'
214
+ version: 1.8.0
215
215
  type: :development
216
216
  prerelease: false
217
217
  version_requirements: !ruby/object:Gem::Requirement
218
218
  requirements:
219
219
  - - "~>"
220
220
  - !ruby/object:Gem::Version
221
- version: '1.5'
221
+ version: 1.8.0
222
222
  description: Provides a set of uniform RESTful routes to query any controlled vocabulary
223
223
  or set of authority terms.
224
224
  email:
@@ -260,6 +260,7 @@ files:
260
260
  - lib/qa/authorities.rb
261
261
  - lib/qa/authorities/assign_fast.rb
262
262
  - lib/qa/authorities/assign_fast/generic_authority.rb
263
+ - lib/qa/authorities/assign_fast/space_fix_encoder.rb
263
264
  - lib/qa/authorities/assign_fast_subauthority.rb
264
265
  - lib/qa/authorities/authority_with_sub_authority.rb
265
266
  - lib/qa/authorities/base.rb
@@ -329,6 +330,7 @@ files:
329
330
  - spec/lib/authorities/mesh_spec.rb
330
331
  - spec/lib/authorities/mysql_table_based_authority_spec.rb
331
332
  - spec/lib/authorities/oclcts_spec.rb
333
+ - spec/lib/authorities/space_fix_encoder.rb
332
334
  - spec/lib/authorities/table_based_authority_spec.rb
333
335
  - spec/lib/authorities/tgnlang_spec.rb
334
336
  - spec/lib/authorities_loc_subauthorities.rb
@@ -359,7 +361,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
359
361
  version: '0'
360
362
  requirements: []
361
363
  rubyforge_project:
362
- rubygems_version: 2.6.4
364
+ rubygems_version: 2.6.8
363
365
  signing_key:
364
366
  specification_version: 4
365
367
  summary: You should question your authorities.
@@ -402,6 +404,7 @@ test_files:
402
404
  - spec/lib/authorities/mesh_spec.rb
403
405
  - spec/lib/authorities/mysql_table_based_authority_spec.rb
404
406
  - spec/lib/authorities/oclcts_spec.rb
407
+ - spec/lib/authorities/space_fix_encoder.rb
405
408
  - spec/lib/authorities/table_based_authority_spec.rb
406
409
  - spec/lib/authorities/tgnlang_spec.rb
407
410
  - spec/lib/authorities_loc_subauthorities.rb