active-fedora 12.0.3 → 12.1.0

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -7
  3. data/.rubocop_todo.yml +10 -100
  4. data/.travis.yml +21 -0
  5. data/CODE_OF_CONDUCT.md +36 -0
  6. data/CONTRIBUTING.md +23 -21
  7. data/Gemfile +1 -2
  8. data/History.txt +29 -29
  9. data/LICENSE +16 -14
  10. data/README.md +40 -29
  11. data/SUPPORT.md +5 -0
  12. data/active-fedora.gemspec +7 -7
  13. data/lib/active_fedora.rb +1 -1
  14. data/lib/active_fedora/aggregation/list_source.rb +3 -2
  15. data/lib/active_fedora/associations/builder/collection_association.rb +1 -0
  16. data/lib/active_fedora/associations/collection_association.rb +3 -0
  17. data/lib/active_fedora/associations/collection_proxy.rb +2 -0
  18. data/lib/active_fedora/associations/directly_contains_one_association.rb +1 -0
  19. data/lib/active_fedora/associations/indirectly_contains_association.rb +2 -0
  20. data/lib/active_fedora/associations/singular_association.rb +1 -0
  21. data/lib/active_fedora/attribute_methods.rb +1 -1
  22. data/lib/active_fedora/attribute_methods/read.rb +1 -1
  23. data/lib/active_fedora/attribute_methods/write.rb +1 -1
  24. data/lib/active_fedora/attributes.rb +1 -1
  25. data/lib/active_fedora/attributes/property_builder.rb +1 -0
  26. data/lib/active_fedora/callbacks.rb +7 -2
  27. data/lib/active_fedora/fedora.rb +8 -0
  28. data/lib/active_fedora/file.rb +7 -5
  29. data/lib/active_fedora/indexing/descendant_fetcher.rb +1 -1
  30. data/lib/active_fedora/indexing/field_mapper.rb +2 -0
  31. data/lib/active_fedora/indexing/suffix.rb +3 -1
  32. data/lib/active_fedora/inheritable_accessors.rb +1 -0
  33. data/lib/active_fedora/loadable_from_json.rb +1 -0
  34. data/lib/active_fedora/nested_attributes.rb +1 -0
  35. data/lib/active_fedora/persistence.rb +14 -1
  36. data/lib/active_fedora/persistence/null_identifier_service.rb +11 -0
  37. data/lib/active_fedora/reflection.rb +1 -1
  38. data/lib/active_fedora/relation.rb +14 -0
  39. data/lib/active_fedora/relation/delegation.rb +2 -1
  40. data/lib/active_fedora/relation/finder_methods.rb +1 -0
  41. data/lib/active_fedora/relation/merger.rb +1 -0
  42. data/lib/active_fedora/validations.rb +7 -0
  43. data/lib/active_fedora/version.rb +1 -1
  44. data/lib/active_fedora/with_metadata.rb +1 -0
  45. data/lib/active_fedora/with_metadata/metadata_node.rb +2 -1
  46. data/lib/generators/active_fedora/config/solr/templates/solr/config/schema.xml +64 -51
  47. data/lib/generators/active_fedora/config/solr/templates/solr/config/solrconfig.xml +4 -1
  48. data/lib/generators/active_fedora/model/templates/datastream.rb.erb +1 -1
  49. data/spec/integration/file_spec.rb +1 -1
  50. data/spec/integration/relation_spec.rb +43 -0
  51. data/spec/spec_helper.rb +11 -9
  52. data/spec/support/an_active_model.rb +4 -0
  53. data/spec/unit/callback_spec.rb +8 -1
  54. data/spec/unit/file_spec.rb +0 -17
  55. data/spec/unit/validations_spec.rb +18 -0
  56. metadata +28 -25
  57. data/.circleci/config.yml +0 -47
@@ -284,6 +284,8 @@
284
284
  -->
285
285
  </searchComponent>
286
286
 
287
+ <!-- suggest searchComponent and requestHandler disabled by default due to performance penalties -->
288
+ <!--
287
289
  <searchComponent name="suggest" class="solr.SuggestComponent">
288
290
  <lst name="suggester">
289
291
  <str name="name">mySuggester</str>
@@ -304,7 +306,8 @@
304
306
  <str>suggest</str>
305
307
  </arr>
306
308
  </requestHandler>
307
-
309
+ -->
310
+
308
311
  <requestHandler name="/update/extract" class="org.apache.solr.handler.extraction.ExtractingRequestHandler">
309
312
  <lst name="defaults">
310
313
  <str name="fmap.Last-Modified">last_modified</str>
@@ -3,7 +3,7 @@
3
3
  class <%= class_name %>Metadata < ActiveFedora::OmDatastream
4
4
 
5
5
  # Define a terminology for parsing this XML document
6
- # See: https://github.com/projecthydra/om/wiki/Tame-your-XML-with-OM
6
+ # See: https://github.com/samvera/om/wiki/Tame-your-XML-with-OM
7
7
  #
8
8
  # set_terminology do |t|
9
9
  # t.root(path: "fields")
@@ -74,7 +74,7 @@ describe ActiveFedora::File do
74
74
 
75
75
  describe "changed attributes are set" do
76
76
  it "marks profile as changed" do
77
- expect_any_instance_of(SampleResource).to receive(:attribute_will_change!).with(:profile)
77
+ expect_any_instance_of(SampleResource).to receive(:attribute_will_change!).with(:ldp_source)
78
78
  test_object
79
79
  end
80
80
  end
@@ -22,6 +22,10 @@ describe ActiveFedora::Base do
22
22
  end
23
23
 
24
24
  it { is_expected.to respond_to(:each_with_index) }
25
+ it { expect(libraries.any?).to eq false }
26
+ it { is_expected.to be_blank }
27
+ it { is_expected.to be_empty }
28
+ it { is_expected.not_to be_present }
25
29
 
26
30
  context "when some records exist" do
27
31
  before do
@@ -41,6 +45,45 @@ describe ActiveFedora::Base do
41
45
  expect_any_instance_of(ActiveFedora::Relation).to_not receive :find_each
42
46
  libraries[0]
43
47
  end
48
+
49
+ it "does not reload" do
50
+ expect_any_instance_of(ActiveFedora::Relation).to_not receive :find_each
51
+ libraries.each { |l| l.id }
52
+ end
53
+ end
54
+
55
+ it { expect(libraries.any?).to eq true }
56
+ it { is_expected.not_to be_blank }
57
+ it { is_expected.not_to be_empty }
58
+ it { is_expected.to be_present }
59
+
60
+ describe '#each' do
61
+ before { Book.create }
62
+
63
+ it 'returns an enumerator' do
64
+ expect(libraries.each).to be_a Enumerator
65
+ end
66
+
67
+ it 'yields the items' do
68
+ expect { |b| libraries.each(&b) }
69
+ .to yield_successive_args(*Library.all.to_a)
70
+ end
71
+
72
+ it 'when called from Base yields all items' do
73
+ expect { |b| ActiveFedora::Base.all.each(&b) }
74
+ .to yield_successive_args(*(Library.all.to_a + Book.all.to_a))
75
+ end
76
+
77
+ context 'when cached' do
78
+ it 'returns an enumerator' do
79
+ expect(libraries.each).to be_a Enumerator
80
+ end
81
+
82
+ it 'yields the items' do
83
+ expect { |b| libraries.each(&b) }
84
+ .to yield_successive_args(*Library.all.to_a)
85
+ end
86
+ end
44
87
  end
45
88
 
46
89
  describe "#find" do
@@ -1,10 +1,17 @@
1
- ENV["environment"] ||= 'test'
2
- require "bundler/setup"
1
+ ENV["environment"] ||= "test"
3
2
 
3
+ require "bundler/setup"
4
4
  require 'simplecov'
5
5
  require 'coveralls'
6
6
 
7
- SimpleCov.start do
7
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
8
+ [
9
+ SimpleCov::Formatter::HTMLFormatter,
10
+ Coveralls::SimpleCov::Formatter
11
+ ]
12
+ )
13
+
14
+ SimpleCov.start "rails" do
8
15
  add_filter "/spec/"
9
16
  end
10
17
 
@@ -13,15 +20,10 @@ require 'rspec'
13
20
  require 'rspec/its'
14
21
  require 'equivalent-xml/rspec_matchers'
15
22
  require 'logger'
16
- require 'pry' unless ENV['CI']
23
+ require 'pry' unless ENV['TRAVIS']
17
24
 
18
25
  ActiveFedora::Base.logger = Logger.new(STDERR)
19
26
  ActiveFedora::Base.logger.level = Logger::WARN
20
- # require 'http_logger'
21
- # HttpLogger.logger = Logger.new(STDOUT)
22
- # HttpLogger.ignore = [/localhost:8983\/solr/]
23
- # HttpLogger.colorize = false
24
- # HttpLogger.log_headers = true
25
27
 
26
28
  Dir[File.expand_path("../support/**/*.rb", __FILE__)].each { |f| require f }
27
29
 
@@ -11,6 +11,10 @@ shared_examples_for "An ActiveModel" do
11
11
  expect(one).to eq the_other
12
12
  end
13
13
 
14
+ def assert_respond_to(obj, meth, _msg = nil)
15
+ expect(obj).to respond_to meth
16
+ end
17
+
14
18
  include ActiveModel::Lint::Tests
15
19
 
16
20
  ActiveModel::Lint::Tests.public_instance_methods.map(&:to_s).grep(/^test/).each do |m|
@@ -12,6 +12,9 @@ describe ActiveFedora::Base do
12
12
  after_update :a_update
13
13
  after_find :a_find
14
14
 
15
+ after_update_index :a_update_index
16
+ before_update_index :b_update_index
17
+
15
18
  before_destroy :do_stuff
16
19
 
17
20
  def do_stuff
@@ -24,12 +27,14 @@ describe ActiveFedora::Base do
24
27
  Object.send(:remove_const, :CallbackStub)
25
28
  end
26
29
 
27
- it "has after_initialize, before_save, after_save, before_create, after_create" do
30
+ it "has after_initialize, before_save, after_save, before_create, after_create, after_update_index, before_update_index" do
28
31
  allow_any_instance_of(CallbackStub).to receive(:a_init)
29
32
  allow_any_instance_of(CallbackStub).to receive :b_create
30
33
  allow_any_instance_of(CallbackStub).to receive :a_create
31
34
  allow_any_instance_of(CallbackStub).to receive(:b_save)
32
35
  allow_any_instance_of(CallbackStub).to receive(:a_save)
36
+ allow_any_instance_of(CallbackStub).to receive(:a_update_index)
37
+ allow_any_instance_of(CallbackStub).to receive(:b_update_index)
33
38
  @cb = CallbackStub.new
34
39
  @cb.save
35
40
  end
@@ -40,6 +45,8 @@ describe ActiveFedora::Base do
40
45
  allow_any_instance_of(CallbackStub).to receive(:a_create)
41
46
  allow_any_instance_of(CallbackStub).to receive(:b_save)
42
47
  allow_any_instance_of(CallbackStub).to receive(:a_save)
48
+ allow_any_instance_of(CallbackStub).to receive(:a_update_index)
49
+ allow_any_instance_of(CallbackStub).to receive(:b_update_index)
43
50
  @cb = CallbackStub.new
44
51
  @cb.save
45
52
  allow_any_instance_of(CallbackStub).to receive(:a_init)
@@ -192,23 +192,6 @@ describe ActiveFedora::File do
192
192
  end
193
193
  end
194
194
 
195
- context 'when file is new and content behaves like io' do
196
- let(:file_content) { "hello world" }
197
-
198
- before do
199
- af_file.uri = "http://localhost:8983/fedora/rest/test/1234/abcd"
200
- af_file.content = StringIO.new(file_content)
201
- allow(af_file).to receive(:new_record?).and_return(true)
202
- end
203
-
204
- describe "#content" do
205
- it 'can be re-read' do
206
- expect(af_file.content.read).to eq file_content
207
- expect(af_file.content.read).to eq file_content
208
- end
209
- end
210
- end
211
-
212
195
  describe "#mime_type" do
213
196
  let(:parent) { ActiveFedora::Base.create }
214
197
  before do
@@ -8,6 +8,16 @@ describe ActiveFedora::Base do
8
8
 
9
9
  validates_presence_of :fubar
10
10
  validates_length_of :swank, minimum: 5
11
+
12
+ before_validation :before_validation_callback
13
+ after_validation :after_validation_callback
14
+
15
+ def before_validation_callback
16
+ # no-op
17
+ end
18
+ def after_validation_callback
19
+ # no-op
20
+ end
11
21
  end
12
22
  end
13
23
 
@@ -71,4 +81,12 @@ describe ActiveFedora::Base do
71
81
  end
72
82
  end
73
83
  end
84
+
85
+ describe 'validation callbacks' do
86
+ it 'calls callbacks' do
87
+ expect(validation_stub).to receive(:before_validation_callback)
88
+ expect(validation_stub).to receive(:after_validation_callback)
89
+ validation_stub.validate
90
+ end
91
+ end
74
92
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-fedora
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.0.3
4
+ version: 12.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zumwalt
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-01-24 00:00:00.000000000 Z
13
+ date: 2019-02-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rsolr
@@ -61,7 +61,7 @@ dependencies:
61
61
  version: 4.2.4
62
62
  - - "<"
63
63
  - !ruby/object:Gem::Version
64
- version: '5.2'
64
+ version: '5.3'
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,27 +71,27 @@ dependencies:
71
71
  version: 4.2.4
72
72
  - - "<"
73
73
  - !ruby/object:Gem::Version
74
- version: '5.2'
74
+ version: '5.3'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: activemodel
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '4.2'
81
+ version: 4.2.10
82
82
  - - "<"
83
83
  - !ruby/object:Gem::Version
84
- version: '5.2'
84
+ version: '5.3'
85
85
  type: :runtime
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - ">="
90
90
  - !ruby/object:Gem::Version
91
- version: '4.2'
91
+ version: 4.2.10
92
92
  - - "<"
93
93
  - !ruby/object:Gem::Version
94
- version: '5.2'
94
+ version: '5.3'
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: active-triples
97
97
  requirement: !ruby/object:Gem::Requirement
@@ -130,16 +130,22 @@ dependencies:
130
130
  name: ldp
131
131
  requirement: !ruby/object:Gem::Requirement
132
132
  requirements:
133
- - - "~>"
133
+ - - ">="
134
134
  - !ruby/object:Gem::Version
135
135
  version: 0.7.0
136
+ - - "<"
137
+ - !ruby/object:Gem::Version
138
+ version: '2'
136
139
  type: :runtime
137
140
  prerelease: false
138
141
  version_requirements: !ruby/object:Gem::Requirement
139
142
  requirements:
140
- - - "~>"
143
+ - - ">="
141
144
  - !ruby/object:Gem::Version
142
145
  version: 0.7.0
146
+ - - "<"
147
+ - !ruby/object:Gem::Version
148
+ version: '2'
143
149
  - !ruby/object:Gem::Dependency
144
150
  name: ruby-progressbar
145
151
  requirement: !ruby/object:Gem::Requirement
@@ -160,14 +166,14 @@ dependencies:
160
166
  requirements:
161
167
  - - "~>"
162
168
  - !ruby/object:Gem::Version
163
- version: 0.12.1
169
+ version: '0.12'
164
170
  type: :runtime
165
171
  prerelease: false
166
172
  version_requirements: !ruby/object:Gem::Requirement
167
173
  requirements:
168
174
  - - "~>"
169
175
  - !ruby/object:Gem::Version
170
- version: 0.12.1
176
+ version: '0.12'
171
177
  - !ruby/object:Gem::Dependency
172
178
  name: faraday-encoding
173
179
  requirement: !ruby/object:Gem::Requirement
@@ -188,20 +194,14 @@ dependencies:
188
194
  requirements:
189
195
  - - ">="
190
196
  - !ruby/object:Gem::Version
191
- version: '4.2'
192
- - - "<"
193
- - !ruby/object:Gem::Version
194
- version: '5.2'
197
+ version: '0'
195
198
  type: :development
196
199
  prerelease: false
197
200
  version_requirements: !ruby/object:Gem::Requirement
198
201
  requirements:
199
202
  - - ">="
200
203
  - !ruby/object:Gem::Version
201
- version: '4.2'
202
- - - "<"
203
- - !ruby/object:Gem::Version
204
- version: '5.2'
204
+ version: '0'
205
205
  - !ruby/object:Gem::Dependency
206
206
  name: rdoc
207
207
  requirement: !ruby/object:Gem::Requirement
@@ -334,14 +334,14 @@ dependencies:
334
334
  requirements:
335
335
  - - "~>"
336
336
  - !ruby/object:Gem::Version
337
- version: 0.47.1
337
+ version: 0.56.0
338
338
  type: :development
339
339
  prerelease: false
340
340
  version_requirements: !ruby/object:Gem::Requirement
341
341
  requirements:
342
342
  - - "~>"
343
343
  - !ruby/object:Gem::Version
344
- version: 0.47.1
344
+ version: 0.56.0
345
345
  - !ruby/object:Gem::Dependency
346
346
  name: rubocop-rspec
347
347
  requirement: !ruby/object:Gem::Requirement
@@ -366,7 +366,6 @@ extra_rdoc_files:
366
366
  - LICENSE
367
367
  - README.md
368
368
  files:
369
- - ".circleci/config.yml"
370
369
  - ".gitignore"
371
370
  - ".gitmodules"
372
371
  - ".mailmap"
@@ -374,6 +373,8 @@ files:
374
373
  - ".rubocop.yml"
375
374
  - ".rubocop_todo.yml"
376
375
  - ".solr_wrapper"
376
+ - ".travis.yml"
377
+ - CODE_OF_CONDUCT.md
377
378
  - CONTRIBUTING.md
378
379
  - CONTRIBUTORS.md
379
380
  - Gemfile
@@ -381,6 +382,7 @@ files:
381
382
  - LICENSE
382
383
  - README.md
383
384
  - Rakefile
385
+ - SUPPORT.md
384
386
  - active-fedora.gemspec
385
387
  - config/fedora.yml
386
388
  - config/service_mappings.yml
@@ -512,6 +514,7 @@ files:
512
514
  - lib/active_fedora/orders/target_proxy.rb
513
515
  - lib/active_fedora/pathing.rb
514
516
  - lib/active_fedora/persistence.rb
517
+ - lib/active_fedora/persistence/null_identifier_service.rb
515
518
  - lib/active_fedora/property.rb
516
519
  - lib/active_fedora/query_result_builder.rb
517
520
  - lib/active_fedora/querying.rb
@@ -730,7 +733,7 @@ files:
730
733
  - spec/unit/validations_spec.rb
731
734
  - spec/unit/with_metadata/default_metadata_class_factory_spec.rb
732
735
  - spec/unit/with_metadata/metadata_node_spec.rb
733
- homepage: https://github.com/projecthydra/active_fedora
736
+ homepage: https://github.com/samvera/active_fedora
734
737
  licenses:
735
738
  - Apache-2.0
736
739
  metadata: {}
@@ -749,7 +752,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
749
752
  - !ruby/object:Gem::Version
750
753
  version: '0'
751
754
  requirements: []
752
- rubygems_version: 3.0.3
755
+ rubygems_version: 3.0.1
753
756
  signing_key:
754
757
  specification_version: 4
755
758
  summary: A convenience libary for manipulating documents in the Fedora Repository.
@@ -1,47 +0,0 @@
1
- version: 2.1
2
- orbs:
3
- samvera: samvera/circleci-orb@0
4
- jobs:
5
- bundle_lint_test:
6
- parameters:
7
- ruby_version:
8
- type: string
9
- bundler_version:
10
- type: string
11
- default: 1.17.3
12
- rails_version:
13
- type: string
14
- solr_config_path:
15
- type: string
16
- default: lib/generators/active_fedora/config/solr/templates/solr/config
17
- executor:
18
- name: 'samvera/ruby_fcrepo_solr'
19
- ruby_version: << parameters.ruby_version >>
20
- environment:
21
- RAILS_VERSION: << parameters.rails_version >>
22
- steps:
23
- - samvera/cached_checkout
24
-
25
- - samvera/bundle_for_gem:
26
- ruby_version: << parameters.ruby_version >>
27
- bundler_version: << parameters.bundler_version >>
28
- project: 'active-fedora'
29
-
30
- - samvera/install_solr_core:
31
- solr_config_path: << parameters.solr_config_path >>
32
-
33
- - samvera/rubocop
34
-
35
- - samvera/parallel_rspec
36
-
37
- workflows:
38
- ci:
39
- jobs:
40
- - bundle_lint_test:
41
- name: ruby2-5_rails5-1
42
- ruby_version: 2.5.7
43
- rails_version: 5.1.7
44
- - bundle_lint_test:
45
- name: ruby2-5_rails4-2
46
- ruby_version: 2.5.7
47
- rails_version: 4.2.8