airspace 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +1 -1
- data/lib/airspace/reader.rb +8 -0
- data/lib/airspace/version.rb +1 -1
- data/spec/airspace/reader_spec.rb +78 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81e321a98d086d49ec21f49d48ce9f8b724a70ccd0b9ea6e3df106736b549b0c
|
4
|
+
data.tar.gz: d33b59a0dda864fe42d8a52ab64b1983ea4b1bade39826acdfe2957ed11bf7db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d96e783bd3dc5d828d763c123d1a8bb2abafe7c92fd0651567a0f4c47bc61b0a3026630e093322209af1e19be8e5cc7d7b008dc417e46d49d553566c7fcc114d
|
7
|
+
data.tar.gz: f0f7bca65485dc3f7550ef554c6660fafc672f311782026291389ffdaafab3be5ec119b47b37f2930d71a9d37ba8a33dfedfa36aec77146c7a9237f583a5adb7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 1.0.1 (February 22, 2019)
|
2
|
+
|
3
|
+
**Critical Bug Fix**
|
4
|
+
|
5
|
+
* Ensure Reader#page and Reader#pages work when there is a page_count of 0
|
6
|
+
* Ensure Reader#page works when number is out of bounds (out of bounds is defined as: ```number <= 0``` or ```number > page_count``` )
|
7
|
+
|
1
8
|
# 1.0.0 (February 21, 2019)
|
2
9
|
|
3
10
|
Initial Release.
|
data/Gemfile.lock
CHANGED
data/lib/airspace/reader.rb
CHANGED
@@ -66,12 +66,16 @@ module Airspace
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def pages
|
69
|
+
return [] unless page_count.positive?
|
70
|
+
|
69
71
|
store.chunks(key, chunk_count).map do |chunk|
|
70
72
|
chunk.map { |r| serializer.deserialize_row(r) }
|
71
73
|
end
|
72
74
|
end
|
73
75
|
|
74
76
|
def page(number)
|
77
|
+
return [] unless within_bounds?(number)
|
78
|
+
|
75
79
|
page_index = number - 1
|
76
80
|
location = chunker.locate(page_index)
|
77
81
|
chunk = store.chunk(key, location.chunk_index)
|
@@ -85,6 +89,10 @@ module Airspace
|
|
85
89
|
|
86
90
|
private
|
87
91
|
|
92
|
+
def within_bounds?(number)
|
93
|
+
page_count.positive? && number.positive? && number <= page_count
|
94
|
+
end
|
95
|
+
|
88
96
|
def store
|
89
97
|
::Airspace::Store.new(client)
|
90
98
|
end
|
data/lib/airspace/version.rb
CHANGED
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# Copyright (c) 2019-present, Blue Marble Payroll, LLC
|
5
|
+
#
|
6
|
+
# This source code is licensed under the MIT license found in the
|
7
|
+
# LICENSE file in the root directory of this source tree.
|
8
|
+
#
|
9
|
+
|
10
|
+
require './spec/spec_helper'
|
11
|
+
|
12
|
+
describe ::Airspace::Reader do
|
13
|
+
let(:client) { Redis.new }
|
14
|
+
|
15
|
+
let(:id) { 'reader-test-set' }
|
16
|
+
|
17
|
+
let(:options) { { prefix: TEST_PREFIX } }
|
18
|
+
|
19
|
+
let(:reader) { ::Airspace.get(client, id, options: options) }
|
20
|
+
|
21
|
+
subject { reader }
|
22
|
+
|
23
|
+
context 'with no pages' do
|
24
|
+
before(:each) do
|
25
|
+
::Airspace.set(client, id: id, options: options)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#page' do
|
29
|
+
it 'should return empty array when page_count is 0' do
|
30
|
+
expect(subject.page(1)).to eq([])
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should return empty array when number <= 0' do
|
34
|
+
expect(subject.page(-1)).to eq([])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#pages' do
|
39
|
+
it 'should return empty array when page_count is 0' do
|
40
|
+
expect(subject.pages).to eq([])
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'with pages' do
|
46
|
+
let(:pages) do
|
47
|
+
[
|
48
|
+
[
|
49
|
+
{ 'id' => 1, 'name' => 'Matt' }
|
50
|
+
]
|
51
|
+
]
|
52
|
+
end
|
53
|
+
|
54
|
+
before(:each) do
|
55
|
+
::Airspace.set(client, id: id, options: options, pages: pages)
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '#page' do
|
59
|
+
it 'should return array of rows when number <= page_count' do
|
60
|
+
expect(subject.page(1)).to eq(pages[0])
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should return empty array when number > page_count' do
|
64
|
+
expect(subject.page(2)).to eq([])
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should return empty array when number <= 0' do
|
68
|
+
expect(subject.page(-1)).to eq([])
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe '#page' do
|
73
|
+
it 'should return array of pages when page_count > 0' do
|
74
|
+
expect(subject.pages).to eq(pages)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: airspace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Ruggio
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- lib/airspace/version.rb
|
159
159
|
- spec/airspace/airspace_spec.rb
|
160
160
|
- spec/airspace/chunker_spec.rb
|
161
|
+
- spec/airspace/reader_spec.rb
|
161
162
|
- spec/airspace/store_spec.rb
|
162
163
|
- spec/spec_helper.rb
|
163
164
|
homepage: https://github.com/bluemarblepayroll/airspace
|
@@ -186,5 +187,6 @@ summary: Redis Dataset Store
|
|
186
187
|
test_files:
|
187
188
|
- spec/airspace/airspace_spec.rb
|
188
189
|
- spec/airspace/chunker_spec.rb
|
190
|
+
- spec/airspace/reader_spec.rb
|
189
191
|
- spec/airspace/store_spec.rb
|
190
192
|
- spec/spec_helper.rb
|