|
137 | 137 | expect(obj).not_to be_destroyed |
138 | 138 | end |
139 | 139 |
|
| 140 | + it 'uses dumped value of partition key to delete item' do |
| 141 | + klass = new_class(partition_key: { name: :published_on, type: :date }) do |
| 142 | + field :name |
| 143 | + end |
| 144 | + obj = klass.create!(published_on: '2018-10-07'.to_date, name: 'Alex') |
| 145 | + |
| 146 | + expect { |
| 147 | + described_class.execute do |txn| |
| 148 | + txn.delete obj |
| 149 | + end |
| 150 | + }.to change(klass, :count).by(-1) |
| 151 | + |
| 152 | + expect(klass.exists?(obj.published_on)).to eql false |
| 153 | + end |
| 154 | + |
| 155 | + it 'uses dumped value of sort key to delete item' do |
| 156 | + klass = new_class do |
| 157 | + range :activated_on, :date |
| 158 | + field :name |
| 159 | + end |
| 160 | + obj = klass.create!(activated_on: Date.today, name: 'Alex') |
| 161 | + |
| 162 | + expect { |
| 163 | + described_class.execute do |txn| |
| 164 | + txn.delete obj |
| 165 | + end |
| 166 | + }.to change(klass, :count).by(-1) |
| 167 | + |
| 168 | + expect(klass.exists?([[obj.id, obj.activated_on]])).to eql false |
| 169 | + end |
| 170 | + |
140 | 171 | describe 'callbacks' do |
141 | 172 | it 'does not run any callback' do |
142 | 173 | klass_with_callbacks = new_class do |
@@ -285,6 +316,37 @@ def around_destroy_callback |
285 | 316 | end |
286 | 317 | end |
287 | 318 |
|
| 319 | + it 'uses dumped value of partition key to delete item' do |
| 320 | + klass = new_class(partition_key: { name: :published_on, type: :date }) do |
| 321 | + field :name |
| 322 | + end |
| 323 | + obj = klass.create!(published_on: '2018-10-07'.to_date, name: 'Alex') |
| 324 | + |
| 325 | + expect { |
| 326 | + described_class.execute do |txn| |
| 327 | + txn.delete klass, obj.published_on |
| 328 | + end |
| 329 | + }.to change(klass, :count).by(-1) |
| 330 | + |
| 331 | + expect(klass.exists?(obj.published_on)).to eql false |
| 332 | + end |
| 333 | + |
| 334 | + it 'uses dumped value of sort key to delete item' do |
| 335 | + klass = new_class do |
| 336 | + range :activated_on, :date |
| 337 | + field :name |
| 338 | + end |
| 339 | + obj = klass.create!(activated_on: Date.today, name: 'Alex') |
| 340 | + |
| 341 | + expect { |
| 342 | + described_class.execute do |txn| |
| 343 | + txn.delete klass, obj.id, obj.activated_on |
| 344 | + end |
| 345 | + }.to change(klass, :count).by(-1) |
| 346 | + |
| 347 | + expect(klass.exists?([[obj.id, obj.activated_on]])).to eql false |
| 348 | + end |
| 349 | + |
288 | 350 | describe 'callbacks' do |
289 | 351 | it 'does not run any callback' do |
290 | 352 | klass_with_callbacks = new_class do |
|
0 commit comments