marty 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/components/marty/grid.rb +0 -1
- data/app/models/marty/data_grid.rb +1 -4
- data/app/models/marty/grid_index_boolean.rb +1 -1
- data/app/models/marty/grid_index_int4range.rb +1 -1
- data/app/models/marty/grid_index_integer.rb +1 -1
- data/app/models/marty/grid_index_numrange.rb +1 -1
- data/db/migrate/106_make_grid_indexes_nullable.rb +10 -0
- data/lib/marty/version.rb +1 -1
- data/spec/models/data_grid_spec.rb +62 -21
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77e6182b8e9feb509b401e87c0fd8233bfa6777a
|
4
|
+
data.tar.gz: 78707cf573b3c33d872b0346a4751c38f26f14d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ca495f675cbe04547f2d885a6661f1da7cc6793bf7c9fc9a55759e24b4877df7878a032347dd3c0d81b5c5122b8cc504d47ed0560cdd2bd73ea8e0a51ece0d4
|
7
|
+
data.tar.gz: 1898fd8cd7daf7d3e7d2d0f8ed8560a45c7874339b2617291f782d005910a0d6ab8c3b68d5630c32521a597bfc27883737c4b28552a08745675742f144e5367e
|
@@ -13,7 +13,6 @@ class Marty::DataGrid < Marty::Base
|
|
13
13
|
}
|
14
14
|
|
15
15
|
ARRSEP = '|'
|
16
|
-
NULLABLE_TYPES = Set["string", "integer"]
|
17
16
|
|
18
17
|
class DataGridValidator < ActiveModel::Validator
|
19
18
|
def validate(dg)
|
@@ -195,9 +194,7 @@ class Marty::DataGrid < Marty::Base
|
|
195
194
|
where(q, v).uniq.pluck(:index)
|
196
195
|
end
|
197
196
|
|
198
|
-
if v.nil? ||
|
199
|
-
# NULLABLE_TYPES fields allow NULL key wildcards. If no match
|
200
|
-
# for key was found, try NULL.
|
197
|
+
if v.nil? || ixa.empty?
|
201
198
|
ixa = ix_class.
|
202
199
|
where(data_grid_id: group_id,
|
203
200
|
created_dt: created_dt,
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class MakeGridIndexesNullable < ActiveRecord::Migration
|
2
|
+
include Marty::Migrations
|
3
|
+
|
4
|
+
def change
|
5
|
+
change_column_null(:marty_grid_index_numranges, :key, true)
|
6
|
+
change_column_null(:marty_grid_index_int4ranges, :key, true)
|
7
|
+
change_column_null(:marty_grid_index_integers, :key, true)
|
8
|
+
change_column_null(:marty_grid_index_booleans, :key, true)
|
9
|
+
end
|
10
|
+
end
|
data/lib/marty/version.rb
CHANGED
@@ -115,6 +115,18 @@ ltv\tnumrange\th
|
|
115
115
|
|
116
116
|
>110\t>120
|
117
117
|
1.1\t1.1
|
118
|
+
EOS
|
119
|
+
|
120
|
+
Gf = <<EOS
|
121
|
+
lenient string
|
122
|
+
b\tboolean\tv
|
123
|
+
i\tinteger\tv
|
124
|
+
i4\tint4range\tv
|
125
|
+
n\tnumrange\tv
|
126
|
+
|
127
|
+
true\t1\t<10\t<10.0\tY
|
128
|
+
\t2\t\t\tM
|
129
|
+
false\t\t>10\t\tN
|
118
130
|
EOS
|
119
131
|
|
120
132
|
before(:each) do
|
@@ -177,20 +189,6 @@ EOS
|
|
177
189
|
}.to raise_error(ActiveRecord::RecordInvalid)
|
178
190
|
end
|
179
191
|
|
180
|
-
it "NULL keys are only allowed on string fields" do
|
181
|
-
g_bad = G2.sub(/1\|2/, "")
|
182
|
-
|
183
|
-
expect {
|
184
|
-
dg_from_import("G2", g_bad)
|
185
|
-
}.to raise_error(ActiveRecord::RecordInvalid)
|
186
|
-
|
187
|
-
g_bad = G2.sub(/<=80/, "")
|
188
|
-
|
189
|
-
expect {
|
190
|
-
dg_from_import("G2", g_bad)
|
191
|
-
}.to raise_error(ActiveRecord::RecordInvalid)
|
192
|
-
end
|
193
|
-
|
194
192
|
it "Unknown keys for typed grids should raise error" do
|
195
193
|
g_bad = G8.sub(/G3/, "XXXXX")
|
196
194
|
|
@@ -220,17 +218,63 @@ EOS
|
|
220
218
|
end
|
221
219
|
end
|
222
220
|
|
223
|
-
describe "
|
221
|
+
describe "lookups for infinity" do
|
222
|
+
let(:pt) { 'infinity'}
|
223
|
+
|
224
224
|
before(:each) do
|
225
225
|
["G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "Ga", "Gb",
|
226
|
-
"Gc", "Gd", "Ge"].each { |g|
|
226
|
+
"Gc", "Gd", "Ge", "Gf"].each { |g|
|
227
227
|
dg_from_import(g, "Marty::DataGridSpec::#{g}".constantize)
|
228
228
|
}
|
229
229
|
end
|
230
230
|
|
231
|
-
|
232
|
-
pt
|
231
|
+
context "should handle NULL key values" do
|
232
|
+
let(:dg) { Marty::DataGrid.lookup(pt, "Gf") }
|
233
233
|
|
234
|
+
it 'true returns Y' do
|
235
|
+
res = Marty::DataGrid.
|
236
|
+
lookup_grid(pt, dg, {"b"=>true}, true)
|
237
|
+
expect(res).to eq('Y')
|
238
|
+
end
|
239
|
+
|
240
|
+
it '13 returns N' do
|
241
|
+
res = Marty::DataGrid.
|
242
|
+
lookup_grid(pt, dg, {"i"=>13}, true)
|
243
|
+
expect(res).to eq('N')
|
244
|
+
end
|
245
|
+
|
246
|
+
it '13 & numrange 0 returns nil' do
|
247
|
+
res = Marty::DataGrid.
|
248
|
+
lookup_grid(pt, dg, {"i"=>13, "n"=>0}, true)
|
249
|
+
expect(res).to be_nil
|
250
|
+
end
|
251
|
+
|
252
|
+
it '13 & int4range 15 returns N' do
|
253
|
+
res = Marty::DataGrid.
|
254
|
+
lookup_grid(pt, dg, {"i"=>13, "i4"=>15}, true)
|
255
|
+
expect(res).to eq('N')
|
256
|
+
end
|
257
|
+
|
258
|
+
it '13 & int4range 1 returns nil' do
|
259
|
+
res = Marty::DataGrid.
|
260
|
+
lookup_grid(pt, dg, {"i"=>13, "i4"=>1}, true)
|
261
|
+
expect(res).to be_nil
|
262
|
+
end
|
263
|
+
|
264
|
+
it 'false, 3, numrange 15 returns N' do
|
265
|
+
res = Marty::DataGrid.
|
266
|
+
lookup_grid(pt, dg, {"b"=>false, "i"=>3, "n"=>15}, true)
|
267
|
+
expect(res).to eq('N')
|
268
|
+
end
|
269
|
+
|
270
|
+
it '13, numrange 15 returns N' do
|
271
|
+
res = Marty::DataGrid.
|
272
|
+
lookup_grid(pt, dg, {"i"=>13, "n"=>15}, true)
|
273
|
+
expect(res).to eq('N')
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
it "should handle non-distinct lookups" do
|
234
278
|
dg = Marty::DataGrid.lookup(pt, "Ge")
|
235
279
|
res = Marty::DataGrid.lookup_grid(pt, dg, {"ltv"=>500}, false)
|
236
280
|
|
@@ -475,7 +519,6 @@ EOS
|
|
475
519
|
end
|
476
520
|
|
477
521
|
it "should return grid data and metadata simple" do
|
478
|
-
pt = 'infinity'
|
479
522
|
expected_data = [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [1.2, 2.3, 3.4],
|
480
523
|
[4.5, 5.6, 6.7]]
|
481
524
|
expected_metadata = [{"dir"=>"v",
|
@@ -502,7 +545,6 @@ EOS
|
|
502
545
|
end
|
503
546
|
|
504
547
|
it "should return grid data and metadata multi (following)" do
|
505
|
-
pt = 'infinity'
|
506
548
|
expected_data = [[1.1, 2.2, 3.3],[4.4, 5.5, 6.6],[1.2, 2.3, 3.4],
|
507
549
|
[4.5, 5.6, nil],[11.0, 22.0, 33.0]]
|
508
550
|
expected_metadata = [{"dir"=>"v",
|
@@ -527,7 +569,6 @@ EOS
|
|
527
569
|
end
|
528
570
|
|
529
571
|
it "should return grid data and metadata multi (not following)" do
|
530
|
-
pt = 'infinity'
|
531
572
|
expected_data = [["G1"], ["G2"], ["G3"]]
|
532
573
|
expected_metadata = [{"dir"=>"v",
|
533
574
|
"attr"=>"ltv",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marty
|
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
|
- Arman Bostani
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2016-06-
|
17
|
+
date: 2016-06-20 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: pg
|
@@ -430,6 +430,7 @@ files:
|
|
430
430
|
- db/migrate/103_create_marty_grid_index_integers.rb
|
431
431
|
- db/migrate/104_create_marty_grid_index_strings.rb
|
432
432
|
- db/migrate/105_create_marty_grid_index_booleans.rb
|
433
|
+
- db/migrate/106_make_grid_indexes_nullable.rb
|
433
434
|
- db/seeds.rb
|
434
435
|
- gemini_deprecations.md
|
435
436
|
- lib/marty.rb
|