qa 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/app/controllers/qa/terms_controller.rb +31 -24
  3. data/config/routes.rb +2 -0
  4. data/lib/qa/authorities.rb +3 -1
  5. data/lib/qa/authorities/base.rb +5 -32
  6. data/lib/qa/authorities/lcsh.rb +21 -26
  7. data/lib/qa/authorities/loc.rb +124 -164
  8. data/lib/qa/authorities/local.rb +22 -57
  9. data/lib/qa/authorities/local/subauthority.rb +61 -0
  10. data/lib/qa/authorities/mesh.rb +13 -6
  11. data/lib/qa/authorities/oclcts.rb +18 -29
  12. data/lib/qa/authorities/tgnlang.rb +38 -23
  13. data/lib/qa/authorities/web_service_base.rb +20 -0
  14. data/lib/qa/version.rb +1 -1
  15. data/spec/controllers/terms_controller_spec.rb +6 -2
  16. data/spec/fixtures/authorities/authority_B.yml +7 -7
  17. data/spec/fixtures/authorities/authority_D.yml +4 -0
  18. data/spec/internal/Gemfile +2 -2
  19. data/spec/internal/Gemfile.lock +42 -39
  20. data/spec/internal/config/initializers/secret_token.rb +1 -1
  21. data/spec/internal/config/routes.rb +1 -1
  22. data/spec/internal/db/development.sqlite3 +0 -0
  23. data/spec/internal/db/migrate/{20130930151844_create_qa_subject_mesh_terms.qa.rb → 20131106203101_create_qa_subject_mesh_terms.qa.rb} +0 -0
  24. data/spec/internal/db/migrate/{20130930151845_create_qa_mesh_tree.qa.rb → 20131106203102_create_qa_mesh_tree.qa.rb} +0 -0
  25. data/spec/internal/db/migrate/{20130930151846_add_term_lower_to_qa_subject_mesh_terms.qa.rb → 20131106203103_add_term_lower_to_qa_subject_mesh_terms.qa.rb} +0 -0
  26. data/spec/internal/db/schema.rb +1 -1
  27. data/spec/internal/db/test.sqlite3 +0 -0
  28. data/spec/internal/log/development.log +6436 -79
  29. data/spec/lib/authorities_lcsh_spec.rb +30 -41
  30. data/spec/lib/authorities_loc_spec.rb +4 -3
  31. data/spec/lib/authorities_local_spec.rb +63 -27
  32. data/spec/lib/authorities_mesh_spec.rb +8 -2
  33. data/spec/lib/authorities_oclcts_spec.rb +6 -5
  34. data/spec/lib/authorities_tgnlang_spec.rb +6 -9
  35. data/spec/spec_helper.rb +7 -0
  36. metadata +49 -55
@@ -5,57 +5,46 @@ describe Qa::Authorities::Lcsh do
5
5
  before :all do
6
6
  stub_request(:get, "http://id.loc.gov/authorities/suggest/?q=ABBA").
7
7
  to_return(:body => webmock_fixture("lcsh-response.txt"), :status => 200)
8
- @terms = Qa::Authorities::Lcsh.new "ABBA"
8
+ @terms = Qa::Authorities::Lcsh.new
9
+ @terms.search("ABBA")
9
10
  end
10
11
 
11
- describe "response from LOC" do
12
- it "should have the query term for its first element" do
13
- @terms.raw_response[0].should be_kind_of String
14
- @terms.raw_response[0].should == "ABBA"
15
- end
16
-
17
- it "should have an array of results that match the query" do
18
- @terms.raw_response[1].should be_kind_of Array
19
- @terms.raw_response[1].should include "ABBA (Musical group)"
20
- @terms.raw_response[1].length.should == 10
21
- end
22
-
23
- it "should have an array of strings that appear to have no use" do
24
- @terms.raw_response[2].should be_kind_of Array
25
- @terms.raw_response[2].collect { |v| v.should == "1 result" }
26
- @terms.raw_response[2].length.should == 10
27
- end
28
-
29
- it "should have an array of the urls for each term" do
30
- @terms.raw_response[3].should be_kind_of Array
31
- @terms.raw_response[3].should include "http://id.loc.gov/authorities/names/n98029154"
32
- @terms.raw_response[3].length.should == 10
33
- end
34
- end
35
12
 
36
13
  describe "presenting the results from LOC" do
37
- it "should give us the query term" do
38
- @terms.query.should == "ABBA"
39
- end
40
-
41
- it "should give us an array of suggestions" do
42
- @terms.suggestions.should be_kind_of Array
43
- @terms.suggestions.should include "ABBA (Musical group)"
44
- end
45
14
 
46
- it "should give us an array of urls for each suggestion" do
47
- @terms.urls_for_suggestions.should be_kind_of Array
48
- @terms.urls_for_suggestions.should include "http://id.loc.gov/authorities/names/n98029154"
15
+ it "has a list of responses" do
16
+ @terms.response.should be_kind_of Array
17
+ @terms.response.each do |item|
18
+ item.should be_kind_of Hash
19
+ item.keys.should == ["id", "label"]
20
+ end
21
+ @terms.response.map { |item| item["label"] }.should include "ABBA (Musical group)"
22
+ @terms.response.map { |item| item["id"] }.should include "n78090836"
49
23
  end
50
24
  end
51
25
 
52
- describe "#parse_authority_response" do
26
+ describe "#build_response" do
53
27
  it "should set .response to be an array of hashes in the id/label structure" do
54
28
  sample = { "id"=>"n92117993", "label"=>"Abba (Nigeria)" }
55
- @terms.parse_authority_response
56
- @terms.response.should be_kind_of Array
57
- @terms.response.should include sample
29
+ # use #send since build_response is private
30
+ r = @terms.send(:build_response,
31
+ ["ABBA",
32
+ ["ABBA (Musical group)",
33
+ "ABBA (Musical group). Gold",
34
+ "ABBA (Organization)",
35
+ "Abba (Nigeria)"],
36
+ ["1 result",
37
+ "1 result",
38
+ "1 result",
39
+ "1 result" ],
40
+ ["http://id.loc.gov/authorities/names/n78090836",
41
+ "http://id.loc.gov/authorities/names/n2003148504",
42
+ "http://id.loc.gov/authorities/names/no2012083395",
43
+ "http://id.loc.gov/authorities/names/n92117993"]]
44
+ )
45
+ r.should be_kind_of Array
46
+ r.should include sample
58
47
  end
59
48
  end
60
49
 
61
- end
50
+ end
@@ -6,7 +6,8 @@ describe Qa::Authorities::Loc do
6
6
  stub_request(:get, "http://id.loc.gov/search/?format=json&q=haw*&q=cs:http://id.loc.gov/vocabulary/geographicAreas").
7
7
  with(:headers => {'Accept'=>'application/json'}).
8
8
  to_return(:body => webmock_fixture("loc-response.txt"), :status => 200)
9
- @authority = Qa::Authorities::Loc.new("haw*", "geographicAreas")
9
+ @authority = Qa::Authorities::Loc.new
10
+ @authority.search("haw*", "geographicAreas")
10
11
  end
11
12
 
12
13
  it "should instantiate with a query and return data" do
@@ -28,8 +29,8 @@ describe Qa::Authorities::Loc do
28
29
 
29
30
  it "should return JSON" do
30
31
  @authority.should_not be_nil
31
- json = @authority.parse_authority_response
32
+ json = @authority.parse_authority_response(@authority.raw_response)
32
33
  expect(json).not_to be_empty
33
34
  end
34
35
 
35
- end
36
+ end
@@ -5,85 +5,121 @@ describe Qa::Authorities::Local do
5
5
  before do
6
6
  AUTHORITIES_CONFIG[:local_path] = local_authorities_path
7
7
  end
8
-
8
+
9
9
  context "valid local sub_authorities" do
10
10
  it "should validate the sub_authority" do
11
11
  Qa::Authorities::Local.sub_authorities.should include "authority_A"
12
12
  Qa::Authorities::Local.sub_authorities.should include "authority_B"
13
13
  end
14
+
15
+ it "should return a sub_authority" do
16
+ expect { Qa::Authorities::Local.sub_authority('authority_Z')}.to raise_error ArgumentError, "Invalid sub-authority 'authority_Z'"
17
+ expect(Qa::Authorities::Local.sub_authority('authority_A')).to be_kind_of Qa::Authorities::Subauthority
18
+ end
14
19
  end
15
20
 
16
21
  context "retrieve all entries for a local sub_authority" do
17
- let(:expected) { [ { :id => "A1", :label => "Abc Term A1" }, { :id => "A2", :label => "Term A2" }, { :id => "A3", :label => "Abc Term A3" } ] }
22
+ let(:expected) { [ { 'id'=> "A1", 'label' => "Abc Term A1" },
23
+ { 'id' => "A2", 'label'=> "Term A2" },
24
+ { 'id' => "A3", 'label' => "Abc Term A3" } ] }
18
25
  it "should return all the entries" do
19
- authorities = Qa::Authorities::Local.new("", "authority_A")
20
- expect(authorities.parse_authority_response).to eq(expected)
26
+ authorities = Qa::Authorities::Local.new
27
+ expect(authorities.search("", "authority_A")).to eq(expected)
28
+ end
29
+ end
30
+
31
+ context "a malformed authority file " do
32
+ it "should raise an error" do
33
+ authorities = Qa::Authorities::Local.new
34
+ expect{ authorities.search("", "authority_D") }.to raise_error Psych::SyntaxError
21
35
  end
22
36
  end
23
37
 
24
38
  context "retrieve a subset of entries for a local sub_authority" do
25
39
 
26
40
  context "at least one matching entry" do
27
- let(:expected) { [ { :id => "A1", :label => "Abc Term A1" }, { :id => "A3", :label => "Abc Term A3" } ] }
41
+ let(:expected) { [ { 'id' => "A1", 'label' => "Abc Term A1" },
42
+ { 'id' => "A3", 'label' => "Abc Term A3" } ] }
28
43
  it "should return only entries matching the query term" do
29
- authorities = Qa::Authorities::Local.new("Abc", "authority_A")
30
- expect(authorities.parse_authority_response).to eq(expected)
44
+ authorities = Qa::Authorities::Local.new
45
+ expect(authorities.search("Abc", "authority_A")).to eq(expected)
46
+ end
47
+
48
+ it "should match parts of words in the middle of the term" do
49
+ authorities = Qa::Authorities::Local.new
50
+ expect(authorities.search("Term A1", "authority_A")).to eq([{"id"=>"A1", "label"=>"Abc Term A1"}])
31
51
  end
32
52
  end
33
53
 
34
54
  context "no matching entries" do
35
55
  let(:expected) { [] }
36
56
  it "should return an empty array" do
37
- authorities = Qa::Authorities::Local.new("def", "authority_A")
38
- expect(authorities.parse_authority_response).to eq(expected)
39
- end
57
+ authorities = Qa::Authorities::Local.new
58
+ expect(authorities.search("def", "authority_A")).to eq(expected)
59
+ end
40
60
  end
41
61
 
42
62
  context "search not case-sensitive" do
43
- let(:expected) { [ { :id => "A1", :label => "Abc Term A1" }, { :id => "A3", :label => "Abc Term A3" } ] }
63
+ let(:expected) { [ { 'id' => "A1", 'label' => "Abc Term A1" },
64
+ { 'id' => "A3", 'label' => "Abc Term A3" } ] }
44
65
  it "should return entries matching the query term without regard to case" do
45
- authorities = Qa::Authorities::Local.new("aBc", "authority_A")
46
- expect(authorities.parse_authority_response).to eq(expected)
47
- end
66
+ authorities = Qa::Authorities::Local.new
67
+ expect(authorities.search("aBc", "authority_A")).to eq(expected)
68
+ end
48
69
  end
49
70
 
50
71
  end
51
72
 
52
73
  context "retrieve full record for term" do
53
74
 
54
- let(:authorities) { Qa::Authorities::Local.new("", "authority_A") }
75
+ let(:authorities) { Qa::Authorities::Local.new }
55
76
 
56
- context "term exists" do
77
+ context "source is a hash" do
57
78
  let(:id) { "A2" }
58
- let(:expected) { { :id => "A2", :term => "Term A2", :active => false }.to_json }
79
+ let(:expected) { { 'id' => "A2", 'term' => "Term A2", 'active' => false } }
59
80
  it "should return the full term record" do
60
- expect(authorities.get_full_record(id)).to eq(expected)
81
+ record = authorities.get_full_record(id, "authority_A")
82
+ expect(record).to be_a HashWithIndifferentAccess
83
+ expect(record).to eq(expected)
84
+ end
85
+ end
86
+ context "source is a list" do
87
+ it "should be indifferent access" do
88
+ record = authorities.get_full_record('Term C1', "authority_C")
89
+ expect(record).to be_a HashWithIndifferentAccess
61
90
  end
62
91
  end
63
92
 
64
93
  context "term does not exist" do
65
94
  let(:id) { "NonID" }
66
- let(:expected) { {}.to_json }
95
+ let(:expected) { {} }
67
96
  it "should return an empty hash" do
68
- expect(authorities.get_full_record(id)).to eq(expected)
97
+ expect(authorities.get_full_record(id, "authority_A")).to eq(expected)
69
98
  end
70
99
  end
100
+
71
101
  end
72
102
 
73
103
  context "term does not an id" do
74
- let(:authorities) { Qa::Authorities::Local.new("", "authority_B") }
75
- let(:expected) { [ { :id => "Term B1", :label => "Term B1" }, { :id => "Term B2", :label => "Term B2" }, { :id => "Term B3", :label => "Term B3" } ] }
104
+ let(:authorities) { Qa::Authorities::Local.new }
105
+ let(:expected) { [ { 'id' => "Term B1", 'label' => "Term B1" },
106
+ { 'id' => "Term B2", 'label' => "Term B2" },
107
+ { 'id' => "Term B3", 'label' => "Term B3" } ] }
76
108
  it "should set the id to be same as the label" do
77
- expect(authorities.parse_authority_response).to eq(expected)
109
+ expect(authorities.search("", "authority_B")).to eq(expected)
78
110
  end
79
111
  end
80
112
 
81
113
  context "authority YAML is a list of terms" do
82
- let(:authorities) { Qa::Authorities::Local.new("", "authority_C") }
83
- let(:expected) { [ { :id => "Term C1", :label => "Term C1" }, { :id => "Term C2", :label => "Term C2" }, { :id => "Term C3", :label => "Term C3" } ] }
114
+ let(:authorities) { Qa::Authorities::Local.new }
115
+ let(:expected) { [ { 'id' => "Term C1", 'label' => "Term C1" },
116
+ { 'id' => "Term C2", 'label' => "Term C2" },
117
+ { 'id' => "Term C3", 'label' => "Term C3" } ] }
118
+
84
119
  it "should use the terms as labels" do
85
- expect(authorities.parse_authority_response).to eq(expected)
120
+ expect(authorities.search("", "authority_C")).to eq(expected)
86
121
  end
122
+
87
123
  end
88
124
 
89
- end
125
+ end
@@ -28,11 +28,17 @@ describe Qa::Authorities::Mesh do
28
28
  end
29
29
 
30
30
  it "handles queries" do
31
- pending "Re-enable this test once Mesh#results is changed to return a hash of results instead of a single json string"
32
- m = Authorities::Mesh.new('mr')
31
+ m = Qa::Authorities::Mesh.new
32
+ m.search('mr')
33
33
  results = m.results
34
34
  results.should include( {id: '1', label: 'Mr Plow'} )
35
35
  results.length.should == 3
36
36
  end
37
+
38
+ it "gets full records" do
39
+ m = Qa::Authorities::Mesh.new
40
+ result = m.get_full_record('2')
41
+ result.should == {id: '2', label: 'Mr Snow', synonyms: []}
42
+ end
37
43
  end
38
44
  end
@@ -10,10 +10,11 @@ describe Qa::Authorities::Oclcts do
10
10
  stub_request(:get, "http://tspilot.oclc.org/mesh/?maximumRecords=10&operation=searchRetrieve&query=dc.identifier%20exact%20%22D031329Q000821%22&recordPacking=xml&recordSchema=http://zthes.z3950.org/xml/1.0/&recordXPath=&resultSetTTL=300&sortKeys=&startRecord=1&version=1.1").
11
11
  to_return(:body => webmock_fixture("oclcts-response-mesh-3.txt"), :status => 200)
12
12
 
13
- @first_query = Qa::Authorities::Oclcts.new("ball", "mesh")
14
- @terms = @first_query.parse_authority_response
15
- @term_record = @first_query.get_full_record @terms.first["id"]
16
- @second_query = Qa::Authorities::Oclcts.new("alph", "mesh")
13
+ @first_query = Qa::Authorities::Oclcts.new
14
+ @terms = @first_query.search("ball", "mesh")
15
+ @term_record = @first_query.get_full_record(@terms.first["id"], "mesh")
16
+ @second_query = Qa::Authorities::Oclcts.new
17
+ @second_query.search("alph", "mesh")
17
18
  end
18
19
 
19
20
  describe "a query for terms" do
@@ -40,7 +41,7 @@ describe Qa::Authorities::Oclcts do
40
41
  end
41
42
 
42
43
  it "should succeed for valid ids, even if the id is not in the initial list of responses" do
43
- record = @second_query.get_full_record @terms.first["id"]
44
+ record = @second_query.get_full_record(@terms.first["id"], "mesh")
44
45
  record.values.should include @terms.first["id"]
45
46
  record.values.should include @terms.first["label"]
46
47
  end
@@ -3,20 +3,17 @@ require 'spec_helper'
3
3
  describe Qa::Authorities::Tgnlang do
4
4
 
5
5
  before :all do
6
- @terms = Qa::Authorities::Tgnlang.new("Tibetan")
6
+ @terms = Qa::Authorities::Tgnlang.new
7
+ @terms.search("Tibetan")
7
8
  end
8
9
 
9
10
  describe "response from dataset" do
10
- it "should return size 34 with query of Tibetan" do
11
- @terms.results.size.should == 34
11
+ it "should return unique record with query of Tibetan" do
12
+ @terms.results.should == [{"id"=>"75446", "label"=>"Tibetan"}]
12
13
  end
13
- it "should return type string" do
14
- @terms.results.class.name.should == "String"
14
+ it "should return type Array" do
15
+ @terms.results.class.should == Array
15
16
  end
16
- it "should return a string it contains" do
17
- @terms.results["Tibetan"].should == "Tibetan"
18
- end
19
-
20
17
  end
21
18
 
22
19
  end
@@ -58,3 +58,10 @@ end
58
58
  def local_authorities_path
59
59
  File.expand_path(File.join("../fixtures/authorities"), __FILE__)
60
60
  end
61
+
62
+ # returns the file contents
63
+ def load_fixture_file(fname)
64
+ File.open(Rails.root.join("spec/fixtures", fname)) do |f|
65
+ return f.read
66
+ end
67
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Stephen Anderson
@@ -16,12 +15,11 @@ authors:
16
15
  autorequire:
17
16
  bindir: bin
18
17
  cert_chain: []
19
- date: 2013-10-04 00:00:00.000000000 Z
18
+ date: 2013-11-07 00:00:00.000000000 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: rails
23
22
  requirement: !ruby/object:Gem::Requirement
24
- none: false
25
23
  requirements:
26
24
  - - ~>
27
25
  - !ruby/object:Gem::Version
@@ -29,7 +27,6 @@ dependencies:
29
27
  type: :runtime
30
28
  prerelease: false
31
29
  version_requirements: !ruby/object:Gem::Requirement
32
- none: false
33
30
  requirements:
34
31
  - - ~>
35
32
  - !ruby/object:Gem::Version
@@ -37,23 +34,34 @@ dependencies:
37
34
  - !ruby/object:Gem::Dependency
38
35
  name: curb
39
36
  requirement: !ruby/object:Gem::Requirement
40
- none: false
41
37
  requirements:
42
- - - ! '>='
38
+ - - '>='
43
39
  - !ruby/object:Gem::Version
44
40
  version: '0'
45
41
  type: :runtime
46
42
  prerelease: false
47
43
  version_requirements: !ruby/object:Gem::Requirement
48
- none: false
49
44
  requirements:
50
- - - ! '>='
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: rest-client
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
51
60
  - !ruby/object:Gem::Version
52
61
  version: '0'
53
62
  - !ruby/object:Gem::Dependency
54
63
  name: nokogiri
55
64
  requirement: !ruby/object:Gem::Requirement
56
- none: false
57
65
  requirements:
58
66
  - - ~>
59
67
  - !ruby/object:Gem::Version
@@ -61,7 +69,6 @@ dependencies:
61
69
  type: :runtime
62
70
  prerelease: false
63
71
  version_requirements: !ruby/object:Gem::Requirement
64
- none: false
65
72
  requirements:
66
73
  - - ~>
67
74
  - !ruby/object:Gem::Version
@@ -69,129 +76,113 @@ dependencies:
69
76
  - !ruby/object:Gem::Dependency
70
77
  name: activerecord-import
71
78
  requirement: !ruby/object:Gem::Requirement
72
- none: false
73
79
  requirements:
74
- - - ! '>='
80
+ - - '>='
75
81
  - !ruby/object:Gem::Version
76
82
  version: 0.4.0
77
83
  type: :runtime
78
84
  prerelease: false
79
85
  version_requirements: !ruby/object:Gem::Requirement
80
- none: false
81
86
  requirements:
82
- - - ! '>='
87
+ - - '>='
83
88
  - !ruby/object:Gem::Version
84
89
  version: 0.4.0
85
90
  - !ruby/object:Gem::Dependency
86
91
  name: sqlite3
87
92
  requirement: !ruby/object:Gem::Requirement
88
- none: false
89
93
  requirements:
90
- - - ! '>='
94
+ - - '>='
91
95
  - !ruby/object:Gem::Version
92
96
  version: '0'
93
97
  type: :development
94
98
  prerelease: false
95
99
  version_requirements: !ruby/object:Gem::Requirement
96
- none: false
97
100
  requirements:
98
- - - ! '>='
101
+ - - '>='
99
102
  - !ruby/object:Gem::Version
100
103
  version: '0'
101
104
  - !ruby/object:Gem::Dependency
102
105
  name: rspec
103
106
  requirement: !ruby/object:Gem::Requirement
104
- none: false
105
107
  requirements:
106
- - - ! '>='
108
+ - - '>='
107
109
  - !ruby/object:Gem::Version
108
110
  version: '0'
109
111
  type: :development
110
112
  prerelease: false
111
113
  version_requirements: !ruby/object:Gem::Requirement
112
- none: false
113
114
  requirements:
114
- - - ! '>='
115
+ - - '>='
115
116
  - !ruby/object:Gem::Version
116
117
  version: '0'
117
118
  - !ruby/object:Gem::Dependency
118
119
  name: rspec-rails
119
120
  requirement: !ruby/object:Gem::Requirement
120
- none: false
121
121
  requirements:
122
- - - ! '>='
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  type: :development
126
126
  prerelease: false
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
- none: false
129
128
  requirements:
130
- - - ! '>='
129
+ - - '>='
131
130
  - !ruby/object:Gem::Version
132
131
  version: '0'
133
132
  - !ruby/object:Gem::Dependency
134
133
  name: webmock
135
134
  requirement: !ruby/object:Gem::Requirement
136
- none: false
137
135
  requirements:
138
- - - ! '>='
136
+ - - '>='
139
137
  - !ruby/object:Gem::Version
140
138
  version: '0'
141
139
  type: :development
142
140
  prerelease: false
143
141
  version_requirements: !ruby/object:Gem::Requirement
144
- none: false
145
142
  requirements:
146
- - - ! '>='
143
+ - - '>='
147
144
  - !ruby/object:Gem::Version
148
145
  version: '0'
149
146
  - !ruby/object:Gem::Dependency
150
147
  name: simplecov
151
148
  requirement: !ruby/object:Gem::Requirement
152
- none: false
153
149
  requirements:
154
- - - ! '>='
150
+ - - '>='
155
151
  - !ruby/object:Gem::Version
156
152
  version: '0'
157
153
  type: :development
158
154
  prerelease: false
159
155
  version_requirements: !ruby/object:Gem::Requirement
160
- none: false
161
156
  requirements:
162
- - - ! '>='
157
+ - - '>='
163
158
  - !ruby/object:Gem::Version
164
159
  version: '0'
165
160
  - !ruby/object:Gem::Dependency
166
161
  name: sqlite3
167
162
  requirement: !ruby/object:Gem::Requirement
168
- none: false
169
163
  requirements:
170
- - - ! '>='
164
+ - - '>='
171
165
  - !ruby/object:Gem::Version
172
166
  version: '0'
173
167
  type: :development
174
168
  prerelease: false
175
169
  version_requirements: !ruby/object:Gem::Requirement
176
- none: false
177
170
  requirements:
178
- - - ! '>='
171
+ - - '>='
179
172
  - !ruby/object:Gem::Version
180
173
  version: '0'
181
174
  - !ruby/object:Gem::Dependency
182
175
  name: debugger
183
176
  requirement: !ruby/object:Gem::Requirement
184
- none: false
185
177
  requirements:
186
- - - ! '>='
178
+ - - '>='
187
179
  - !ruby/object:Gem::Version
188
180
  version: '0'
189
181
  type: :development
190
182
  prerelease: false
191
183
  version_requirements: !ruby/object:Gem::Requirement
192
- none: false
193
184
  requirements:
194
- - - ! '>='
185
+ - - '>='
195
186
  - !ruby/object:Gem::Version
196
187
  version: '0'
197
188
  description: Provides a set of uniform RESTful routes to query any controlled vocabulary
@@ -221,6 +212,7 @@ files:
221
212
  - lib/qa/authorities/base.rb
222
213
  - lib/qa/authorities/lcsh.rb
223
214
  - lib/qa/authorities/loc.rb
215
+ - lib/qa/authorities/local/subauthority.rb
224
216
  - lib/qa/authorities/local.rb
225
217
  - lib/qa/authorities/mesh.rb
226
218
  - lib/qa/authorities/mesh_tools/mesh_data_parser.rb
@@ -228,6 +220,7 @@ files:
228
220
  - lib/qa/authorities/mesh_tools.rb
229
221
  - lib/qa/authorities/oclcts.rb
230
222
  - lib/qa/authorities/tgnlang.rb
223
+ - lib/qa/authorities/web_service_base.rb
231
224
  - lib/qa/authorities.rb
232
225
  - lib/qa/data/TGN_LANGUAGES.xml
233
226
  - lib/qa/engine.rb
@@ -241,6 +234,7 @@ files:
241
234
  - spec/fixtures/authorities/authority_A.yml
242
235
  - spec/fixtures/authorities/authority_B.yml
243
236
  - spec/fixtures/authorities/authority_C.yml
237
+ - spec/fixtures/authorities/authority_D.yml
244
238
  - spec/fixtures/lcsh-response.txt
245
239
  - spec/fixtures/loc-response.txt
246
240
  - spec/fixtures/mesh.txt
@@ -274,9 +268,9 @@ files:
274
268
  - spec/internal/config/routes.rb
275
269
  - spec/internal/config.ru
276
270
  - spec/internal/db/development.sqlite3
277
- - spec/internal/db/migrate/20130930151844_create_qa_subject_mesh_terms.qa.rb
278
- - spec/internal/db/migrate/20130930151845_create_qa_mesh_tree.qa.rb
279
- - spec/internal/db/migrate/20130930151846_add_term_lower_to_qa_subject_mesh_terms.qa.rb
271
+ - spec/internal/db/migrate/20131106203101_create_qa_subject_mesh_terms.qa.rb
272
+ - spec/internal/db/migrate/20131106203102_create_qa_mesh_tree.qa.rb
273
+ - spec/internal/db/migrate/20131106203103_add_term_lower_to_qa_subject_mesh_terms.qa.rb
280
274
  - spec/internal/db/schema.rb
281
275
  - spec/internal/db/seeds.rb
282
276
  - spec/internal/db/test.sqlite3
@@ -305,33 +299,33 @@ files:
305
299
  homepage: https://github.com/projecthydra/questioning_authority
306
300
  licenses:
307
301
  - APACHE-2
302
+ metadata: {}
308
303
  post_install_message:
309
304
  rdoc_options: []
310
305
  require_paths:
311
306
  - lib
312
307
  required_ruby_version: !ruby/object:Gem::Requirement
313
- none: false
314
308
  requirements:
315
- - - ! '>='
309
+ - - '>='
316
310
  - !ruby/object:Gem::Version
317
311
  version: '0'
318
312
  required_rubygems_version: !ruby/object:Gem::Requirement
319
- none: false
320
313
  requirements:
321
- - - ! '>='
314
+ - - '>='
322
315
  - !ruby/object:Gem::Version
323
316
  version: '0'
324
317
  requirements: []
325
318
  rubyforge_project:
326
- rubygems_version: 1.8.23
319
+ rubygems_version: 2.0.3
327
320
  signing_key:
328
- specification_version: 3
321
+ specification_version: 4
329
322
  summary: You should question your authorities.
330
323
  test_files:
331
324
  - spec/controllers/terms_controller_spec.rb
332
325
  - spec/fixtures/authorities/authority_A.yml
333
326
  - spec/fixtures/authorities/authority_B.yml
334
327
  - spec/fixtures/authorities/authority_C.yml
328
+ - spec/fixtures/authorities/authority_D.yml
335
329
  - spec/fixtures/lcsh-response.txt
336
330
  - spec/fixtures/loc-response.txt
337
331
  - spec/fixtures/mesh.txt
@@ -365,9 +359,9 @@ test_files:
365
359
  - spec/internal/config/routes.rb
366
360
  - spec/internal/config.ru
367
361
  - spec/internal/db/development.sqlite3
368
- - spec/internal/db/migrate/20130930151844_create_qa_subject_mesh_terms.qa.rb
369
- - spec/internal/db/migrate/20130930151845_create_qa_mesh_tree.qa.rb
370
- - spec/internal/db/migrate/20130930151846_add_term_lower_to_qa_subject_mesh_terms.qa.rb
362
+ - spec/internal/db/migrate/20131106203101_create_qa_subject_mesh_terms.qa.rb
363
+ - spec/internal/db/migrate/20131106203102_create_qa_mesh_tree.qa.rb
364
+ - spec/internal/db/migrate/20131106203103_add_term_lower_to_qa_subject_mesh_terms.qa.rb
371
365
  - spec/internal/db/schema.rb
372
366
  - spec/internal/db/seeds.rb
373
367
  - spec/internal/db/test.sqlite3