active-fedora 6.6.0.rc4 → 6.6.0.rc5

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: b91704416bcc480154725e95946c40f9be9c459b
4
- data.tar.gz: 71b13aaf17f894796c68bd314933e2ae4f6c4708
3
+ metadata.gz: c25ddcf281f3eb10b558ee44dc144880d3551c31
4
+ data.tar.gz: f2f13e587a927cfe015eec879a023c8407eb2fac
5
5
  SHA512:
6
- metadata.gz: decd34709952404b85375d8c87aac27a8054e61d5a2b9c0d5c600aa53d1c8f7eda7c6693fb9a64ef44b34229a602a1e797fb342f6afae0a398dd65e6c69b37b5
7
- data.tar.gz: a59b2fbf7e2023e6bbc321428202816d0d3f85798814d86351a1e0819f3cfbffff88a10db2db61a9cd7002f9ee5448816fb4ad88160768759dcb81fe730df71b
6
+ metadata.gz: 317a0a139aa98883265545996a6587a8f26020a38d3aefbd001770f30c756a35c60079b49b9cd9deabf6ac357f7d204b2f36191b1b222af165e43a186bddd88d
7
+ data.tar.gz: 5777d15192af9d28f43f59c6f27640b55419cb74fc50df642981d038825a259504e54d086a9694eedec07ae700890cae55125fa8a70a8f147529a2e62606c59e
@@ -1,4 +1,9 @@
1
- v6.6.0 (rc4)
1
+ v6.6.0 (rc5)
2
+ Gracefully handle an ObjectNotFound in find_all [Justin Coyne]
3
+ Revert "Removed unused code that breaks certain use cases (Fixes #234)." [Jeremy Friesen]
4
+ Removed unset opts parameter from call to reify_solr_results, introduced in PR #236. [David Chandek-Stark]
5
+ Removed unused code that breaks certain use cases (Fixes #234). [David Chandek-Stark]
6
+ Fix deprecation warning when using the ids setter of a has_many collection relationship that has class_name set to 'ActiveFedora::Base [Justin Coyne]
2
7
  Fix deprecation warning when loading a has_many association [Justin Coyne]
3
8
  Explicitly set cast to false on reload to avoid deprecation warnings [Justin Coyne]
4
9
  Cast relationship results if class is ActiveFedora::Base [Justin Coyne]
@@ -280,7 +280,8 @@ module ActiveFedora
280
280
  ids = (new_value || []).reject { |nid| nid.blank? }
281
281
  #TODO, like this when find() can return multiple records
282
282
  #send("#{reflection.name}=", reflection.klass.find(ids))
283
- send("#{reflection.name}=", ids.collect { |id| reflection.klass.find(id)})
283
+ opts = reflection.klass == ActiveFedora::Base ? {cast: true} : nil
284
+ send("#{reflection.name}=", ids.collect { |id| reflection.klass.find(id, opts)})
284
285
  end
285
286
  end
286
287
  end
@@ -156,7 +156,7 @@ module ActiveFedora
156
156
  opts[:class] = @reflection.class_name.constantize.to_class_uri unless @reflection.class_name.nil?
157
157
 
158
158
  #TODO, don't reify, just store the solr results and lazily reify.
159
- return ActiveFedora::SolrService.reify_solr_results(solr_result, opts)
159
+ return ActiveFedora::SolrService.reify_solr_results(solr_result)
160
160
  end
161
161
 
162
162
  def load_from_solr
@@ -63,7 +63,11 @@ module ActiveFedora
63
63
  cast = opts.delete(:cast)
64
64
  find_in_batches(conditions, opts.merge({:fl=>SOLR_DOCUMENT_ID})) do |group|
65
65
  group.each do |hit|
66
- yield(find_one(hit[SOLR_DOCUMENT_ID], cast))
66
+ begin
67
+ yield(find_one(hit[SOLR_DOCUMENT_ID], cast))
68
+ rescue ActiveFedora::ObjectNotFoundError
69
+ logger.error "When trying to find_each #{hit[SOLR_DOCUMENT_ID]}, encountered an ObjectNotFoundError. Solr may be out of sync with Fedora"
70
+ end
67
71
  end
68
72
  end
69
73
  end
@@ -103,8 +103,9 @@ module ActiveFedora
103
103
  def find(*args)
104
104
  return to_a.find { |*block_args| yield(*block_args) } if block_given?
105
105
  options = args.extract_options!
106
+ options = options.dup
106
107
 
107
- cast = if self == ActiveFedora::Base && !options.has_key?(:cast)
108
+ cast = if @klass == ActiveFedora::Base && !options.has_key?(:cast)
108
109
  Deprecation.warn(Relation, "find's cast option will default to true in ActiveFedora 7.0.0. To preserve existing behavior send parameter: `:cast=> false`", caller)
109
110
  false
110
111
  else
@@ -1,3 +1,3 @@
1
1
  module ActiveFedora
2
- VERSION = "6.6.0.rc4"
2
+ VERSION = "6.6.0.rc5"
3
3
  end
@@ -45,11 +45,8 @@ describe "When relationship is restricted to AF::Base" do
45
45
  class PDF < ActiveFedora::Base
46
46
  belongs_to :email, :property=>:is_part_of
47
47
  end
48
-
49
- @book = Email.create!
50
- @image = Image.create!(:email=>@book)
51
- @pdf = PDF.create!(:email=>@book)
52
48
  end
49
+
53
50
  after do
54
51
  Object.send(:remove_const, :Image)
55
52
  Object.send(:remove_const, :PDF)
@@ -57,8 +54,34 @@ describe "When relationship is restricted to AF::Base" do
57
54
  end
58
55
 
59
56
 
60
- it "Should not restrict relationships " do
61
- @book.reload
62
- @book.attachments.should == [@image, @pdf]
57
+ describe "creating new objects with object relationships" do
58
+ before do
59
+ @book = Email.create!
60
+ @image = Image.create!(:email=>@book)
61
+ @pdf = PDF.create!(:email=>@book)
62
+ end
63
+ it "Should not restrict relationships " do
64
+ @book.reload
65
+ @book.attachments.should == [@image, @pdf]
66
+ end
67
+ end
68
+
69
+ describe "creating new objects with id setter" do
70
+ let!(:image) { Image.create }
71
+ let!(:email) { Email.create }
72
+ let!(:pdf) { PDF.create }
73
+
74
+ after do
75
+ email.destroy
76
+ pdf.destroy
77
+ image.destroy
78
+ end
79
+
80
+ it "Should not restrict relationships " do
81
+ Deprecation.should_not_receive(:warn) # a deprecation in 6.6.0 that's going away in 7.0.0
82
+ email.attachment_ids = [image.id, pdf.id]
83
+ email.reload
84
+ email.attachments.should == [image, pdf]
85
+ end
63
86
  end
64
87
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ActiveFedora::Model do
3
+ describe "scoped queries" do
4
4
 
5
5
  before(:each) do
6
6
  module ModelIntegrationSpec
@@ -30,15 +30,11 @@ describe ActiveFedora::Model do
30
30
 
31
31
 
32
32
  describe "When there is one object in the store" do
33
- before do
34
- @test_instance = ModelIntegrationSpec::Basic.new
35
- @test_instance.save
36
- end
33
+ let!(:test_instance) { ModelIntegrationSpec::Basic.create!()}
37
34
 
38
35
  after do
39
- @test_instance.delete
36
+ test_instance.delete
40
37
  end
41
-
42
38
 
43
39
  describe ".all" do
44
40
  it "should return an array of instances of the calling Class" do
@@ -54,40 +50,49 @@ describe ActiveFedora::Model do
54
50
 
55
51
  describe ".first" do
56
52
  it "should return one instance of the calling class" do
57
- ModelIntegrationSpec::Basic.first.should == @test_instance
53
+ ModelIntegrationSpec::Basic.first.should == test_instance
58
54
  end
59
55
  end
60
56
  end
61
57
 
62
58
  describe "with multiple objects" do
63
- before do
64
- @test_instance1 = ModelIntegrationSpec::Basic.create!(:foo=>'Beta', :bar=>'Chips')
65
- @test_instance2 = ModelIntegrationSpec::Basic.create!(:foo=>'Alpha', :bar=>'Peanuts')
66
- @test_instance3 = ModelIntegrationSpec::Basic.create!(:foo=>'Sigma', :bar=>'Peanuts')
67
- end
59
+ let!(:test_instance1) { ModelIntegrationSpec::Basic.create!(:foo=>'Beta', :bar=>'Chips')}
60
+ let!(:test_instance2) { ModelIntegrationSpec::Basic.create!(:foo=>'Alpha', :bar=>'Peanuts')}
61
+ let!(:test_instance3) { ModelIntegrationSpec::Basic.create!(:foo=>'Sigma', :bar=>'Peanuts')}
62
+
68
63
  after do
69
- @test_instance1.delete
70
- @test_instance2.delete
71
- @test_instance3.delete
64
+ test_instance1.delete
65
+ test_instance2.delete
66
+ test_instance3.delete
72
67
  end
73
68
  it "should query" do
74
- ModelIntegrationSpec::Basic.where(ActiveFedora::SolrService.solr_name('foo', type: :string)=> 'Beta').should == [@test_instance1]
75
- ModelIntegrationSpec::Basic.where('foo' => 'Beta').should == [@test_instance1]
69
+ ModelIntegrationSpec::Basic.where(ActiveFedora::SolrService.solr_name('foo', type: :string)=> 'Beta').should == [test_instance1]
70
+ ModelIntegrationSpec::Basic.where('foo' => 'Beta').should == [test_instance1]
76
71
  end
77
72
  it "should order" do
78
- ModelIntegrationSpec::Basic.order(ActiveFedora::SolrService.solr_name('foo', :sortable) + ' asc').should == [@test_instance2, @test_instance1, @test_instance3]
73
+ ModelIntegrationSpec::Basic.order(ActiveFedora::SolrService.solr_name('foo', :sortable) + ' asc').should == [test_instance2, test_instance1, test_instance3]
79
74
  end
80
75
  it "should limit" do
81
- ModelIntegrationSpec::Basic.limit(1).should == [@test_instance1]
76
+ ModelIntegrationSpec::Basic.limit(1).should == [test_instance1]
82
77
  end
83
78
 
84
79
  it "should chain queries" do
85
- ModelIntegrationSpec::Basic.where(ActiveFedora::SolrService.solr_name('bar', type: :string) => 'Peanuts').order(ActiveFedora::SolrService.solr_name('foo', :sortable) + ' asc').limit(1).should == [@test_instance2]
80
+ ModelIntegrationSpec::Basic.where(ActiveFedora::SolrService.solr_name('bar', type: :string) => 'Peanuts').order(ActiveFedora::SolrService.solr_name('foo', :sortable) + ' asc').limit(1).should == [test_instance2]
86
81
  end
87
82
 
88
83
  it "should chain count" do
89
84
  ModelIntegrationSpec::Basic.where(ActiveFedora::SolrService.solr_name('bar', type: :string) => 'Peanuts').count.should == 2
90
85
  end
86
+
87
+ describe "when one of the objects in solr isn't in fedora" do
88
+ it "should log an error" do
89
+ ModelIntegrationSpec::Basic.should_receive(:find_one).with(test_instance1.pid, nil).and_call_original
90
+ ModelIntegrationSpec::Basic.should_receive(:find_one).with(test_instance2.pid, nil).and_raise(ActiveFedora::ObjectNotFoundError)
91
+ ModelIntegrationSpec::Basic.should_receive(:find_one).with(test_instance3.pid, nil).and_call_original
92
+ ActiveFedora::Relation.logger.should_receive(:error).with("When trying to find_each #{test_instance2.pid}, encountered an ObjectNotFoundError. Solr may be out of sync with Fedora")
93
+ ModelIntegrationSpec::Basic.all.should == [test_instance1, test_instance3]
94
+ end
95
+ end
91
96
  end
92
97
  end
93
98
 
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: 6.6.0.rc4
4
+ version: 6.6.0.rc5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zumwalt