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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/krikri/activity.rb +34 -8
  3. data/lib/generators/krikri/templates/schema.xml +1 -0
  4. data/lib/generators/krikri/templates/solrconfig.xml +1 -0
  5. data/lib/krikri/async_uri_getter.rb +27 -0
  6. data/lib/krikri/engine.rb +19 -4
  7. data/lib/krikri/enricher.rb +3 -6
  8. data/lib/krikri/entity_behavior.rb +57 -11
  9. data/lib/krikri/entity_behaviors/aggregation_entity_behavior.rb +1 -1
  10. data/lib/krikri/entity_behaviors/original_record_entity_behavior.rb +1 -1
  11. data/lib/krikri/entity_consumer.rb +40 -17
  12. data/lib/krikri/indexer.rb +7 -7
  13. data/lib/krikri/mapper.rb +23 -14
  14. data/lib/krikri/search_index.rb +4 -0
  15. data/lib/krikri/software_agent.rb +8 -4
  16. data/lib/krikri/version.rb +1 -1
  17. data/spec/internal/Gemfile +3 -3
  18. data/spec/internal/Gemfile.lock +28 -28
  19. data/spec/internal/app/assets/javascripts/application.js +1 -1
  20. data/spec/internal/config/initializers/blacklight_initializer.rb +1 -1
  21. data/spec/internal/config/initializers/devise.rb +2 -2
  22. data/spec/internal/config/secrets.yml +2 -2
  23. data/spec/internal/db/development.sqlite3 +0 -0
  24. data/spec/internal/db/migrate/{20160304151204_devise_create_users.rb → 20160226160200_devise_create_users.rb} +0 -0
  25. data/spec/internal/db/migrate/{20160304151247_create_searches.blacklight.rb → 20160226160226_create_searches.blacklight.rb} +0 -0
  26. data/spec/internal/db/migrate/{20160304151248_create_bookmarks.blacklight.rb → 20160226160227_create_bookmarks.blacklight.rb} +0 -0
  27. data/spec/internal/db/migrate/{20160304151249_add_polymorphic_type_to_bookmarks.blacklight.rb → 20160226160228_add_polymorphic_type_to_bookmarks.blacklight.rb} +0 -0
  28. data/spec/internal/db/schema.rb +1 -1
  29. data/spec/internal/db/test.sqlite3 +0 -0
  30. data/spec/internal/log/development.log +92 -92
  31. data/spec/lib/krikri/async_uri_getter_spec.rb +31 -7
  32. data/spec/lib/krikri/entity_consumer_spec.rb +37 -7
  33. data/spec/lib/krikri/harvester_spec.rb +7 -3
  34. data/spec/lib/krikri/indexer_spec.rb +7 -4
  35. data/spec/lib/krikri/mapper_agent_spec.rb +10 -9
  36. data/spec/lib/krikri/search_index_spec.rb +3 -6
  37. data/spec/models/activity_spec.rb +32 -0
  38. data/spec/models/dpla/map/aggregation_spec.rb +40 -21
  39. data/spec/models/provider_spec.rb +2 -9
  40. data/spec/spec_helper.rb +1 -2
  41. data/spec/support/shared_contexts/indexed_item.rb +1 -3
  42. data/spec/support/shared_examples/software_agent.rb +1 -1
  43. metadata +11 -14
  44. data/lib/generators/krikri/templates/schema.xml +0 -767
  45. data/lib/generators/krikri/templates/solrconfig.xml +0 -160
  46. 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
- harvest_gen_uri_str = 'http://example.org/ldp/activity/2'
11
- mapping_gen_uri_str = 'http://example.org/ldp/activity/3'
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: harvest_gen_uri_str} }
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: harvest_gen_uri_str}
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) { harvest_gen_uri_str }
38
+ let(:generator_uri) { harvest_gen_uri }
39
39
 
40
40
  # activity_uri is the URI of the mapping activity
41
- let(:activity_uri) { mapping_gen_uri_str }
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).to receive(:map)
89
- .with(mapping_name, subject.generator_activity.entities)
90
- .and_return(generated_records)
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 do
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
- shared_examples 'random hash' do
28
- it 'mints random hash' do
29
- expect(SecureRandom).to receive(:hex).and_return('abcd1234')
30
- subject.mint_id!
31
- expect(subject.rdf_subject)
32
- .to eq RDF::URI(subject.class.base_uri) / 'abcd1234'
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 'without originalRecord' do
37
- include_examples 'sets to seed'
38
- include_examples 'random hash'
39
- include_examples 'sets fragment URI for sourceResource'
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 'without original record' do
119
- it 'raises an error' do
120
- expect { subject.original_record }.to raise_error NameError
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 do
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 do
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
@@ -8,9 +8,7 @@ shared_context 'with indexed item' do
8
8
  indexer.commit
9
9
  end
10
10
 
11
- after do
12
- clear_search_index
13
- end
11
+ after { clear_search_index }
14
12
 
15
13
  let(:records) { [agg] }
16
14
 
@@ -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.0
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-07 00:00:00.000000000 Z
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/20160304151204_devise_create_users.rb
612
- - spec/internal/db/migrate/20160304151247_create_searches.blacklight.rb
613
- - spec/internal/db/migrate/20160304151248_create_bookmarks.blacklight.rb
614
- - spec/internal/db/migrate/20160304151249_add_polymorphic_type_to_bookmarks.blacklight.rb
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.2.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/20160304151204_devise_create_users.rb
818
- - spec/internal/db/migrate/20160304151247_create_searches.blacklight.rb
819
- - spec/internal/db/migrate/20160304151248_create_bookmarks.blacklight.rb
820
- - spec/internal/db/migrate/20160304151249_add_polymorphic_type_to_bookmarks.blacklight.rb
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: