active-fedora 9.10.0.pre2 → 9.10.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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/History.txt +141 -0
  4. data/lib/active_fedora/associations/association.rb +38 -12
  5. data/lib/active_fedora/associations/association_scope.rb +6 -2
  6. data/lib/active_fedora/associations/basic_contains_association.rb +2 -3
  7. data/lib/active_fedora/associations/belongs_to_association.rb +23 -4
  8. data/lib/active_fedora/associations/builder/association.rb +37 -56
  9. data/lib/active_fedora/associations/builder/belongs_to.rb +27 -1
  10. data/lib/active_fedora/associations/builder/collection_association.rb +33 -2
  11. data/lib/active_fedora/associations/builder/contains.rb +3 -3
  12. data/lib/active_fedora/associations/builder/directly_contains.rb +1 -7
  13. data/lib/active_fedora/associations/builder/directly_contains_one.rb +20 -17
  14. data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +1 -1
  15. data/lib/active_fedora/associations/builder/has_many.rb +2 -43
  16. data/lib/active_fedora/associations/builder/indirectly_contains.rb +1 -7
  17. data/lib/active_fedora/associations/builder/property.rb +2 -13
  18. data/lib/active_fedora/associations/builder/singular_association.rb +2 -6
  19. data/lib/active_fedora/associations/builder/singular_property.rb +2 -3
  20. data/lib/active_fedora/associations/collection_association.rb +6 -14
  21. data/lib/active_fedora/associations/directly_contains_one_association.rb +1 -2
  22. data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +1 -1
  23. data/lib/active_fedora/associations/has_many_association.rb +23 -0
  24. data/lib/active_fedora/attached_files.rb +1 -1
  25. data/lib/active_fedora/core.rb +2 -1
  26. data/lib/active_fedora/errors.rb +13 -0
  27. data/lib/active_fedora/file.rb +16 -1
  28. data/lib/active_fedora/file/attributes.rb +6 -6
  29. data/lib/active_fedora/reflection.rb +200 -76
  30. data/lib/active_fedora/version.rb +1 -1
  31. data/lib/active_fedora/with_metadata/metadata_node.rb +2 -1
  32. data/lib/generators/active_fedora/config/fedora/fedora_generator.rb +4 -0
  33. data/lib/generators/active_fedora/config/fedora/templates/.fcrepo_wrapper +3 -0
  34. data/lib/generators/active_fedora/config/solr/solr_generator.rb +4 -0
  35. data/lib/generators/active_fedora/config/solr/templates/.solr_wrapper +5 -0
  36. data/spec/integration/attached_files_spec.rb +4 -4
  37. data/spec/integration/file_spec.rb +1 -1
  38. data/spec/integration/om_datastream_spec.rb +6 -6
  39. data/spec/unit/collection_proxy_spec.rb +1 -1
  40. data/spec/unit/file_spec.rb +19 -0
  41. data/spec/unit/has_and_belongs_to_many_association_spec.rb +4 -4
  42. data/spec/unit/has_many_association_spec.rb +2 -2
  43. data/spec/unit/reflection_spec.rb +2 -2
  44. metadata +6 -4
@@ -1,3 +1,3 @@
1
1
  module ActiveFedora
2
- VERSION = "9.10.0.pre2".freeze
2
+ VERSION = "9.10.0".freeze
3
3
  end
@@ -2,6 +2,7 @@ module ActiveFedora
2
2
  module WithMetadata
3
3
  class MetadataNode < ActiveTriples::Resource
4
4
  include ActiveModel::Dirty
5
+ property :mime_type, predicate: ::RDF::URI("http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#hasMimeType")
5
6
  attr_reader :file
6
7
 
7
8
  def initialize(file)
@@ -45,7 +46,7 @@ module ActiveFedora
45
46
 
46
47
  def changed_attributes
47
48
  super.tap do |changed|
48
- changed['type'] = true if type.present?
49
+ changed['type'] = true if type.present? && new_record?
49
50
  end
50
51
  end
51
52
 
@@ -7,5 +7,9 @@ module ActiveFedora
7
7
  def generate
8
8
  copy_file('fedora.yml', 'config/fedora.yml')
9
9
  end
10
+
11
+ def fcrepo_wrapper_config
12
+ copy_file '.fcrepo_wrapper', '.fcrepo_wrapper'
13
+ end
10
14
  end
11
15
  end
@@ -0,0 +1,3 @@
1
+ # Place any default configuration for solr_wrapper here
2
+ port: 8984
3
+ enable_jms: false
@@ -9,5 +9,9 @@ module ActiveFedora
9
9
  copy_file 'solr.yml', 'config/solr.yml', force: true
10
10
  directory 'solr', 'solr'
11
11
  end
12
+
13
+ def solr_wrapper_config
14
+ copy_file '.solr_wrapper', '.solr_wrapper'
15
+ end
12
16
  end
13
17
  end
@@ -0,0 +1,5 @@
1
+ # Place any default configuration for solr_wrapper here
2
+ # port: 8983
3
+ collection:
4
+ dir: solr/config/
5
+ name: hydra-development
@@ -63,13 +63,13 @@ describe ActiveFedora::AttachedFiles do
63
63
 
64
64
  it "creates datastreams from the spec on new objects" do
65
65
  has_file.file_ds.content = "blah blah blah"
66
- expect(has_file.file_ds).to be_changed
67
- expect(has_file.file_ds2).to_not be_changed # no autocreate
66
+ expect(has_file.file_ds).to be_content_changed
67
+ expect(has_file.file_ds2).to_not be_content_changed # no autocreate
68
68
  expect(has_file.file_ds2).to be_new_record
69
69
  has_file.save
70
70
  has_file.reload
71
- expect(has_file.file_ds).to_not be_changed
72
- expect(has_file.file_ds2).to_not be_changed # no autocreate
71
+ expect(has_file.file_ds).to_not be_content_changed
72
+ expect(has_file.file_ds2).to_not be_content_changed # no autocreate
73
73
  expect(has_file.file_ds2).to be_new_record
74
74
  end
75
75
  end
@@ -109,7 +109,7 @@ describe ActiveFedora::File do
109
109
  end
110
110
 
111
111
  it "is not changed" do
112
- expect(test_object.attached_files[path]).to_not be_changed
112
+ expect(test_object.attached_files[path]).to_not be_content_changed
113
113
  end
114
114
 
115
115
  it "is able to read the content from fedora" do
@@ -30,15 +30,15 @@ describe ActiveFedora::OmDatastream do
30
30
  end
31
31
  it "does not be changed if the new xml matches the old xml" do
32
32
  subject.content = subject.content
33
- expect(subject).to_not be_changed
33
+ expect(subject).to_not be_content_changed
34
34
  end
35
35
 
36
36
  it "is changed if there are minor differences in whitespace" do
37
37
  subject.content = "<a><b>1</b></a>"
38
38
  obj.save
39
- expect(subject).to_not be_changed
39
+ expect(subject).to_not be_content_changed
40
40
  subject.content = "<a>\n<b>1</b>\n</a>"
41
- expect(subject).to be_changed
41
+ expect(subject).to be_content_changed
42
42
  end
43
43
  end
44
44
 
@@ -56,11 +56,11 @@ describe ActiveFedora::OmDatastream do
56
56
  obj.reload
57
57
  end
58
58
 
59
- it "does not be dirty after .update_values is saved" do
59
+ it "is not dirty after .update_values is saved" do
60
60
  obj.descMetadata.update_values([{ name: 0 }, { role: 0 }, :text] => "Funder")
61
- expect(obj.descMetadata).to be_changed
61
+ expect(obj.descMetadata).to be_content_changed
62
62
  obj.save
63
- expect(obj.descMetadata).to_not be_changed
63
+ expect(obj.descMetadata).to_not be_content_changed
64
64
  expect(obj.descMetadata.term_values({ name: 0 }, { role: 0 }, :text)).to eq ["Funder"]
65
65
  end
66
66
  end
@@ -14,7 +14,7 @@ describe ActiveFedora::Associations::CollectionProxy do
14
14
  end
15
15
 
16
16
  describe "#spawn" do
17
- let(:reflection) { Book.create_reflection(:has_many, :pages, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection }, Book) }
17
+ let(:reflection) { ActiveFedora::Reflection.create(:has_many, :pages, nil, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection }, Book) }
18
18
  let(:association) { ActiveFedora::Associations::HasManyAssociation.new(Book.new, reflection) }
19
19
  let(:proxy) { described_class.new(association) }
20
20
 
@@ -185,6 +185,25 @@ describe ActiveFedora::File do
185
185
  end
186
186
  end
187
187
 
188
+ describe "#mime_type" do
189
+ let(:parent) { ActiveFedora::Base.create }
190
+ before do
191
+ parent.add_file('banana', path: 'apple', mime_type: 'video/webm')
192
+ parent.save!
193
+ end
194
+ it "persists" do
195
+ expect(parent.reload.apple.mime_type).to eq "video/webm"
196
+ end
197
+ it "can be updated" do
198
+ parent.reload
199
+ parent.apple.mime_type = "text/awesome"
200
+ expect(parent.apple.mime_type).to eq "text/awesome"
201
+ parent.save
202
+
203
+ expect(parent.reload.apple.mime_type).to eq "text/awesome"
204
+ end
205
+ end
206
+
188
207
  context "original_name" do
189
208
  subject { file.original_name }
190
209
 
@@ -23,7 +23,7 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
23
23
  context "a one way relationship " do
24
24
  describe "adding memeber" do
25
25
  it "sets the relationship attribute" do
26
- reflection = Book.create_reflection(:has_and_belongs_to_many, :pages, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection }, Book)
26
+ reflection = ActiveFedora::Reflection.create(:has_and_belongs_to_many, :pages, nil, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection }, Book)
27
27
  allow(ActiveFedora::SolrService).to receive(:query).and_return([])
28
28
  ac = described_class.new(subject, reflection)
29
29
  expect(ac).to receive(:callback).twice
@@ -41,7 +41,7 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
41
41
 
42
42
  describe "finding member" do
43
43
  let(:ids) { (0..15).map(&:to_s) }
44
- let(:reflection) { Book.create_reflection(:has_and_belongs_to_many, :pages, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection }, Book) }
44
+ let(:reflection) { ActiveFedora::Reflection.create(:has_and_belongs_to_many, :pages, nil, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection }, Book) }
45
45
  let(:association) { described_class.new(subject, reflection) }
46
46
  it "calls ActiveFedora::Base.find" do
47
47
  expect(subject).to receive(:[]).with('page_ids').and_return(ids)
@@ -59,8 +59,8 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
59
59
  end
60
60
 
61
61
  context "with an inverse reflection" do
62
- let!(:inverse) { Page.create_reflection(:has_and_belongs_to_many, :books, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection }, Page) }
63
- let(:reflection) { Book.create_reflection(:has_and_belongs_to_many, :pages, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasCollectionMember, inverse_of: 'books' }, Book) }
62
+ let!(:inverse) { ActiveFedora::Reflection.create(:has_and_belongs_to_many, :books, nil, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection }, Page) }
63
+ let(:reflection) { ActiveFedora::Reflection.create(:has_and_belongs_to_many, :pages, nil, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasCollectionMember, inverse_of: 'books' }, Book) }
64
64
  let(:ac) { described_class.new(subject, reflection) }
65
65
  let(:object) { Page.new }
66
66
 
@@ -22,7 +22,7 @@ describe ActiveFedora::Associations::HasManyAssociation do
22
22
  allow(ActiveFedora::SolrService).to receive(:query).and_return([])
23
23
  end
24
24
 
25
- let(:reflection) { Book.create_reflection(:has_many, 'pages', { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf }, Book) }
25
+ let(:reflection) { ActiveFedora::Reflection.create(:has_many, 'pages', nil, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf }, Book) }
26
26
  let(:association) { described_class.new(book, reflection) }
27
27
 
28
28
  it "sets the book_id attribute" do
@@ -38,7 +38,7 @@ describe ActiveFedora::Associations::HasManyAssociation do
38
38
  Page.has_many :books, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'ActiveFedora::Base'
39
39
  Page.has_and_belongs_to_many :contents, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'ActiveFedora::Base'
40
40
  end
41
- let(:book_reflection) { Book.create_reflection(:has_many, 'pages', { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf }, Book) }
41
+ let(:book_reflection) { ActiveFedora::Reflection.create(:has_many, 'pages', nil, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf }, Book) }
42
42
  let(:association) { described_class.new(book, book_reflection) }
43
43
 
44
44
  subject { association.send(:find_polymorphic_inverse, page) }
@@ -5,7 +5,7 @@ describe ActiveFedora::Reflection::AssociationReflection do
5
5
  let(:name) { 'dummy' }
6
6
  let(:options) { { inverse_of: :default_permissions } }
7
7
  let(:active_fedora) { double }
8
- let(:instance) { described_class.new(macro, name, options, active_fedora) }
8
+ let(:instance) { described_class.new(macro, name, nil, options, active_fedora) }
9
9
  subject { instance.send :derive_foreign_key }
10
10
 
11
11
  context "when a has_many" do
@@ -30,7 +30,7 @@ describe ActiveFedora::Reflection::AssociationReflection do
30
30
  let(:name) { 'dummy' }
31
31
  let(:options) { { as: 'foothing' } }
32
32
  let(:active_fedora) { double }
33
- let(:instance) { described_class.new(macro, name, options, active_fedora) }
33
+ let(:instance) { described_class.new(macro, name, nil, options, active_fedora) }
34
34
  subject { instance.send :automatic_inverse_of }
35
35
 
36
36
  context "when a has_many" do
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: 9.10.0.pre2
4
+ version: 9.10.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: 2016-03-22 00:00:00.000000000 Z
13
+ date: 2016-03-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rsolr
@@ -532,8 +532,10 @@ files:
532
532
  - lib/generators/active_fedora/config/USAGE
533
533
  - lib/generators/active_fedora/config/config_generator.rb
534
534
  - lib/generators/active_fedora/config/fedora/fedora_generator.rb
535
+ - lib/generators/active_fedora/config/fedora/templates/.fcrepo_wrapper
535
536
  - lib/generators/active_fedora/config/fedora/templates/fedora.yml
536
537
  - lib/generators/active_fedora/config/solr/solr_generator.rb
538
+ - lib/generators/active_fedora/config/solr/templates/.solr_wrapper
537
539
  - lib/generators/active_fedora/config/solr/templates/solr.yml
538
540
  - lib/generators/active_fedora/config/solr/templates/solr/config/_rest_managed.json
539
541
  - lib/generators/active_fedora/config/solr/templates/solr/config/admin-extra.html
@@ -734,9 +736,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
734
736
  version: '2.0'
735
737
  required_rubygems_version: !ruby/object:Gem::Requirement
736
738
  requirements:
737
- - - ">"
739
+ - - ">="
738
740
  - !ruby/object:Gem::Version
739
- version: 1.3.1
741
+ version: '0'
740
742
  requirements: []
741
743
  rubyforge_project:
742
744
  rubygems_version: 2.5.1