krikri 0.12.0 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
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: