qa 0.10.1 → 0.10.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +12 -2
- data/app/controllers/qa/terms_controller.rb +14 -16
- data/app/models/qa/mesh_tree.rb +3 -5
- data/app/models/qa/subject_mesh_term.rb +15 -15
- data/config/routes.rb +1 -1
- data/lib/generators/qa/install/install_generator.rb +2 -3
- data/lib/generators/qa/local/tables/mysql/mysql_generator.rb +3 -5
- data/lib/generators/qa/local/tables/tables_generator.rb +4 -6
- data/lib/qa/authorities/assign_fast/generic_authority.rb +16 -19
- data/lib/qa/authorities/assign_fast_subauthority.rb +3 -5
- data/lib/qa/authorities/authority_with_sub_authority.rb +1 -2
- data/lib/qa/authorities/base.rb +2 -3
- data/lib/qa/authorities/geonames.rb +11 -12
- data/lib/qa/authorities/getty.rb +7 -8
- data/lib/qa/authorities/getty/aat.rb +11 -12
- data/lib/qa/authorities/getty/tgn.rb +15 -15
- data/lib/qa/authorities/getty/ulan.rb +15 -16
- data/lib/qa/authorities/loc/generic_authority.rb +32 -33
- data/lib/qa/authorities/loc_subauthority.rb +17 -20
- data/lib/qa/authorities/local.rb +41 -40
- data/lib/qa/authorities/local/file_based_authority.rb +18 -19
- data/lib/qa/authorities/local/mysql_table_based_authority.rb +8 -6
- data/lib/qa/authorities/local/registry.rb +5 -5
- data/lib/qa/authorities/local/table_based_authority.rb +26 -19
- data/lib/qa/authorities/mesh.rb +8 -16
- data/lib/qa/authorities/mesh_tools.rb +5 -5
- data/lib/qa/authorities/mesh_tools/mesh_data_parser.rb +4 -6
- data/lib/qa/authorities/mesh_tools/mesh_importer.rb +11 -13
- data/lib/qa/authorities/oclcts.rb +0 -1
- data/lib/qa/authorities/oclcts/generic_oclc_authority.rb +16 -16
- data/lib/qa/authorities/tgnlang.rb +7 -12
- data/lib/qa/version.rb +1 -1
- data/spec/controllers/terms_controller_spec.rb +44 -54
- data/spec/lib/authorities/assign_fast_spec.rb +25 -27
- data/spec/lib/authorities/file_based_authority_spec.rb +25 -26
- data/spec/lib/authorities/geonames_spec.rb +5 -6
- data/spec/lib/authorities/getty/aat_spec.rb +6 -10
- data/spec/lib/authorities/getty/tgn_spec.rb +6 -10
- data/spec/lib/authorities/getty/ulan_spec.rb +6 -10
- data/spec/lib/authorities/getty_spec.rb +4 -5
- data/spec/lib/authorities/loc_spec.rb +30 -36
- data/spec/lib/authorities/local_spec.rb +5 -7
- data/spec/lib/authorities/mesh_spec.rb +9 -9
- data/spec/lib/authorities/mysql_table_based_authority_spec.rb +13 -5
- data/spec/lib/authorities/oclcts_spec.rb +17 -21
- data/spec/lib/authorities/table_based_authority_spec.rb +21 -12
- data/spec/lib/authorities/tgnlang_spec.rb +4 -6
- data/spec/lib/authorities_loc_subauthorities.rb +50 -54
- data/spec/lib/mesh_data_parser_spec.rb +73 -79
- data/spec/lib/services/rdf_authority_parser_spec.rb +2 -7
- data/spec/lib/tasks/mesh.rake_spec.rb +16 -12
- data/spec/models/subject_mesh_term_spec.rb +4 -4
- data/spec/routing/route_spec.rb +13 -15
- data/spec/spec_helper.rb +3 -4
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +0 -1
- metadata +45 -17
@@ -1,11 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Qa::Authorities::AssignFast do
|
4
|
-
|
5
4
|
# subauthority infrastructure
|
6
5
|
describe "#new" do
|
7
6
|
context "without a sub-authority" do
|
8
|
-
it "
|
7
|
+
it "raises an exception" do
|
9
8
|
expect { described_class.new }.to raise_error RuntimeError, "Initializing with as sub authority is removed. use Module.subauthority_for(nil) instead"
|
10
9
|
end
|
11
10
|
end
|
@@ -13,13 +12,13 @@ describe Qa::Authorities::AssignFast do
|
|
13
12
|
|
14
13
|
describe "#subauthority_for" do
|
15
14
|
context "with an invalid sub-authority" do
|
16
|
-
it "
|
17
|
-
expect {
|
15
|
+
it "raises an exception" do
|
16
|
+
expect { described_class.subauthority_for("foo") }.to raise_error Qa::InvalidSubAuthority
|
18
17
|
end
|
19
18
|
end
|
20
19
|
context "with a valid sub-authority" do
|
21
|
-
it "
|
22
|
-
expect(
|
20
|
+
it "creates the authority" do
|
21
|
+
expect(described_class.subauthority_for("all")).to be_kind_of Qa::Authorities::AssignFast::GenericAuthority
|
23
22
|
end
|
24
23
|
end
|
25
24
|
end
|
@@ -27,7 +26,7 @@ describe Qa::Authorities::AssignFast do
|
|
27
26
|
# api call
|
28
27
|
describe "query url" do
|
29
28
|
let :authority do
|
30
|
-
|
29
|
+
described_class.subauthority_for("all")
|
31
30
|
end
|
32
31
|
|
33
32
|
it "is correctly formed" do
|
@@ -38,15 +37,15 @@ describe Qa::Authorities::AssignFast do
|
|
38
37
|
|
39
38
|
describe "search result" do
|
40
39
|
let :authority do
|
41
|
-
|
40
|
+
described_class.subauthority_for("all")
|
42
41
|
end
|
43
42
|
|
44
43
|
context "when we sent a bad character" do
|
45
44
|
# server returns 200 with empty response; JSON throws a ParserError
|
46
45
|
before do
|
47
|
-
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?query=word%20ling&queryIndex=suggestall&queryReturn=suggestall,idroot,auth,type&rows=20&suggest=autoSubject")
|
48
|
-
|
49
|
-
|
46
|
+
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?query=word%20ling&queryIndex=suggestall&queryReturn=suggestall,idroot,auth,type&rows=20&suggest=autoSubject")
|
47
|
+
.with(headers: { 'Accept' => 'application/json' })
|
48
|
+
.to_return(status: 200, body: "", headers: {})
|
50
49
|
end
|
51
50
|
it "logs an info and returns an empty array" do
|
52
51
|
expect(Rails.logger).to receive(:info).with("Could not parse response as JSON. Request url: http://fast.oclc.org/searchfast/fastsuggest?&query=word%20ling&queryIndex=suggestall&queryReturn=suggestall%2Cidroot%2Cauth%2Ctype&suggest=autoSubject&rows=20")
|
@@ -58,11 +57,11 @@ describe Qa::Authorities::AssignFast do
|
|
58
57
|
context "when query is blank" do
|
59
58
|
# server returns results but no results header
|
60
59
|
let :results do
|
61
|
-
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?&query=&queryIndex=suggestall&queryReturn=suggestall%2Cidroot%2Cauth%2Ctype&suggest=autoSubject&rows=20")
|
62
|
-
with(:
|
63
|
-
to_return(:
|
60
|
+
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?&query=&queryIndex=suggestall&queryReturn=suggestall%2Cidroot%2Cauth%2Ctype&suggest=autoSubject&rows=20")
|
61
|
+
.with(headers: { 'Accept' => 'application/json' })
|
62
|
+
.to_return(body: webmock_fixture("assign-fast-noheader.json"), status: 200, headers: {})
|
64
63
|
authority.search("")
|
65
|
-
|
64
|
+
end
|
66
65
|
it "returns an empty array" do
|
67
66
|
expect(results).to eq([])
|
68
67
|
end
|
@@ -70,9 +69,9 @@ describe Qa::Authorities::AssignFast do
|
|
70
69
|
|
71
70
|
context "with no results" do
|
72
71
|
let :results do
|
73
|
-
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?query=word%20ling&queryIndex=suggestall&queryReturn=suggestall,idroot,auth,type&rows=20&suggest=autoSubject")
|
74
|
-
with(:
|
75
|
-
to_return(:
|
72
|
+
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?query=word%20ling&queryIndex=suggestall&queryReturn=suggestall,idroot,auth,type&rows=20&suggest=autoSubject")
|
73
|
+
.with(headers: { 'Accept' => 'application/json' })
|
74
|
+
.to_return(body: webmock_fixture("assign-fast-noresults.json"), status: 200, headers: {})
|
76
75
|
authority.search("word (ling")
|
77
76
|
end
|
78
77
|
it "returns an empty array" do
|
@@ -82,9 +81,9 @@ describe Qa::Authorities::AssignFast do
|
|
82
81
|
|
83
82
|
context "with suggestall results" do
|
84
83
|
let :results do
|
85
|
-
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?query=word%20ling&queryIndex=suggestall&queryReturn=suggestall,idroot,auth,type&rows=20&suggest=autoSubject")
|
86
|
-
with(:
|
87
|
-
to_return(:
|
84
|
+
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?query=word%20ling&queryIndex=suggestall&queryReturn=suggestall,idroot,auth,type&rows=20&suggest=autoSubject")
|
85
|
+
.with(headers: { 'Accept' => 'application/json' })
|
86
|
+
.to_return(body: webmock_fixture("assign-fast-oneresult.json"), status: 200, headers: {})
|
88
87
|
authority.search("word (ling")
|
89
88
|
end
|
90
89
|
it "is correctly parsed" do
|
@@ -92,16 +91,16 @@ describe Qa::Authorities::AssignFast do
|
|
92
91
|
expect(results.first[:id]).to eq('fst01180101')
|
93
92
|
expect(results.first[:label]).to eq('Word (Linguistics)')
|
94
93
|
expect(results.first[:value]).to eq('Word (Linguistics)')
|
95
|
-
expect(results.first).to eq(
|
94
|
+
expect(results.first).to eq(id: "fst01180101", label: "Word (Linguistics)", value: "Word (Linguistics)")
|
96
95
|
end
|
97
96
|
end
|
98
97
|
|
99
98
|
context "with topical results" do
|
100
99
|
let :results do
|
101
|
-
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?query=word&queryIndex=suggest50&queryReturn=suggest50,idroot,auth,type&rows=20&suggest=autoSubject")
|
102
|
-
with(:
|
103
|
-
to_return(:
|
104
|
-
|
100
|
+
stub_request(:get, "http://fast.oclc.org/searchfast/fastsuggest?query=word&queryIndex=suggest50&queryReturn=suggest50,idroot,auth,type&rows=20&suggest=autoSubject")
|
101
|
+
.with(headers: { 'Accept' => 'application/json' })
|
102
|
+
.to_return(body: webmock_fixture("assign-fast-topical-result.json"), status: 200, headers: {})
|
103
|
+
described_class.subauthority_for("topical").search("word")
|
105
104
|
end
|
106
105
|
it "is correctly parsed" do
|
107
106
|
expect(results.count).to eq(20)
|
@@ -111,5 +110,4 @@ describe Qa::Authorities::AssignFast do
|
|
111
110
|
end
|
112
111
|
end
|
113
112
|
end
|
114
|
-
|
115
113
|
end
|
@@ -7,30 +7,30 @@ describe Qa::Authorities::Local::FileBasedAuthority do
|
|
7
7
|
let(:authority_d) { Qa::Authorities::Local.subauthority_for("authority_D") }
|
8
8
|
|
9
9
|
describe "#all" do
|
10
|
-
let(:expected) { [
|
11
|
-
|
12
|
-
|
13
|
-
it "
|
10
|
+
let(:expected) { [{ 'id' => "A1", 'label' => "Abc Term A1" },
|
11
|
+
{ 'id' => "A2", 'label' => "Term A2" },
|
12
|
+
{ 'id' => "A3", 'label' => "Abc Term A3" }] }
|
13
|
+
it "returns all the entries" do
|
14
14
|
expect(authority_a.all).to eq(expected)
|
15
15
|
end
|
16
16
|
context "when terms do not have ids" do
|
17
|
-
let(:expected) { [
|
18
|
-
|
19
|
-
|
20
|
-
it "
|
17
|
+
let(:expected) { [{ 'id' => "Term B1", 'label' => "Term B1" },
|
18
|
+
{ 'id' => "Term B2", 'label' => "Term B2" },
|
19
|
+
{ 'id' => "Term B3", 'label' => "Term B3" }] }
|
20
|
+
it "sets the id to be same as the label" do
|
21
21
|
expect(authority_b.all).to eq(expected)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
context "authority YAML file is a list of terms" do
|
25
|
-
let(:expected) { [
|
26
|
-
|
27
|
-
|
28
|
-
it "
|
25
|
+
let(:expected) { [{ 'id' => "Term C1", 'label' => "Term C1" },
|
26
|
+
{ 'id' => "Term C2", 'label' => "Term C2" },
|
27
|
+
{ 'id' => "Term C3", 'label' => "Term C3" }] }
|
28
|
+
it "uses the terms as labels" do
|
29
29
|
expect(authority_c.all).to eq(expected)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
context "YAML file is malformed" do
|
33
|
-
it "
|
33
|
+
it "raises an error" do
|
34
34
|
expect { authority_d.all }.to raise_error Psych::SyntaxError
|
35
35
|
end
|
36
36
|
end
|
@@ -39,26 +39,26 @@ describe Qa::Authorities::Local::FileBasedAuthority do
|
|
39
39
|
describe "#search" do
|
40
40
|
context "with an empty query string" do
|
41
41
|
let(:expected) { [] }
|
42
|
-
it "
|
42
|
+
it "returns no results" do
|
43
43
|
expect(authority_a.search("")).to eq(expected)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
context "with at least one matching entry" do
|
47
|
-
let(:expected) { [
|
48
|
-
|
49
|
-
it "
|
47
|
+
let(:expected) { [{ 'id' => "A1", 'label' => "Abc Term A1" },
|
48
|
+
{ 'id' => "A3", 'label' => "Abc Term A3" }] }
|
49
|
+
it "returns only entries matching the query term" do
|
50
50
|
expect(authority_a.search("Abc")).to eq(expected)
|
51
51
|
end
|
52
|
-
it "
|
53
|
-
expect(authority_a.search("Term A1")).to eq([{"id"=>"A1", "label"=>"Abc Term A1"}])
|
52
|
+
it "matches parts of words in the middle of the term" do
|
53
|
+
expect(authority_a.search("Term A1")).to eq([{ "id" => "A1", "label" => "Abc Term A1" }])
|
54
54
|
end
|
55
|
-
it "
|
55
|
+
it "is case insensitive" do
|
56
56
|
expect(authority_a.search("aBc")).to eq(expected)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
context "with no matching entries" do
|
60
60
|
let(:expected) { [] }
|
61
|
-
it "
|
61
|
+
it "returns an empty array" do
|
62
62
|
expect(authority_a.search("def")).to eq(expected)
|
63
63
|
end
|
64
64
|
end
|
@@ -68,14 +68,14 @@ describe Qa::Authorities::Local::FileBasedAuthority do
|
|
68
68
|
context "source is a hash" do
|
69
69
|
let(:id) { "A2" }
|
70
70
|
let(:expected) { { 'id' => "A2", 'term' => "Term A2", 'active' => false } }
|
71
|
-
it "
|
71
|
+
it "returns the full term record" do
|
72
72
|
record = authority_a.find(id)
|
73
73
|
expect(record).to be_a HashWithIndifferentAccess
|
74
74
|
expect(record).to eq(expected)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
context "source is a list" do
|
78
|
-
it "
|
78
|
+
it "is indifferent access" do
|
79
79
|
record = authority_c.find("Term C1")
|
80
80
|
expect(record).to be_a HashWithIndifferentAccess
|
81
81
|
end
|
@@ -83,17 +83,16 @@ describe Qa::Authorities::Local::FileBasedAuthority do
|
|
83
83
|
context "term does not exist" do
|
84
84
|
let(:id) { "NonID" }
|
85
85
|
let(:expected) { {} }
|
86
|
-
it "
|
86
|
+
it "returns an empty hash" do
|
87
87
|
expect(authority_a.find(id)).to eq(expected)
|
88
88
|
end
|
89
89
|
end
|
90
90
|
context "on a sub-authority" do
|
91
|
-
it "
|
91
|
+
it "returns the full term record" do
|
92
92
|
record = authority_a.find("A2")
|
93
93
|
expect(record).to be_a HashWithIndifferentAccess
|
94
94
|
expect(record).to eq('id' => "A2", 'term' => "Term A2", 'active' => false)
|
95
95
|
end
|
96
96
|
end
|
97
97
|
end
|
98
|
-
|
99
98
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Qa::Authorities::Geonames do
|
4
|
-
|
5
4
|
before do
|
6
5
|
described_class.username = 'dummy'
|
7
6
|
end
|
@@ -21,8 +20,8 @@ describe Qa::Authorities::Geonames do
|
|
21
20
|
describe "#search" do
|
22
21
|
context "authorities" do
|
23
22
|
before do
|
24
|
-
stub_request(:get, /api\.geonames\.org.*/)
|
25
|
-
|
23
|
+
stub_request(:get, /api\.geonames\.org.*/)
|
24
|
+
.to_return(body: webmock_fixture("geonames-response.json"), status: 200)
|
26
25
|
end
|
27
26
|
|
28
27
|
subject { authority.search('whatever') }
|
@@ -77,13 +76,13 @@ describe Qa::Authorities::Geonames do
|
|
77
76
|
describe "#find" do
|
78
77
|
context "using a subject id" do
|
79
78
|
before do
|
80
|
-
stub_request(:get, "http://www.geonames.org/getJSON?geonameId=2088122&username=dummy")
|
81
|
-
|
79
|
+
stub_request(:get, "http://www.geonames.org/getJSON?geonameId=2088122&username=dummy")
|
80
|
+
.to_return(status: 200, body: webmock_fixture("geonames-find-response.json"))
|
82
81
|
end
|
83
82
|
subject { authority.find("2088122") }
|
84
83
|
|
85
84
|
it "returns the complete record for a given subject" do
|
86
|
-
expect(subject['geonameId']).to eq
|
85
|
+
expect(subject['geonameId']).to eq 2_088_122
|
87
86
|
expect(subject['name']).to eq "Port Moresby"
|
88
87
|
end
|
89
88
|
end
|
@@ -1,12 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Qa::Authorities::Getty::AAT do
|
4
|
-
|
5
4
|
let(:authority) { described_class.new }
|
6
5
|
|
7
6
|
describe "#build_query_url" do
|
8
7
|
subject { authority.build_query_url("foo") }
|
9
|
-
it { is_expected.to
|
8
|
+
it { is_expected.to match(/^http:\/\/vocab\.getty\.edu\//) }
|
10
9
|
end
|
11
10
|
|
12
11
|
describe "#find_url" do
|
@@ -17,13 +16,13 @@ describe Qa::Authorities::Getty::AAT do
|
|
17
16
|
describe "#search" do
|
18
17
|
context "authorities" do
|
19
18
|
before do
|
20
|
-
stub_request(:get, /vocab\.getty\.edu.*/)
|
21
|
-
|
19
|
+
stub_request(:get, /vocab\.getty\.edu.*/)
|
20
|
+
.to_return(body: webmock_fixture("aat-response.txt"), status: 200)
|
22
21
|
end
|
23
22
|
|
24
23
|
subject { authority.search('whatever') }
|
25
24
|
|
26
|
-
it "
|
25
|
+
it "has id and label keys" do
|
27
26
|
expect(subject.first).to eq("id" => 'http://vocab.getty.edu/aat/300053264', "label" => "photocopying")
|
28
27
|
expect(subject.last).to eq("id" => 'http://vocab.getty.edu/aat/300265560', "label" => "photoscreenprints")
|
29
28
|
expect(subject.size).to eq(10)
|
@@ -48,8 +47,8 @@ describe Qa::Authorities::Getty::AAT do
|
|
48
47
|
describe "#find" do
|
49
48
|
context "using a subject id" do
|
50
49
|
before do
|
51
|
-
stub_request(:get, "http://vocab.getty.edu/aat/300265560.json")
|
52
|
-
to_return(status: 200, body: webmock_fixture("getty-aat-find-response.json"))
|
50
|
+
stub_request(:get, "http://vocab.getty.edu/aat/300265560.json")
|
51
|
+
.to_return(status: 200, body: webmock_fixture("getty-aat-find-response.json"))
|
53
52
|
end
|
54
53
|
subject { authority.find("300265560") }
|
55
54
|
|
@@ -76,7 +75,4 @@ describe Qa::Authorities::Getty::AAT do
|
|
76
75
|
FILTER regex(?name, "search_term", "i") .
|
77
76
|
} ORDER BY ?name' }
|
78
77
|
end
|
79
|
-
|
80
78
|
end
|
81
|
-
|
82
|
-
|
@@ -1,12 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Qa::Authorities::Getty::TGN do
|
4
|
-
|
5
4
|
let(:authority) { described_class.new }
|
6
5
|
|
7
6
|
describe "#build_query_url" do
|
8
7
|
subject { authority.build_query_url("foo") }
|
9
|
-
it { is_expected.to
|
8
|
+
it { is_expected.to match(/^http:\/\/vocab\.getty\.edu\//) }
|
10
9
|
end
|
11
10
|
|
12
11
|
describe "#find_url" do
|
@@ -17,13 +16,13 @@ describe Qa::Authorities::Getty::TGN do
|
|
17
16
|
describe "#search" do
|
18
17
|
context "authorities" do
|
19
18
|
before do
|
20
|
-
stub_request(:get, /vocab\.getty\.edu.*/)
|
21
|
-
|
19
|
+
stub_request(:get, /vocab\.getty\.edu.*/)
|
20
|
+
.to_return(body: webmock_fixture("tgn-response.txt"), status: 200)
|
22
21
|
end
|
23
22
|
|
24
23
|
subject { authority.search('whatever') }
|
25
24
|
|
26
|
-
it "
|
25
|
+
it "has id and label keys" do
|
27
26
|
expect(subject.first).to eq("id" => 'http://vocab.getty.edu/tgn/2058300', "label" => "Cawood (Andrew, Missouri, United States)")
|
28
27
|
expect(subject.last).to eq("id" => 'http://vocab.getty.edu/tgn/7022503', "label" => "Cawood Branch (Kentucky, United States)")
|
29
28
|
expect(subject.size).to eq(6)
|
@@ -48,8 +47,8 @@ describe Qa::Authorities::Getty::TGN do
|
|
48
47
|
describe "#find" do
|
49
48
|
context "using a subject id" do
|
50
49
|
before do
|
51
|
-
stub_request(:get, "http://vocab.getty.edu/tgn/1028772.json")
|
52
|
-
|
50
|
+
stub_request(:get, "http://vocab.getty.edu/tgn/1028772.json")
|
51
|
+
.to_return(status: 200, body: webmock_fixture("getty-tgn-find-response.json"))
|
53
52
|
end
|
54
53
|
subject { authority.find("1028772") }
|
55
54
|
|
@@ -89,7 +88,4 @@ describe Qa::Authorities::Getty::TGN do
|
|
89
88
|
} ORDER BY ?name ASC(?par)" }
|
90
89
|
end
|
91
90
|
end
|
92
|
-
|
93
91
|
end
|
94
|
-
|
95
|
-
|
@@ -1,12 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Qa::Authorities::Getty::Ulan do
|
4
|
-
|
5
4
|
let(:authority) { described_class.new }
|
6
5
|
|
7
6
|
describe "#build_query_url" do
|
8
7
|
subject { authority.build_query_url("foo") }
|
9
|
-
it { is_expected.to
|
8
|
+
it { is_expected.to match(/^http:\/\/vocab\.getty\.edu\//) }
|
10
9
|
end
|
11
10
|
|
12
11
|
describe "#find_url" do
|
@@ -17,13 +16,13 @@ describe Qa::Authorities::Getty::Ulan do
|
|
17
16
|
describe "#search" do
|
18
17
|
context "authorities" do
|
19
18
|
before do
|
20
|
-
stub_request(:get, /vocab\.getty\.edu.*/)
|
21
|
-
|
19
|
+
stub_request(:get, /vocab\.getty\.edu.*/)
|
20
|
+
.to_return(body: webmock_fixture("ulan-response.txt"), status: 200)
|
22
21
|
end
|
23
22
|
|
24
23
|
subject { authority.search('whatever') }
|
25
24
|
|
26
|
-
it "
|
25
|
+
it "has id and label keys" do
|
27
26
|
expect(subject.first).to eq("id" => 'http://vocab.getty.edu/ulan/500233743', "label" => "Alan Turner and Associates (British architectural firm, contemporary)")
|
28
27
|
expect(subject.last).to eq("id" => 'http://vocab.getty.edu/ulan/500023812', "label" => "Warren, Charles Turner (English engraver, 1762-1823)")
|
29
28
|
expect(subject.size).to eq(142)
|
@@ -48,8 +47,8 @@ describe Qa::Authorities::Getty::Ulan do
|
|
48
47
|
describe "#find" do
|
49
48
|
context "using a subject id" do
|
50
49
|
before do
|
51
|
-
stub_request(:get, "http://vocab.getty.edu/ulan/500026846.json")
|
52
|
-
|
50
|
+
stub_request(:get, "http://vocab.getty.edu/ulan/500026846.json")
|
51
|
+
.to_return(status: 200, body: webmock_fixture("getty-ulan-find-response.json"))
|
53
52
|
end
|
54
53
|
subject { authority.find("500026846") }
|
55
54
|
|
@@ -91,7 +90,4 @@ describe Qa::Authorities::Getty::Ulan do
|
|
91
90
|
} ORDER BY ?name" }
|
92
91
|
end
|
93
92
|
end
|
94
|
-
|
95
93
|
end
|
96
|
-
|
97
|
-
|
@@ -1,28 +1,27 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Qa::Authorities::Getty do
|
4
|
-
|
5
4
|
describe "#new" do
|
6
|
-
it "
|
5
|
+
it "raises an exception" do
|
7
6
|
expect { described_class.new }.to raise_error RuntimeError, "Initializing with as sub authority is removed. use Module.subauthority_for(nil) instead"
|
8
7
|
end
|
9
8
|
end
|
10
9
|
|
11
10
|
describe "#subauthority_for" do
|
12
11
|
context "without a sub-authority" do
|
13
|
-
it "
|
12
|
+
it "raises an exception" do
|
14
13
|
expect { described_class.subauthority_for }.to raise_error ArgumentError
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
18
17
|
context "with an invalid sub-authority" do
|
19
|
-
it "
|
18
|
+
it "raises an exception" do
|
20
19
|
expect { described_class.subauthority_for("foo") }.to raise_error Qa::InvalidSubAuthority
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
24
23
|
context "with a valid sub-authority" do
|
25
|
-
it "
|
24
|
+
it "creates the authority" do
|
26
25
|
expect(described_class.subauthority_for("aat")).to be_kind_of Qa::Authorities::Getty::AAT
|
27
26
|
end
|
28
27
|
end
|