active-fedora 6.6.0.rc4 → 6.6.0.rc5

Sign up to get free protection for your applications and to get access to all the features.
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