active-fedora 9.0.0.rc3 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +1054 -0
  3. data/active-fedora.gemspec +1 -1
  4. data/config/predicate_mappings.yml +2 -2
  5. data/lib/active_fedora.rb +3 -0
  6. data/lib/active_fedora/attached_files.rb +31 -14
  7. data/lib/active_fedora/base.rb +2 -0
  8. data/lib/active_fedora/caching_connection.rb +80 -0
  9. data/lib/active_fedora/callbacks.rb +13 -14
  10. data/lib/active_fedora/core.rb +9 -17
  11. data/lib/active_fedora/errors.rb +1 -1
  12. data/lib/active_fedora/fedora.rb +5 -1
  13. data/lib/active_fedora/file.rb +42 -39
  14. data/lib/active_fedora/ldp_cache.rb +46 -0
  15. data/lib/active_fedora/ldp_resource_service.rb +27 -0
  16. data/lib/active_fedora/loadable_from_json.rb +3 -1
  17. data/lib/active_fedora/log_subscriber.rb +38 -0
  18. data/lib/active_fedora/persistence.rb +22 -12
  19. data/lib/active_fedora/predicates.rb +3 -3
  20. data/lib/active_fedora/railtie.rb +3 -0
  21. data/lib/active_fedora/rdf.rb +0 -1
  22. data/lib/active_fedora/relation/finder_methods.rb +2 -3
  23. data/lib/active_fedora/validations.rb +1 -3
  24. data/lib/active_fedora/version.rb +1 -1
  25. data/lib/generators/active_fedora/config/solr/templates/jetty.yml +3 -2
  26. data/spec/fixtures/rails_root/config/predicate_mappings.yml +2 -2
  27. data/spec/integration/associations_spec.rb +19 -19
  28. data/spec/integration/attached_files_spec.rb +3 -3
  29. data/spec/integration/belongs_to_association_spec.rb +9 -9
  30. data/spec/integration/caching_spec.rb +59 -0
  31. data/spec/integration/collection_association_spec.rb +1 -1
  32. data/spec/integration/fedora_solr_sync_spec.rb +2 -2
  33. data/spec/integration/file_spec.rb +41 -43
  34. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +8 -8
  35. data/spec/integration/has_many_associations_spec.rb +15 -15
  36. data/spec/integration/nested_attribute_spec.rb +2 -2
  37. data/spec/integration/relation_spec.rb +1 -1
  38. data/spec/integration/solr_instance_loader_spec.rb +2 -1
  39. data/spec/samples/special_thing.rb +2 -2
  40. data/spec/spec_helper.rb +1 -0
  41. data/spec/unit/attached_files_spec.rb +41 -5
  42. data/spec/unit/attributes_spec.rb +1 -1
  43. data/spec/unit/change_set_spec.rb +1 -1
  44. data/spec/unit/code_configurator_spec.rb +3 -3
  45. data/spec/unit/core_spec.rb +16 -1
  46. data/spec/unit/file_spec.rb +14 -10
  47. data/spec/unit/has_and_belongs_to_many_association_spec.rb +6 -6
  48. data/spec/unit/has_many_association_spec.rb +4 -4
  49. data/spec/unit/indexing_service_spec.rb +2 -2
  50. data/spec/unit/ldp_resource_spec.rb +17 -0
  51. data/spec/unit/logger_spec.rb +1 -1
  52. data/spec/unit/persistence_spec.rb +24 -20
  53. data/spec/unit/predicates_spec.rb +7 -7
  54. data/spec/unit/sparql_insert_spec.rb +2 -2
  55. data/spec/unit/validations_spec.rb +12 -2
  56. metadata +13 -8
  57. data/lib/active_fedora/rdf/rels_ext.rb +0 -26
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe "NestedAttribute behavior" do
4
4
  before do
5
5
  class Bar < ActiveFedora::Base
6
- belongs_to :car, predicate: ActiveFedora::RDF::RelsExt.hasMember
6
+ belongs_to :car, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasMember
7
7
  has_metadata :type=>ActiveFedora::SimpleDatastream, :name=>"someData" do |m|
8
8
  m.field "uno", :string
9
9
  m.field "dos", :string
@@ -13,7 +13,7 @@ describe "NestedAttribute behavior" do
13
13
 
14
14
  # base Car class, used in test for association updates and :allow_destroy flag
15
15
  class Car < ActiveFedora::Base
16
- has_many :bars, predicate: ActiveFedora::RDF::RelsExt.hasMember
16
+ has_many :bars, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasMember
17
17
  accepts_nested_attributes_for :bars, :allow_destroy=>true
18
18
  end
19
19
 
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe ActiveFedora::Base do
4
4
  before :all do
5
5
  class Library < ActiveFedora::Base
6
- has_many :books, predicate: ActiveFedora::RDF::RelsExt.isPartOf
6
+ has_many :books, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf
7
7
  end
8
8
  class Book < ActiveFedora::Base; end
9
9
  end
@@ -11,7 +11,7 @@ describe ActiveFedora::SolrInstanceLoader do
11
11
  has_attributes :bar, datastream: 'descMetadata', multiple: false
12
12
  property :title, predicate: ::RDF::DC.title, multiple: false
13
13
  property :description, predicate: ::RDF::DC.description
14
- belongs_to :another, predicate: ActiveFedora::RDF::RelsExt.isPartOf, class_name: 'Foo'
14
+ belongs_to :another, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'Foo'
15
15
  end
16
16
  end
17
17
 
@@ -35,6 +35,7 @@ describe ActiveFedora::SolrInstanceLoader do
35
35
  expect(subject.title).to eq 'My Title'
36
36
  expect(subject.description).to match_array ['first desc', 'second desc']
37
37
  expect(subject.another_id).to eq another.id
38
+ expect(subject.bar).to eq 'quix'
38
39
  end
39
40
 
40
41
  it "should not be mutable" do
@@ -37,8 +37,8 @@ class SpecialThing < ActiveFedora::Base
37
37
 
38
38
  # This is an example of how you can add a custom relationship to a model
39
39
  # This will allow you to call .derivation on instances of the model to get the _outbound_ "hasDerivation" relationship in the RELS-EXT datastream
40
- belongs_to :derivation, predicate: ActiveFedora::RDF::RelsExt.hasDerivation, class_name: 'SpecialThing'
40
+ belongs_to :derivation, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasDerivation, class_name: 'SpecialThing'
41
41
 
42
42
  # This will allow you to call .inspirations on instances of the model to get a list of all of the objects that assert "hasDerivation" relationships pointing at this object
43
- has_many :inspirations, predicate: ActiveFedora::RDF::RelsExt.hasDerivation, class_name: 'SpecialThing'
43
+ has_many :inspirations, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasDerivation, class_name: 'SpecialThing'
44
44
  end
@@ -20,6 +20,7 @@ require 'byebug' unless ENV['TRAVIS']
20
20
 
21
21
  ActiveFedora::Base.logger = Logger.new(STDERR)
22
22
  ActiveFedora::Base.logger.level = Logger::WARN
23
+ # require 'http_logger'
23
24
  # HttpLogger.logger = Logger.new(STDOUT)
24
25
  # HttpLogger.ignore = [/localhost:8983\/solr/]
25
26
  # HttpLogger.colorize = false
@@ -92,7 +92,7 @@ describe ActiveFedora::AttachedFiles do
92
92
  end
93
93
  end
94
94
 
95
- describe "#add_file_datastream" do
95
+ describe "#add_file" do
96
96
  before do
97
97
  class Bar < ActiveFedora::File; end
98
98
 
@@ -107,17 +107,53 @@ describe ActiveFedora::AttachedFiles do
107
107
  end
108
108
  let(:container) { FooHistory.new }
109
109
 
110
- context "a reflection matches the :dsid property" do
110
+ describe "#add_file_datastream" do
111
+ context "a reflection matches the :dsid property" do
112
+ it "should build the reflection" do
113
+ expect(Deprecation).to receive(:warn)
114
+ container.add_file_datastream('blah', path: 'content')
115
+ expect(container.content).to be_instance_of Bar
116
+ expect(container.content.content).to eq 'blah'
117
+ end
118
+ end
119
+ end
120
+ context "with the deprecated :dsid property" do
121
+ it "should build the reflection" do
122
+ expect(Deprecation).to receive(:warn)
123
+ container.add_file('blah', dsid: 'content')
124
+ expect(container.content).to be_instance_of Bar
125
+ expect(container.content.content).to eq 'blah'
126
+ end
127
+ end
128
+ context "a reflection matches the :path property" do
129
+ it "should build the reflection" do
130
+ container.add_file('blah', path: 'content')
131
+ expect(container.content).to be_instance_of Bar
132
+ expect(container.content.content).to eq 'blah'
133
+ end
134
+ end
135
+
136
+ context "the deprecated 3 args erasure" do
137
+ it "should build the reflection" do
138
+ expect(Deprecation).to receive(:warn)
139
+ container.add_file('blah', 'content', 'name.png')
140
+ expect(container.content).to be_instance_of Bar
141
+ expect(container.content.content).to eq 'blah'
142
+ end
143
+ end
144
+
145
+ context "the deprecated 4 args erasure" do
111
146
  it "should build the reflection" do
112
- container.add_file_datastream('blah', dsid: 'content')
147
+ expect(Deprecation).to receive(:warn)
148
+ container.add_file('blah', 'content', 'name.png', 'image/png')
113
149
  expect(container.content).to be_instance_of Bar
114
150
  expect(container.content.content).to eq 'blah'
115
151
  end
116
152
  end
117
153
 
118
- context "no reflection matches the :dsid property" do
154
+ context "no reflection matches the :path property" do
119
155
  it "should create a singleton reflection and build it" do
120
- container.add_file_datastream('blah', dsid: 'fizz')
156
+ container.add_file('blah', path: 'fizz')
121
157
  expect(container.fizz).to be_instance_of ActiveFedora::File
122
158
  expect(container.fizz.content).to eq 'blah'
123
159
  end
@@ -105,7 +105,7 @@ describe ActiveFedora::Base do
105
105
  describe "with relationships" do
106
106
  before do
107
107
  class BarHistory3 < BarHistory2
108
- belongs_to :library, predicate: ActiveFedora::RDF::RelsExt.hasConstituent, class_name: 'BarHistory2'
108
+ belongs_to :library, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasConstituent, class_name: 'BarHistory2'
109
109
  end
110
110
  subject.library = library
111
111
  end
@@ -16,7 +16,7 @@ describe ActiveFedora::ChangeSet do
16
16
  end
17
17
 
18
18
  class Book < ActiveFedora::Base
19
- belongs_to :library, predicate: ActiveFedora::RDF::RelsExt.hasConstituent
19
+ belongs_to :library, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasConstituent
20
20
  property :title, predicate: ::RDF::DC.title
21
21
  end
22
22
 
@@ -18,9 +18,9 @@ describe ActiveFedora::FileConfigurator do
18
18
  :fedora_config => { :url => 'http://codeconfig.example.edu/fedora/', :user => 'fedoraAdmin', :password => 'configurator', :cert_file => '/path/to/cert/file' },
19
19
  :solr_config => { :url => 'http://codeconfig.example.edu/solr/' },
20
20
  :predicate_config => {
21
- :default_namespace => 'http://fedora.info/definitions/v4/rels-ext#',
21
+ :default_namespace => 'info:fedora/fedora-system:def/relations-external#',
22
22
  :predicate_mapping => {
23
- 'http://fedora.info/definitions/v4/rels-ext#' => { :has_part => 'hasPart' }
23
+ 'info:fedora/fedora-system:def/relations-external#' => { :has_part => 'hasPart' }
24
24
  }
25
25
  }
26
26
  }
@@ -45,7 +45,7 @@ describe ActiveFedora::FileConfigurator do
45
45
  ActiveFedora.init(@config_params)
46
46
  expect(ActiveFedora.fedora_config.credentials).to eq @config_params[:fedora_config]
47
47
  expect(ActiveFedora.solr_config).to eq @config_params[:solr_config]
48
- expect(ActiveFedora::Predicates.predicate_mappings['http://fedora.info/definitions/v4/rels-ext#'].length).to eq 1
48
+ expect(ActiveFedora::Predicates.predicate_mappings['info:fedora/fedora-system:def/relations-external#'].length).to eq 1
49
49
  end
50
50
 
51
51
  end
@@ -8,7 +8,7 @@ describe ActiveFedora::Base do
8
8
  class Library < ActiveFedora::Base
9
9
  end
10
10
  class Book < ActiveFedora::Base
11
- belongs_to :library, predicate: ActiveFedora::RDF::RelsExt.hasConstituent
11
+ belongs_to :library, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasConstituent
12
12
  has_metadata "foo", type: ActiveFedora::SimpleDatastream do |m|
13
13
  m.field "title", :string
14
14
  end
@@ -104,6 +104,20 @@ describe ActiveFedora::Base do
104
104
 
105
105
  it { should eq "#{ActiveFedora.fedora.host}#{ActiveFedora.fedora.base_path}/foo/123456w" }
106
106
  end
107
+
108
+ context "with an empty base path" do
109
+ it "should produce a valid URI" do
110
+ allow(ActiveFedora.fedora).to receive(:base_path).and_return("/")
111
+ expect(subject).to eq("#{ActiveFedora.fedora.host}/#{id}")
112
+ end
113
+ end
114
+
115
+ context "with a really empty base path" do
116
+ it "should produce a valid URI" do
117
+ allow(ActiveFedora.fedora).to receive(:base_path).and_return("")
118
+ expect(subject).to eq("#{ActiveFedora.fedora.host}/#{id}")
119
+ end
120
+ end
107
121
  end
108
122
 
109
123
  describe "uri_to_id" do
@@ -123,4 +137,5 @@ describe ActiveFedora::Base do
123
137
  it { should eq '123456w' }
124
138
  end
125
139
  end
140
+
126
141
  end
@@ -27,13 +27,6 @@ describe ActiveFedora::Datastream do
27
27
  end
28
28
  end
29
29
 
30
- describe "to_param" do
31
- before { allow(subject).to receive(:dsid).and_return('foo.bar') }
32
- it "should escape dots" do
33
- expect(subject.to_param).to eq 'foo%2ebar'
34
- end
35
- end
36
-
37
30
  describe "#uri" do
38
31
  let(:parent) { ActiveFedora::Base.new(id: '1234') }
39
32
  before { allow(Deprecation).to receive(:warn) }
@@ -189,12 +182,23 @@ describe ActiveFedora::Datastream do
189
182
  context "when it's saved" do
190
183
  let(:parent) { ActiveFedora::Base.create }
191
184
  before do
192
- parent.add_file_datastream('one1two2threfour', dsid: 'abcd', mime_type: 'video/webm', original_name: "my_image.png")
185
+ parent.add_file('one1two2threfour', path: 'abcd', mime_type: 'video/webm', original_name: 'my image.png')
193
186
  parent.save!
194
187
  end
195
188
 
196
189
  it "should have original_name" do
197
- expect(parent.reload.abcd.original_name).to eq 'my_image.png'
190
+ expect(parent.reload.abcd.original_name).to eq 'my image.png'
191
+ end
192
+ end
193
+
194
+ context "with special characters" do
195
+ let(:parent) { ActiveFedora::Base.create }
196
+ before do
197
+ parent.add_file('one1two2threfour', path: 'abcd', mime_type: 'video/webm', original_name:'my "image".png')
198
+ parent.save!
199
+ end
200
+ it "should save OK and preserve name" do
201
+ expect(parent.reload.abcd.original_name).to eq 'my "image".png'
198
202
  end
199
203
  end
200
204
  end
@@ -209,7 +213,7 @@ describe ActiveFedora::Datastream do
209
213
  context "when it's saved" do
210
214
  let(:parent) { ActiveFedora::Base.create }
211
215
  before do
212
- parent.add_file_datastream('one1two2threfour', dsid: 'abcd', mime_type: 'video/webm')
216
+ parent.add_file('one1two2threfour', path: 'abcd', mime_type: 'video/webm')
213
217
  parent.save!
214
218
  end
215
219
 
@@ -24,7 +24,7 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
24
24
  context "a one way relationship " do
25
25
  describe "adding memeber" do
26
26
  it "should set the relationship attribute" do
27
- reflection = Book.create_reflection(:has_and_belongs_to_many, :pages, {predicate: ActiveFedora::RDF::RelsExt.isMemberOfCollection}, Book)
27
+ reflection = Book.create_reflection(:has_and_belongs_to_many, :pages, {predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection}, Book)
28
28
  allow(ActiveFedora::SolrService).to receive(:query).and_return([])
29
29
  ac = ActiveFedora::Associations::HasAndBelongsToManyAssociation.new(subject, reflection)
30
30
  expect(ac).to receive(:callback).twice
@@ -46,7 +46,7 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
46
46
  let(:query2) { ids.slice(10,10).map {|i| "_query_:\"{!raw f=id}#{i}\""}.join(" OR ") }
47
47
 
48
48
  it "should call solr query multiple times" do
49
- reflection = Book.create_reflection(:has_and_belongs_to_many, :pages, { predicate: ActiveFedora::RDF::RelsExt.isMemberOfCollection, solr_page_size: 10}, Book)
49
+ reflection = Book.create_reflection(:has_and_belongs_to_many, :pages, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection, solr_page_size: 10}, Book)
50
50
  expect(subject).to receive(:[]).with('page_ids').and_return(ids)
51
51
  expect(ActiveFedora::SolrService).to receive(:query).with(query1, rows: 10).and_return([])
52
52
  expect(ActiveFedora::SolrService).to receive(:query).with(query2, rows: 10).and_return([])
@@ -58,8 +58,8 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
58
58
  end
59
59
 
60
60
  context "with an inverse reflection" do
61
- let!(:inverse) { Page.create_reflection(:has_and_belongs_to_many, :books, { predicate: ActiveFedora::RDF::RelsExt.isMemberOfCollection }, Page) }
62
- let(:reflection) { Book.create_reflection(:has_and_belongs_to_many, :pages, { predicate: ActiveFedora::RDF::RelsExt.hasCollectionMember, inverse_of: 'books'}, Book) }
61
+ let!(:inverse) { Page.create_reflection(:has_and_belongs_to_many, :books, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isMemberOfCollection }, Page) }
62
+ let(:reflection) { Book.create_reflection(:has_and_belongs_to_many, :pages, { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasCollectionMember, inverse_of: 'books'}, Book) }
63
63
  let(:ac) { ActiveFedora::Associations::HasAndBelongsToManyAssociation.new(subject, reflection) }
64
64
  let(:object) { Page.new }
65
65
 
@@ -84,13 +84,13 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
84
84
  context "class with association" do
85
85
  before do
86
86
  class Collection < ActiveFedora::Base
87
- has_and_belongs_to_many :members, predicate: ActiveFedora::RDF::RelsExt.hasCollectionMember, class_name: "ActiveFedora::Base", after_remove: :remove_member
87
+ has_and_belongs_to_many :members, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasCollectionMember, class_name: "ActiveFedora::Base", after_remove: :remove_member
88
88
  def remove_member (m)
89
89
  end
90
90
  end
91
91
 
92
92
  class Thing < ActiveFedora::Base
93
- has_many :collections, predicate: ActiveFedora::RDF::RelsExt.hasCollectionMember, class_name: "ActiveFedora::Base"
93
+ has_many :collections, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasCollectionMember, class_name: "ActiveFedora::Base"
94
94
  end
95
95
  end
96
96
 
@@ -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::RelsExt.isPartOf }, Book) }
25
+ let(:reflection) { Book.create_reflection(:has_many, 'pages', { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf }, Book) }
26
26
  let(:association) { ActiveFedora::Associations::HasManyAssociation.new(book, reflection) }
27
27
 
28
28
  it "should set the book_id attribute" do
@@ -36,10 +36,10 @@ describe ActiveFedora::Associations::HasManyAssociation do
36
36
 
37
37
  before do
38
38
  # :books must come first, so that we can test that is being passed over in favor of :contents
39
- Page.has_many :books, predicate: ActiveFedora::RDF::RelsExt.isPartOf, class_name: 'ActiveFedora::Base'
40
- Page.has_and_belongs_to_many :contents, predicate: ActiveFedora::RDF::RelsExt.isPartOf, class_name: 'ActiveFedora::Base'
39
+ Page.has_many :books, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'ActiveFedora::Base'
40
+ Page.has_and_belongs_to_many :contents, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf, class_name: 'ActiveFedora::Base'
41
41
  end
42
- let(:book_reflection) { Book.create_reflection(:has_many, 'pages', { predicate: ActiveFedora::RDF::RelsExt.isPartOf }, Book) }
42
+ let(:book_reflection) { Book.create_reflection(:has_many, 'pages', { predicate: ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf }, Book) }
43
43
  let(:association) { ActiveFedora::Associations::HasManyAssociation.new(book, book_reflection) }
44
44
 
45
45
  subject { association.send(:find_polymorphic_inverse, page) }
@@ -10,8 +10,8 @@ describe ActiveFedora::IndexingService do
10
10
  let(:location_reflection) { double('location', foreign_key: 'location_id', kind_of?: true, solr_key: part_of) }
11
11
  let(:reflections) { { 'person' => person_reflection, 'location' => location_reflection } }
12
12
 
13
- let(:member_of) { ActiveFedora::SolrQueryBuilder.solr_name("http://fedora.info/definitions/v4/rels-ext#isMemberOf", :symbol) }
14
- let(:part_of) { ActiveFedora::SolrQueryBuilder.solr_name("http://fedora.info/definitions/v4/rels-ext#isPartOf", :symbol) }
13
+ let(:member_of) { ActiveFedora::SolrQueryBuilder.solr_name("info:fedora/fedora-system:def/relations-external#isMemberOf", :symbol) }
14
+ let(:part_of) { ActiveFedora::SolrQueryBuilder.solr_name("info:fedora/fedora-system:def/relations-external#isPartOf", :symbol) }
15
15
 
16
16
  before do
17
17
  expect(object).to receive(:[]).with('person_id').and_return('info:fedora/demo:10')
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveFedora::LdpResource do
4
+ let(:obj) { ActiveFedora::Base.create! }
5
+ let!(:r1) { ActiveFedora::LdpResource.new(ActiveFedora.fedora.connection, obj.uri) }
6
+ let!(:r2) { ActiveFedora::LdpResource.new(ActiveFedora.fedora.connection, obj.uri) }
7
+
8
+ it "should cache requests" do
9
+ expect_any_instance_of(Faraday::Connection).to receive(:get).once.and_call_original
10
+ ActiveFedora::Base.cache do
11
+ r1.get
12
+ r2.get
13
+ end
14
+ end
15
+
16
+
17
+ end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::Base do
4
- let(:logger1) { double }
4
+ let(:logger1) { double(debug?: false) }
5
5
 
6
6
  before do
7
7
  @initial_logger = ActiveFedora::Base.logger
@@ -2,39 +2,43 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::Persistence do
4
4
 
5
- describe "an unsaved object" do
6
- subject { ActiveFedora::Base.new }
7
- it "should be deleteable (nop) and return the object" do
8
- expect(subject.delete).to eq subject
5
+ describe '.delete' do
6
+ context 'with an unsaved object' do
7
+ subject { ActiveFedora::Base.new }
8
+ before { subject.delete }
9
+ it { is_expected.to eq subject }
10
+ end
11
+
12
+ context 'with a saved object' do
13
+ subject { ActiveFedora::Base.create! }
14
+ before { subject.delete }
15
+ it { is_expected.to be_frozen }
9
16
  end
10
17
  end
11
18
 
12
- describe ".create" do
13
- context "when a block is provided" do
14
- it "should pass the block to initialize" do
19
+ describe '.create' do
20
+ context 'when a block is provided' do
21
+ it 'passes the block to initialize' do
15
22
  expect_any_instance_of(ActiveFedora::Base).to receive(:save)
16
23
  expect { |b| ActiveFedora::Base.create(&b) }.to yield_with_args(an_instance_of ActiveFedora::Base)
17
24
  end
18
25
  end
19
26
  end
20
27
 
21
- describe "a saved object" do
28
+ describe '.destroy' do
22
29
  subject { ActiveFedora::Base.create! }
23
- describe "that is deleted" do
24
- before do
25
- subject.delete
26
- end
27
- it "should be frozen" do
28
- expect(subject).to be_frozen
30
+ context 'with no options' do
31
+ before { subject.destroy }
32
+ it 'does not clear the id' do
33
+ expect(subject.id).not_to be_nil
29
34
  end
30
35
  end
31
- end
32
36
 
33
- describe "destroy" do
34
- subject { ActiveFedora::Base.create! }
35
- it "should not clear the id" do
36
- subject.destroy
37
- expect(subject.id).not_to be_nil
37
+ context 'with option eradicate: true' do
38
+ it 'deletes the tombstone' do
39
+ expect(subject.class).to receive(:eradicate).with(subject.id).and_return(true)
40
+ subject.destroy(eradicate: true)
41
+ end
38
42
  end
39
43
  end
40
44
 
@@ -28,7 +28,7 @@ describe ActiveFedora::Predicates do
28
28
  end
29
29
 
30
30
  it 'should provide .default_predicate_namespace' do
31
- expect(ActiveFedora::Predicates.default_predicate_namespace).to eq 'http://fedora.info/definitions/v4/rels-ext#'
31
+ expect(ActiveFedora::Predicates.default_predicate_namespace).to eq 'info:fedora/fedora-system:def/relations-external#'
32
32
  end
33
33
 
34
34
  describe "#predicate_mappings" do
@@ -37,7 +37,7 @@ describe ActiveFedora::Predicates do
37
37
  expect(ActiveFedora::Predicates.predicate_mappings).to be_kind_of Hash
38
38
  end
39
39
 
40
- it "should provide mappings to the fedora ontology via the http://fedora.info/definitions/v4/rels-ext# default namespace mapping" do
40
+ it "should provide mappings to the fedora ontology via the info:fedora/fedora-system:def/relations-external# default namespace mapping" do
41
41
  expect(ActiveFedora::Predicates.predicate_mappings.keys.include?(ActiveFedora::Predicates.default_predicate_namespace)).to be true
42
42
  expect(ActiveFedora::Predicates.predicate_mappings[ActiveFedora::Predicates.default_predicate_namespace]).to be_kind_of Hash
43
43
  end
@@ -94,7 +94,7 @@ describe ActiveFedora::Predicates do
94
94
  end
95
95
 
96
96
  it 'should allow explicit initialization of predicates' do
97
- expect(ActiveFedora::Predicates.find_predicate(:is_part_of)).to eq ["isPartOf", "http://fedora.info/definitions/v4/rels-ext#"]
97
+ expect(ActiveFedora::Predicates.find_predicate(:is_part_of)).to eq ["isPartOf", "info:fedora/fedora-system:def/relations-external#"]
98
98
  ActiveFedora::Predicates.predicate_config = {
99
99
  :default_namespace => 'http://example.com/foo',
100
100
  :predicate_mapping => {
@@ -112,17 +112,17 @@ describe ActiveFedora::Predicates do
112
112
  it "should allow adding predicates without wiping out existing predicates" do
113
113
  ActiveFedora::Predicates.set_predicates({
114
114
  "http://projecthydra.org/ns/relations#"=>{has_profile:"hasProfile"},
115
- "http://fedora.info/definitions/v4/rels-ext#"=>{
115
+ "info:fedora/fedora-system:def/relations-external#"=>{
116
116
  references:"references",
117
117
  has_derivation: "cameFrom"
118
118
  },
119
119
  })
120
120
  # New & Modified Predicates
121
121
  expect(ActiveFedora::Predicates.find_predicate(:has_profile)).to eq ["hasProfile", "http://projecthydra.org/ns/relations#"]
122
- expect(ActiveFedora::Predicates.find_predicate(:references)).to eq ["references", "http://fedora.info/definitions/v4/rels-ext#"]
123
- expect(ActiveFedora::Predicates.find_predicate(:has_derivation)).to eq ["cameFrom", "http://fedora.info/definitions/v4/rels-ext#"]
122
+ expect(ActiveFedora::Predicates.find_predicate(:references)).to eq ["references", "info:fedora/fedora-system:def/relations-external#"]
123
+ expect(ActiveFedora::Predicates.find_predicate(:has_derivation)).to eq ["cameFrom", "info:fedora/fedora-system:def/relations-external#"]
124
124
  # Pre-Existing predicates should be unharmed
125
- expect(ActiveFedora::Predicates.find_predicate(:is_part_of)).to eq ["isPartOf", "http://fedora.info/definitions/v4/rels-ext#"]
125
+ expect(ActiveFedora::Predicates.find_predicate(:is_part_of)).to eq ["isPartOf", "info:fedora/fedora-system:def/relations-external#"]
126
126
  expect(ActiveFedora::Predicates.find_predicate(:is_governed_by)).to eq ["isGovernedBy", "http://projecthydra.org/ns/relations#"]
127
127
  end
128
128