active-fedora 9.0.4 → 9.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8399fafb48e7230ac7b01d1902b7f5c08cbbd32c
4
- data.tar.gz: a7bba75db0807336e62720997ccc30465b492356
3
+ metadata.gz: 436ba8923ff37c5dd40860044ff513a17c7ad780
4
+ data.tar.gz: e9b48072342526acefc2ab0210a9da725057b118
5
5
  SHA512:
6
- metadata.gz: 25eaf5eacaacbe1c4889f3c2cc2381a06a38a7aced2c5dd06b9ea6d5497b512b24f923fca57b8b3b1a49ace425841463a71c8d2e036dd3db6e2d46006bb09810
7
- data.tar.gz: 8e5a5556ad3acd780f352feb6043053a41b1ae9be13446d269676748d46ce0830a4beae2550621b14af1ee897145eb7a6151d3a98d0a81ee60e49337ecd60527
6
+ metadata.gz: b58f0179c05783ff6897723088979c1605d5d4a1901b082e2893c6f1ef7b7023c701bd6a91fa345c9ce19833a0ce37a7040b250282ca07a2e8cd6e8f79fcdf8b
7
+ data.tar.gz: 47851b957993caf1586409266240480f8763b65643bcf41cc9269aaf717ffe010df2cd3ede6bf940aac648179bf20aa992a9920daf8266338e39a2578fb08d66
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  s.add_development_dependency "rake"
31
31
  s.add_development_dependency "jettywrapper", ">= 2.0.0"
32
32
  s.add_development_dependency "rspec", "~> 3.0"
33
+ s.add_development_dependency "rspec-its"
33
34
  s.add_development_dependency "equivalent-xml"
34
35
  s.add_development_dependency "simplecov", '~> 0.7.1'
35
36
 
@@ -2,7 +2,7 @@ module ActiveFedora::Associations::Builder
2
2
  class HasMany < CollectionAssociation #:nodoc:
3
3
  self.macro = :has_many
4
4
 
5
- self.valid_options += [:dependent, :inverse_of]
5
+ self.valid_options += [:as, :dependent, :inverse_of]
6
6
 
7
7
  def build
8
8
  reflection = super
@@ -7,7 +7,9 @@ module ActiveFedora
7
7
  end
8
8
 
9
9
  def find_target
10
- reflection.build_association(target_uri)
10
+ reflection.build_association(target_uri).tap do |record|
11
+ configure_datastream(record) if reflection.options[:block]
12
+ end
11
13
  end
12
14
 
13
15
  def target_uri
@@ -53,7 +53,10 @@ module ActiveFedora
53
53
  end
54
54
  end
55
55
 
56
- # Adds datastream to the object.
56
+ # Add an ActiveFedora::File to the object.
57
+ # @param [ActiveFedora::File] file
58
+ # @param [String] file_path
59
+ # @param [Hash] opts
57
60
  # @return [String] path of the added datastream
58
61
  def attach_file(file, file_path, opts={})
59
62
  create_singleton_association(file_path)
@@ -80,9 +83,9 @@ module ActiveFedora
80
83
  add_file(file, opts)
81
84
  end
82
85
 
83
- # Attach the given file to object
86
+ # Attach the given stream/string to object
84
87
  #
85
- # @param [File] file the file to add
88
+ # @param [IO, String] file the file to add
86
89
  # @param [Hash] opts options: :dsid, :prefix, :mime_type
87
90
  # @option opts [String] :path The file path
88
91
  # @option opts [String] :prefix The path prefix (for auto-generated path)
@@ -19,8 +19,8 @@ module ActiveFedora
19
19
 
20
20
  def changes
21
21
  @changes ||= changed_attributes.each_with_object({}) do |key, result|
22
- if m = /^.*_ids?$/.match(key)
23
- predicate = object.association(m[0].to_sym).reflection.predicate
22
+ if object.respond_to?(:association) && object.association(key.to_sym).present?
23
+ predicate = object.association(key.to_sym).reflection.predicate
24
24
  result[predicate] = graph.query(predicate: predicate)
25
25
  elsif object.class.properties.keys.include?(key)
26
26
  predicate = graph.reflections.reflect_on_property(key).predicate
@@ -5,7 +5,7 @@ module ActiveFedora
5
5
  included do
6
6
  include ActiveTriples::Properties
7
7
  include ActiveTriples::Reflection
8
- delegate :rdf_subject, :get_values, to: :resource
8
+ delegate :rdf_subject, :get_values, :type, to: :resource
9
9
 
10
10
  property :has_model, predicate: ActiveFedora::RDF::Fcrepo::Model.hasModel
11
11
  property :create_date, predicate: ActiveFedora::RDF::Fcrepo4.created
@@ -76,6 +76,10 @@ module ActiveFedora
76
76
  klass
77
77
  end
78
78
  end
79
+
80
+ def type(uri)
81
+ resource_class.configure type: uri
82
+ end
79
83
  end
80
84
  end
81
85
  end
@@ -156,21 +156,6 @@ module ActiveFedora
156
156
  super || content_changed?
157
157
  end
158
158
 
159
-
160
- class << self
161
- def default_attributes
162
- {}
163
- end
164
- end
165
-
166
- def default_attributes
167
- @default_attributes ||= self.class.default_attributes
168
- end
169
-
170
- def default_attributes= attributes
171
- @default_attributes = default_attributes.merge attributes
172
- end
173
-
174
159
  def original_name= name
175
160
  @original_name = name
176
161
  end
@@ -18,10 +18,6 @@ module ActiveFedora
18
18
  @terminology
19
19
  end
20
20
 
21
- def self.default_attributes
22
- super.merge(:mimeType => 'text/xml')
23
- end
24
-
25
21
  def self.decorate_ng_xml(xml)
26
22
  xml.set_terminology terminology_options, &terminology
27
23
  xml.nom!
@@ -62,6 +58,12 @@ module ActiveFedora
62
58
  def respond_to? *args
63
59
  super || self.class.terminology.respond_to?(*args)
64
60
  end
61
+
62
+ protected
63
+
64
+ def default_mime_type
65
+ 'text/xml'
66
+ end
65
67
  end
66
68
  end
67
69
 
@@ -2,10 +2,6 @@ require 'rdf/ntriples'
2
2
 
3
3
  module ActiveFedora
4
4
  class NtriplesRDFDatastream < RDFDatastream
5
- def self.default_attributes
6
- super.merge(:mimeType => 'text/plain')
7
- end
8
-
9
5
  def serialization_format
10
6
  :ntriples
11
7
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveFedora
2
- VERSION = "9.0.4"
2
+ VERSION = "9.0.5"
3
3
  end
@@ -24,6 +24,37 @@ describe ActiveFedora::Base do
24
24
  end
25
25
 
26
26
  end
27
+
28
+ describe "explicit foreign key" do
29
+ before do
30
+ class FooThing < ActiveFedora::Base
31
+ has_many :bars, :class_name=>'BarThing', :predicate=>ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, :as=>:foothing
32
+ end
33
+
34
+ class BarThing < ActiveFedora::Base
35
+ belongs_to :foothing, :class_name=>'FooThing', :predicate=>ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf
36
+ end
37
+ end
38
+
39
+ after do
40
+ Object.send(:remove_const, :FooThing)
41
+ Object.send(:remove_const, :BarThing)
42
+ end
43
+
44
+ let(:foo) { FooThing.create }
45
+ let(:bar) { BarThing.create }
46
+
47
+ it "should associate from bar to foo" do
48
+ bar.foothing = foo
49
+ bar.save
50
+ expect(foo.bars).to eq [bar]
51
+ end
52
+
53
+ it "should associate from foo to bar" do
54
+ foo.bars << bar
55
+ expect(bar.foothing).to eq foo
56
+ end
57
+ end
27
58
 
28
59
  describe "complex example" do
29
60
  before do
@@ -14,6 +14,7 @@ end
14
14
 
15
15
  require 'active-fedora'
16
16
  require 'rspec'
17
+ require 'rspec/its'
17
18
  require 'equivalent-xml/rspec_matchers'
18
19
  require 'logger'
19
20
  require 'byebug' unless ENV['TRAVIS']
@@ -28,6 +28,21 @@ describe ActiveFedora::Base do
28
28
  end
29
29
  end
30
30
 
31
+ describe ".type" do
32
+ before do
33
+ class FooHistory < ActiveFedora::Base
34
+ type ::RDF::URI.new('http://example.com/foo')
35
+ end
36
+ end
37
+ after do
38
+ Object.send(:remove_const, :FooHistory)
39
+ end
40
+
41
+ subject { FooHistory.new().type }
42
+
43
+ it { is_expected.to eq [RDF::URI('http://example.com/foo')] }
44
+ end
45
+
31
46
  describe 'descendants' do
32
47
  it "should record the decendants" do
33
48
  expect(ActiveFedora::Base.descendants).to include(ModsArticle, SpecialThing)
@@ -18,10 +18,12 @@ describe ActiveFedora::ChangeSet do
18
18
  class Book < ActiveFedora::Base
19
19
  belongs_to :library, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasConstituent
20
20
  property :title, predicate: ::RDF::DC.title
21
+ property :alt_id, predicate: ::RDF::DC.identifier
21
22
  end
22
23
 
23
24
  base.library_id = 'foo'
24
25
  base.title = ['bar']
26
+ base.alt_id = ['12345']
25
27
  end
26
28
  after do
27
29
  Object.send(:remove_const, :Library)
@@ -36,8 +38,8 @@ describe ActiveFedora::ChangeSet do
36
38
 
37
39
  it { is_expected.to be_kind_of Hash }
38
40
 
39
- it "should have two elements" do
40
- expect(subject.size).to eq 2
41
+ it "should have three elements" do
42
+ expect(subject.size).to eq 3
41
43
  end
42
44
  end
43
45
 
@@ -62,5 +62,37 @@ describe ActiveFedora::SimpleDatastream do
62
62
  expect(solr[ActiveFedora::SolrQueryBuilder.solr_name('creation_date', type: :date)]).to eq "2012-01-15"
63
63
  end
64
64
  end
65
+
66
+ describe "datastream configuration" do
67
+ let(:foo) do
68
+ ActiveFedora::Base.create! do |obj|
69
+ obj.add_file(%{<?xml version="1.0"?>\n<fields><fubar>test</fubar></fields>}, path:'someData')
70
+ end
71
+ end
72
+ let(:resource) { Ldp::Resource::RdfSource.new(ActiveFedora.fedora.connection, foo.uri) }
73
+ let(:orm) { Ldp::Orm.new(resource) }
74
+
75
+ before do
76
+ class FooHistory < ActiveFedora::Base
77
+ has_metadata :type=>ActiveFedora::SimpleDatastream, :name=>"someData" do |m|
78
+ m.field "fubar", :string
79
+ end
80
+ has_attributes :fubar, datastream: 'someData', multiple: false
81
+ end
82
+
83
+ orm.graph.delete([orm.resource.subject_uri, ActiveFedora::RDF::Fcrepo::Model.hasModel, nil])
84
+ orm.graph.insert([orm.resource.subject_uri, ActiveFedora::RDF::Fcrepo::Model.hasModel, 'FooHistory'])
85
+ orm.save
86
+ foo.reload
87
+ foo.update_index
88
+ end
89
+
90
+ after do
91
+ Object.send(:remove_const, :FooHistory)
92
+ end
93
+
94
+ subject { FooHistory.find(foo.id) }
95
+ its(:fubar) { is_expected.to eq 'test' }
96
+ end
65
97
 
66
98
  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: 9.0.4
4
+ version: 9.0.5
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: 2015-03-11 00:00:00.000000000 Z
13
+ date: 2015-03-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rsolr
@@ -222,6 +222,20 @@ dependencies:
222
222
  - - "~>"
223
223
  - !ruby/object:Gem::Version
224
224
  version: '3.0'
225
+ - !ruby/object:Gem::Dependency
226
+ name: rspec-its
227
+ requirement: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ">="
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
232
+ type: :development
233
+ prerelease: false
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
225
239
  - !ruby/object:Gem::Dependency
226
240
  name: equivalent-xml
227
241
  requirement: !ruby/object:Gem::Requirement