deferring 0.2.0 → 0.2.1

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: 9640c37fd475fa2857be6686a2f2b726a4f6a6ef
4
- data.tar.gz: dfd12c320ff1fdcd8f2331a6b3180c473a894524
3
+ metadata.gz: c9b6ed1d51be050d082becdaf18fe2d600e12d56
4
+ data.tar.gz: 1fc0c0a26468c3468d6d776db928c907b38d9451
5
5
  SHA512:
6
- metadata.gz: b8b85bcb7252d0af7f901ea97db87b1b0556ab3061f43d8dd9fa37b5dcc431cd59878a4dd0300571b241036f072a06d6a17d26db6374c0ce30712b2455952844
7
- data.tar.gz: a614b0996a14b2ba60b5faa317e9f1d481685442c333dcb459b87f7240fc8b3e8df2a91c237188615a82fd5dcfca4fe62def66ca7ba05afe1ca57e90135f48bb
6
+ metadata.gz: 2db20181a7dd8bae3dea6c419280face512e311d6c29cc9016e92699d053c2ae464807b3586531f41ea40e5ed81ad236a6e0dd43f0c7289ddf67b0ebba886c82
7
+ data.tar.gz: 9d39513277df77e0d71a0728bc44af4737b72010b75617795b5c6ba4b9a1bce674a0ced3dfdae75a92288a38e47032c88b35bf9703c57b74206965f099bab9f4
data/lib/deferring.rb CHANGED
@@ -86,10 +86,8 @@ module Deferring
86
86
 
87
87
  # TODO: Implement value_to_boolean code from rails for checking _destroy field.
88
88
  if attributes['_destroy'] == '1' && options[:allow_destroy]
89
- # remove from existing records and mark for destruction upon
90
- # saving
91
- send(:"#{association_name}").delete(existing_record)
92
- existing_record.mark_for_destruction
89
+ # remove from existing records
90
+ send(:"#{association_name}").destroy(existing_record)
93
91
  end
94
92
  end
95
93
 
@@ -86,7 +86,7 @@ module Deferring
86
86
  end
87
87
 
88
88
  def objects=(records)
89
- @objects = records.map do |record|
89
+ @objects = records.compact.map do |record|
90
90
  if inverse_name && record.class.reflect_on_association(inverse_name)
91
91
  record.send(:"#{inverse_name}=", parent_record)
92
92
  end
@@ -109,7 +109,7 @@ module Deferring
109
109
  def <<(*records)
110
110
  # TODO: Do we want to prevent including the same object twice? Not sure,
111
111
  # but it will probably be filtered after saving and retrieving as well.
112
- records.flatten.uniq.each do |record|
112
+ records.flatten.compact.uniq.each do |record|
113
113
  run_deferring_callbacks(:link, record) do
114
114
  if inverse_name && record.class.reflect_on_association(inverse_name)
115
115
  record.send(:"#{inverse_name}=", parent_record)
@@ -125,14 +125,14 @@ module Deferring
125
125
  alias_method :append, :<<
126
126
 
127
127
  def delete(*records)
128
- records.flatten.uniq.each do |record|
128
+ records.flatten.compact.uniq.each do |record|
129
129
  run_deferring_callbacks(:unlink, record) { objects.delete(record) }
130
130
  end
131
131
  self
132
132
  end
133
133
 
134
134
  def destroy(*records)
135
- records.flatten.uniq.each do |record|
135
+ records.flatten.compact.uniq.each do |record|
136
136
  record = record.to_i if record.is_a? String
137
137
  record = objects.detect { |o| o.id == record } if record.is_a? Fixnum
138
138
 
@@ -1,5 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  module Deferring
4
- VERSION = '0.2.0'
4
+ VERSION = '0.2.1'
5
5
  end
@@ -54,6 +54,20 @@ RSpec.describe 'deferred has_and_belongs_to_many associations' do
54
54
  expect{ bob.save }.to change{ Person.find(bob.id).teams.size }.from(0).to(2)
55
55
  end
56
56
 
57
+ it 'drops nil records' do
58
+ bob.teams << nil
59
+ expect(bob.teams).to be_empty
60
+
61
+ bob.teams = [nil]
62
+ expect(bob.teams).to be_empty
63
+
64
+ bob.teams.delete(nil)
65
+ expect(bob.teams).to be_empty
66
+
67
+ bob.teams.destroy(nil)
68
+ expect(bob.teams).to be_empty
69
+ end
70
+
57
71
  describe '#collection_singular_ids' do
58
72
 
59
73
  it 'returns ids of saved & unsaved associated records' do
@@ -49,6 +49,20 @@ RSpec.describe 'deferred has_many associations' do
49
49
  expect(bob.issues.first.person).to eq bob
50
50
  end
51
51
 
52
+ it 'drops nil records' do
53
+ bob.issues << nil
54
+ expect(bob.issues).to be_empty
55
+
56
+ bob.issues = [nil]
57
+ expect(bob.issues).to be_empty
58
+
59
+ bob.issues.delete(nil)
60
+ expect(bob.issues).to be_empty
61
+
62
+ bob.issues.destroy(nil)
63
+ expect(bob.issues).to be_empty
64
+ end
65
+
52
66
  describe 'validations' do
53
67
  xit 'does not create a link when parent is not valid'
54
68
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deferring
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Roestenburg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-10 00:00:00.000000000 Z
11
+ date: 2015-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord