krikri 0.12.0 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/krikri/activity.rb +34 -8
- data/lib/generators/krikri/templates/schema.xml +1 -0
- data/lib/generators/krikri/templates/solrconfig.xml +1 -0
- data/lib/krikri/async_uri_getter.rb +27 -0
- data/lib/krikri/engine.rb +19 -4
- data/lib/krikri/enricher.rb +3 -6
- data/lib/krikri/entity_behavior.rb +57 -11
- data/lib/krikri/entity_behaviors/aggregation_entity_behavior.rb +1 -1
- data/lib/krikri/entity_behaviors/original_record_entity_behavior.rb +1 -1
- data/lib/krikri/entity_consumer.rb +40 -17
- data/lib/krikri/indexer.rb +7 -7
- data/lib/krikri/mapper.rb +23 -14
- data/lib/krikri/search_index.rb +4 -0
- data/lib/krikri/software_agent.rb +8 -4
- data/lib/krikri/version.rb +1 -1
- data/spec/internal/Gemfile +3 -3
- data/spec/internal/Gemfile.lock +28 -28
- data/spec/internal/app/assets/javascripts/application.js +1 -1
- data/spec/internal/config/initializers/blacklight_initializer.rb +1 -1
- data/spec/internal/config/initializers/devise.rb +2 -2
- data/spec/internal/config/secrets.yml +2 -2
- data/spec/internal/db/development.sqlite3 +0 -0
- data/spec/internal/db/migrate/{20160304151204_devise_create_users.rb → 20160226160200_devise_create_users.rb} +0 -0
- data/spec/internal/db/migrate/{20160304151247_create_searches.blacklight.rb → 20160226160226_create_searches.blacklight.rb} +0 -0
- data/spec/internal/db/migrate/{20160304151248_create_bookmarks.blacklight.rb → 20160226160227_create_bookmarks.blacklight.rb} +0 -0
- data/spec/internal/db/migrate/{20160304151249_add_polymorphic_type_to_bookmarks.blacklight.rb → 20160226160228_add_polymorphic_type_to_bookmarks.blacklight.rb} +0 -0
- data/spec/internal/db/schema.rb +1 -1
- data/spec/internal/db/test.sqlite3 +0 -0
- data/spec/internal/log/development.log +92 -92
- data/spec/lib/krikri/async_uri_getter_spec.rb +31 -7
- data/spec/lib/krikri/entity_consumer_spec.rb +37 -7
- data/spec/lib/krikri/harvester_spec.rb +7 -3
- data/spec/lib/krikri/indexer_spec.rb +7 -4
- data/spec/lib/krikri/mapper_agent_spec.rb +10 -9
- data/spec/lib/krikri/search_index_spec.rb +3 -6
- data/spec/models/activity_spec.rb +32 -0
- data/spec/models/dpla/map/aggregation_spec.rb +40 -21
- data/spec/models/provider_spec.rb +2 -9
- data/spec/spec_helper.rb +1 -2
- data/spec/support/shared_contexts/indexed_item.rb +1 -3
- data/spec/support/shared_examples/software_agent.rb +1 -1
- metadata +11 -14
- data/lib/generators/krikri/templates/schema.xml +0 -767
- data/lib/generators/krikri/templates/solrconfig.xml +0 -160
- data/spec/internal/log/test.log +0 -8537
@@ -7,11 +7,11 @@ describe Krikri::Mapper::Agent do
|
|
7
7
|
create(:krikri_harvest_activity)
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
harvest_gen_uri = Krikri::Activity.base_uri / 2
|
11
|
+
mapping_gen_uri = Krikri::Activity.base_uri / 3
|
12
12
|
|
13
13
|
# This must be defined with `let' as a macro. See below.
|
14
|
-
let(:opts) { {name: :agent_map, generator_uri:
|
14
|
+
let(:opts) { { name: :agent_map, generator_uri: harvest_gen_uri } }
|
15
15
|
|
16
16
|
# This can not be a macro, because it has to be passed as an argument to
|
17
17
|
# `it_behaves_like', which is interpreted at compile time. It should be the
|
@@ -25,7 +25,7 @@ describe Krikri::Mapper::Agent do
|
|
25
25
|
# macro), then `subject' will not instantiate an object with the same options
|
26
26
|
# when it's invoked repeatedly.
|
27
27
|
#
|
28
|
-
behaves_opts = {name: :agent_map, generator_uri:
|
28
|
+
behaves_opts = {name: :agent_map, generator_uri: harvest_gen_uri}
|
29
29
|
it_behaves_like 'a software agent', behaves_opts
|
30
30
|
|
31
31
|
subject { described_class.new(opts) }
|
@@ -35,10 +35,10 @@ describe Krikri::Mapper::Agent do
|
|
35
35
|
# generator_uri matches what Krikri::Activity will construct as the
|
36
36
|
# uri, given its value of #rdf_subject, in #aggregations_as_json
|
37
37
|
# See 'provenance queries' shared context.
|
38
|
-
let(:generator_uri) {
|
38
|
+
let(:generator_uri) { harvest_gen_uri }
|
39
39
|
|
40
40
|
# activity_uri is the URI of the mapping activity
|
41
|
-
let(:activity_uri) {
|
41
|
+
let(:activity_uri) { mapping_gen_uri }
|
42
42
|
|
43
43
|
let(:mapping_name) { :agent_map }
|
44
44
|
let(:opts) { { name: mapping_name, generator_uri: generator_uri } }
|
@@ -85,9 +85,10 @@ describe Krikri::Mapper::Agent do
|
|
85
85
|
|
86
86
|
context 'with mapped records returned' do
|
87
87
|
before do
|
88
|
-
expect(Krikri::Mapper)
|
89
|
-
|
90
|
-
|
88
|
+
expect(Krikri::Mapper)
|
89
|
+
.to receive(:map)
|
90
|
+
.with(mapping_name, subject.generator_activity.entities)
|
91
|
+
.and_return(generated_records)
|
91
92
|
end
|
92
93
|
|
93
94
|
it 'calls mapper' do
|
@@ -133,8 +133,6 @@ describe Krikri::QASearchIndex do
|
|
133
133
|
let(:aggregation) { build(:aggregation) }
|
134
134
|
|
135
135
|
before do
|
136
|
-
subject.delete_by_query('id:*')
|
137
|
-
subject.commit
|
138
136
|
aggregation.set_subject!('http://api.dp.la/item/123')
|
139
137
|
aggregation.provider << build(:krikri_provider, rdf_subject: 'snork')
|
140
138
|
.agent
|
@@ -142,10 +140,7 @@ describe Krikri::QASearchIndex do
|
|
142
140
|
subject.commit
|
143
141
|
end
|
144
142
|
|
145
|
-
after
|
146
|
-
subject.delete_by_query('id:*')
|
147
|
-
subject.commit
|
148
|
-
end
|
143
|
+
after { clear_search_index }
|
149
144
|
|
150
145
|
it 'posts DPLA MAP JSON to solr' do
|
151
146
|
response = solr.get('select', :params => { :q => '' })['response']
|
@@ -165,6 +160,8 @@ describe Krikri::QASearchIndex do
|
|
165
160
|
describe '#update_from_activity' do
|
166
161
|
include_context 'provenance queries'
|
167
162
|
include_context 'entities query'
|
163
|
+
|
164
|
+
after { clear_search_index }
|
168
165
|
|
169
166
|
# This is not totally realistic because we're indexing the records from a
|
170
167
|
# mapping activity, instead of an enrichment activity, but we can change
|
@@ -14,6 +14,38 @@ end
|
|
14
14
|
describe Krikri::Activity, type: :model do
|
15
15
|
subject { create(:krikri_activity) }
|
16
16
|
|
17
|
+
describe `.base_uri` do
|
18
|
+
it 'returns an RDF::URI' do
|
19
|
+
expect(described_class.base_uri).to be_a RDF::URI
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe `.from_uri` do
|
24
|
+
it 'initializes from RDF::URI' do
|
25
|
+
expect(described_class.from_uri(subject.rdf_subject)).to eq subject
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'initializes from string containing uri' do
|
29
|
+
expect(described_class.from_uri(subject.rdf_subject.to_s)).to eq subject
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'raises error for inapproprate uri' do
|
33
|
+
bad_uri = "http://example.com/nonsense/#{subject.id}"
|
34
|
+
|
35
|
+
expect { described_class.from_uri(bad_uri) }
|
36
|
+
.to raise_error "Cannot find #{described_class} from " \
|
37
|
+
"URI: #{bad_uri}; the requested uri does not match " \
|
38
|
+
"#{described_class.base_uri}"
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'raises error for wrong id' do
|
42
|
+
bad_uri = subject.rdf_subject.to_s.gsub(subject.id.to_s, '1001')
|
43
|
+
|
44
|
+
expect { described_class.from_uri(bad_uri) }
|
45
|
+
.to raise_error ActiveRecord::RecordNotFound
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
17
49
|
describe '#save' do
|
18
50
|
subject { build(:krikri_activity_with_long_opts) }
|
19
51
|
|
@@ -3,6 +3,15 @@ require 'spec_helper'
|
|
3
3
|
describe DPLA::MAP::Aggregation do
|
4
4
|
it_behaves_like 'an LDP RDFSource'
|
5
5
|
|
6
|
+
let(:empty_or) { [] }
|
7
|
+
let(:blanknode_or) { [RDF::Node.new] }
|
8
|
+
let(:empty_msg) do
|
9
|
+
"#{subject.dpla_id} has an empty originalRecord"
|
10
|
+
end
|
11
|
+
let(:blanknode_msg) do
|
12
|
+
"#{subject.dpla_id} has a blank node for its originalRecord"
|
13
|
+
end
|
14
|
+
|
6
15
|
include_context 'clear repository'
|
7
16
|
|
8
17
|
describe '#mint_uri!' do
|
@@ -24,19 +33,24 @@ describe DPLA::MAP::Aggregation do
|
|
24
33
|
end
|
25
34
|
end
|
26
35
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
36
|
+
context 'when originalRecord is empty' do
|
37
|
+
before do
|
38
|
+
allow(subject).to receive(:originalRecord).and_return(empty_or)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'raises a NameError' do
|
42
|
+
expect { subject.mint_id! }.to raise_error(NameError, empty_msg)
|
33
43
|
end
|
34
44
|
end
|
35
45
|
|
36
|
-
context '
|
37
|
-
|
38
|
-
|
39
|
-
|
46
|
+
context 'when originalRecord returns a blank node' do
|
47
|
+
before do
|
48
|
+
allow(subject).to receive(:originalRecord).and_return(blanknode_or)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'raises a NameError' do
|
52
|
+
expect { subject.mint_id! }.to raise_error(NameError, blanknode_msg)
|
53
|
+
end
|
40
54
|
end
|
41
55
|
|
42
56
|
context 'with originalRecord' do
|
@@ -58,14 +72,6 @@ describe DPLA::MAP::Aggregation do
|
|
58
72
|
.to eq RDF::URI(subject.class.base_uri) / local_name
|
59
73
|
end
|
60
74
|
|
61
|
-
context 'as a bnode' do
|
62
|
-
before do
|
63
|
-
subject.originalRecord = RDF::Node.new
|
64
|
-
end
|
65
|
-
|
66
|
-
include_examples 'random hash'
|
67
|
-
end
|
68
|
-
|
69
75
|
context 'with more than one originalRecord' do
|
70
76
|
before { subject.originalRecord << RDF::Node.new }
|
71
77
|
|
@@ -115,9 +121,22 @@ describe DPLA::MAP::Aggregation do
|
|
115
121
|
end
|
116
122
|
end
|
117
123
|
|
118
|
-
context '
|
119
|
-
|
120
|
-
|
124
|
+
context 'when originalRecord is empty' do
|
125
|
+
before do
|
126
|
+
allow(subject).to receive(:originalRecord).and_return(empty_or)
|
127
|
+
end
|
128
|
+
it 'raises a NameError' do
|
129
|
+
expect { subject.original_record }.to raise_error(NameError, empty_msg)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'when originalRecord returns a blank node' do
|
134
|
+
before do
|
135
|
+
allow(subject).to receive(:originalRecord).and_return(blanknode_or)
|
136
|
+
end
|
137
|
+
it 'raises a NameError' do
|
138
|
+
expect { subject.original_record }
|
139
|
+
.to raise_error(NameError, blanknode_msg)
|
121
140
|
end
|
122
141
|
end
|
123
142
|
end
|
@@ -21,15 +21,12 @@ describe Krikri::Provider do
|
|
21
21
|
|
22
22
|
shared_context 'indexed in Solr' do
|
23
23
|
before do
|
24
|
-
clear_search_index
|
25
24
|
indexer = Krikri::QASearchIndex.new
|
26
25
|
indexer.add agg.to_jsonld['@graph'].first
|
27
26
|
indexer.commit
|
28
27
|
end
|
29
28
|
|
30
|
-
after
|
31
|
-
clear_search_index
|
32
|
-
end
|
29
|
+
after { clear_search_index }
|
33
30
|
end
|
34
31
|
|
35
32
|
shared_context 'bnode indexed in Solr' do
|
@@ -39,11 +36,7 @@ describe Krikri::Provider do
|
|
39
36
|
indexer.commit
|
40
37
|
end
|
41
38
|
|
42
|
-
after
|
43
|
-
indexer = Krikri::QASearchIndex.new
|
44
|
-
indexer.delete_by_query(['*:*'])
|
45
|
-
indexer.commit
|
46
|
-
end
|
39
|
+
after { clear_search_index }
|
47
40
|
end
|
48
41
|
|
49
42
|
describe '#initialize' do
|
data/spec/spec_helper.rb
CHANGED
@@ -26,7 +26,7 @@ Rails.backtrace_cleaner.remove_silencers!
|
|
26
26
|
# Load support files
|
27
27
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
28
28
|
|
29
|
-
WebMock.disable_net_connect!(:allow_localhost => true)
|
29
|
+
WebMock.disable_net_connect!(:allow_localhost => true, allow: 'codeclimate.com')
|
30
30
|
|
31
31
|
RSpec.configure do |config|
|
32
32
|
config.color = true
|
@@ -62,6 +62,5 @@ RSpec.configure do |config|
|
|
62
62
|
config.after(:suite) do
|
63
63
|
clear_repository
|
64
64
|
clear_search_index
|
65
|
-
WebMock.disable_net_connect!(:allow => 'codeclimate.com')
|
66
65
|
end
|
67
66
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
shared_examples 'a software agent' do |args|
|
3
|
-
subject { described_class.new(args) }
|
3
|
+
subject { args.nil? ? described_class.new : described_class.new(args) }
|
4
4
|
let(:agent_class) { described_class }
|
5
5
|
|
6
6
|
it 'represents its agent name as the correct string, as a class' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: krikri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Audrey Altman
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-03-
|
14
|
+
date: 2016-03-17 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -608,16 +608,15 @@ files:
|
|
608
608
|
- spec/internal/config/secrets.yml
|
609
609
|
- spec/internal/config/solr.yml
|
610
610
|
- spec/internal/db/development.sqlite3
|
611
|
-
- spec/internal/db/migrate/
|
612
|
-
- spec/internal/db/migrate/
|
613
|
-
- spec/internal/db/migrate/
|
614
|
-
- spec/internal/db/migrate/
|
611
|
+
- spec/internal/db/migrate/20160226160200_devise_create_users.rb
|
612
|
+
- spec/internal/db/migrate/20160226160226_create_searches.blacklight.rb
|
613
|
+
- spec/internal/db/migrate/20160226160227_create_bookmarks.blacklight.rb
|
614
|
+
- spec/internal/db/migrate/20160226160228_add_polymorphic_type_to_bookmarks.blacklight.rb
|
615
615
|
- spec/internal/db/schema.rb
|
616
616
|
- spec/internal/db/seeds.rb
|
617
617
|
- spec/internal/db/test.sqlite3
|
618
618
|
- spec/internal/lib/generators/test_app_generator.rb
|
619
619
|
- spec/internal/log/development.log
|
620
|
-
- spec/internal/log/test.log
|
621
620
|
- spec/internal/public/404.html
|
622
621
|
- spec/internal/public/422.html
|
623
622
|
- spec/internal/public/500.html
|
@@ -753,7 +752,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
753
752
|
version: '0'
|
754
753
|
requirements: []
|
755
754
|
rubyforge_project:
|
756
|
-
rubygems_version: 2.
|
755
|
+
rubygems_version: 2.5.1
|
757
756
|
signing_key:
|
758
757
|
specification_version: 4
|
759
758
|
summary: A Rails engine for metadata aggregation, enhancement, and quality control.
|
@@ -814,10 +813,10 @@ test_files:
|
|
814
813
|
- spec/internal/config/solr.yml
|
815
814
|
- spec/internal/config.ru
|
816
815
|
- spec/internal/db/development.sqlite3
|
817
|
-
- spec/internal/db/migrate/
|
818
|
-
- spec/internal/db/migrate/
|
819
|
-
- spec/internal/db/migrate/
|
820
|
-
- spec/internal/db/migrate/
|
816
|
+
- spec/internal/db/migrate/20160226160200_devise_create_users.rb
|
817
|
+
- spec/internal/db/migrate/20160226160226_create_searches.blacklight.rb
|
818
|
+
- spec/internal/db/migrate/20160226160227_create_bookmarks.blacklight.rb
|
819
|
+
- spec/internal/db/migrate/20160226160228_add_polymorphic_type_to_bookmarks.blacklight.rb
|
821
820
|
- spec/internal/db/schema.rb
|
822
821
|
- spec/internal/db/seeds.rb
|
823
822
|
- spec/internal/db/test.sqlite3
|
@@ -825,7 +824,6 @@ test_files:
|
|
825
824
|
- spec/internal/Gemfile.lock
|
826
825
|
- spec/internal/lib/generators/test_app_generator.rb
|
827
826
|
- spec/internal/log/development.log
|
828
|
-
- spec/internal/log/test.log
|
829
827
|
- spec/internal/public/404.html
|
830
828
|
- spec/internal/public/422.html
|
831
829
|
- spec/internal/public/500.html
|
@@ -943,4 +941,3 @@ test_files:
|
|
943
941
|
- spec/views/krikri/records/index.html.erb_spec.rb
|
944
942
|
- spec/views/krikri/records/show.html.erb_spec.rb
|
945
943
|
- spec/views/krikri/reports/index.html.erb_spec.rb
|
946
|
-
has_rdoc:
|