Skip to content

Commit b4d546c

Browse files
committed
Synchronize spec/dynamoid/criteria_new_spec.rb and spec/dynamoid/criteria_spec.rb files
1 parent 47e06f7 commit b4d546c

3 files changed

Lines changed: 246 additions & 297 deletions

File tree

spec/dynamoid/criteria/chain_spec.rb

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1586,34 +1586,39 @@ def request_params
15861586
end
15871587

15881588
describe '#find_by_pages' do
1589-
let(:model) do
1590-
new_class do
1591-
self.range_key = :range
1589+
it 'yields one page at a time' do
1590+
klass = new_class do
1591+
range :range
15921592
field :city
15931593
field :age, :number
15941594
field :range, :number
15951595
field :data
15961596
end
1597-
end
15981597

1599-
before do
16001598
120.times do |i|
1601-
model.create(
1602-
id: '1',
1603-
range: i.to_f,
1604-
age: i.to_f,
1605-
data: 'A' * 1024 * 16
1606-
)
1599+
klass.create(id: '1', range: i.to_f, age: i.to_f, data: 'A' * 1024 * 16)
16071600
end
1608-
end
16091601

1610-
it 'yields one page at a time' do
1611-
expect { |b| model.where(id: '1').find_by_pages(&b) }.to yield_successive_args(
1612-
[all(be_a(model)), { last_evaluated_key: an_instance_of(Hash) }],
1613-
[all(be_a(model)), { last_evaluated_key: nil }],
1602+
expect { |b| klass.where(id: '1').find_by_pages(&b) }.to yield_successive_args(
1603+
[all(be_a(klass)), { last_evaluated_key: an_instance_of(Hash) }],
1604+
[all(be_a(klass)), { last_evaluated_key: nil }],
16141605
)
16151606
end
16161607

1608+
it 'returns :last_evaluated_key which may be used to restart iteration' do
1609+
klass = new_class do
1610+
field :name
1611+
end
1612+
1613+
# Creates exactly 2 full pages
1614+
58.times { klass.create!(name: SecureRandom.uuid * 1024) }
1615+
1616+
first_page, first_page_meta = klass.find_by_pages.first
1617+
second_page, = klass.start(first_page_meta[:last_evaluated_key]).find_by_pages.first
1618+
1619+
expect(first_page & second_page).to be_empty
1620+
end
1621+
16171622
describe 'callbacks' do
16181623
it 'runs after_initialize callback' do
16191624
klass_with_callback = new_class do
@@ -2895,4 +2900,34 @@ def request_params
28952900
end
28962901
end
28972902
end
2903+
2904+
describe '#consistent' do
2905+
it 'sends ConsistentRead attribute in Query request' do
2906+
klass = new_class do
2907+
range :name
2908+
end
2909+
klass.create_table
2910+
2911+
expect {
2912+
described_class.new(klass).where(id: '1', name: 'Alex').consistent.all.to_a
2913+
}.to send_request_matching(:Query, { ConsistentRead: true })
2914+
2915+
expect {
2916+
described_class.new(klass).where(id: '1', name: 'Alex').all.to_a
2917+
}.not_to send_request_matching(:Query, { ConsistentRead: true })
2918+
end
2919+
2920+
it 'sends ConsistentRead attribute in Scan request' do
2921+
klass = new_class do
2922+
range :name
2923+
end
2924+
klass.create_table
2925+
2926+
chain = described_class.new(klass)
2927+
2928+
expect {
2929+
described_class.new(klass).where(name: 'Alex').consistent.all.to_a
2930+
}.to send_request_matching(:Scan, { ConsistentRead: true })
2931+
end
2932+
end
28982933
end

spec/dynamoid/criteria_new_spec.rb

Lines changed: 0 additions & 182 deletions
This file was deleted.

0 commit comments

Comments
 (0)