Skip to content

Commit 839bec6

Browse files
committed
Add a bunch of integration tests for dataset behavior
These helped find some minor issues with sequel_pg
1 parent 1e7cf04 commit 839bec6

File tree

1 file changed

+63
-7
lines changed

1 file changed

+63
-7
lines changed

spec/integration/dataset_test.rb

Lines changed: 63 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,13 +1450,39 @@
14501450
@db.drop_table?(:a)
14511451
end
14521452

1453+
it "should have working #each" do
1454+
a = []
1455+
@ds.each {|r| a << r}
1456+
a.must_equal [{:a=>1, :b=>2, :c=>3, :d=>4}, {:a=>5, :b=>6, :c=>7, :d=>8}]
1457+
a = []
1458+
@ds.extension(:null_dataset).nullify.each {|r| a << r}
1459+
a.must_equal([])
1460+
end
1461+
1462+
it "should have working #all" do
1463+
@ds.all.must_equal [{:a=>1, :b=>2, :c=>3, :d=>4}, {:a=>5, :b=>6, :c=>7, :d=>8}]
1464+
@ds.all{|r| r[:a] += 1}.must_equal [{:a=>2, :b=>2, :c=>3, :d=>4}, {:a=>6, :b=>6, :c=>7, :d=>8}]
1465+
@ds.with_row_proc(proc{|r| r[:a] += 1; r}).all.must_equal [{:a=>2, :b=>2, :c=>3, :d=>4}, {:a=>6, :b=>6, :c=>7, :d=>8}]
1466+
@ds.with_row_proc(proc{|r| r[:a] += 1; r}).all{|r| r[:a] *= 4}.must_equal [{:a=>8, :b=>2, :c=>3, :d=>4}, {:a=>24, :b=>6, :c=>7, :d=>8}]
1467+
@ds.extension(:null_dataset).nullify.all.must_equal([])
1468+
Sequel::Model(@ds).dataset.extension(:null_dataset).nullify.all.must_equal([])
1469+
end
1470+
14531471
it "should have working #map" do
1472+
@ds.map(:x).must_equal [nil, nil]
14541473
@ds.map(:a).must_equal [1, 5]
14551474
@ds.map(:b).must_equal [2, 6]
14561475
@ds.map([:a, :b]).must_equal [[1, 2], [5, 6]]
1476+
null_ds = @ds.extension(:null_dataset).nullify
1477+
null_ds.map(:a).must_equal([])
1478+
null_ds.map([:a, :b]).must_equal([])
14571479
end
14581480

14591481
it "should have working #as_hash" do
1482+
@ds.to_hash(:x, :x).must_equal(nil=>nil)
1483+
@ds.to_hash(:x, [:x]).must_equal(nil=>[nil])
1484+
@ds.to_hash([:x], :x).must_equal([nil]=>nil)
1485+
@ds.to_hash([:x], [:x]).must_equal([nil]=>[nil])
14601486
@ds.to_hash(:a).must_equal(1=>{:a=>1, :b=>2, :c=>3, :d=>4}, 5=>{:a=>5, :b=>6, :c=>7, :d=>8})
14611487
@ds.as_hash(:a).must_equal(1=>{:a=>1, :b=>2, :c=>3, :d=>4}, 5=>{:a=>5, :b=>6, :c=>7, :d=>8})
14621488
@ds.as_hash(:b).must_equal(2=>{:a=>1, :b=>2, :c=>3, :d=>4}, 6=>{:a=>5, :b=>6, :c=>7, :d=>8})
@@ -1466,14 +1492,22 @@
14661492
@ds.as_hash([:a, :c], :b).must_equal([1, 3]=>2, [5, 7]=>6)
14671493
@ds.as_hash(:a, [:b, :c]).must_equal(1=>[2, 3], 5=>[6, 7])
14681494
@ds.as_hash([:a, :c], [:b, :d]).must_equal([1, 3]=>[2, 4], [5, 7]=>[6, 8])
1469-
@ds.extension(:null_dataset).nullify.as_hash([:a, :c], [:b, :d]).must_equal({})
1495+
null_ds = @ds.extension(:null_dataset).nullify
1496+
null_ds.as_hash(:a, :b).must_equal({})
1497+
null_ds.as_hash([:a, :c], :b).must_equal({})
1498+
null_ds.as_hash(:a, [:b, :d]).must_equal({})
1499+
null_ds.as_hash([:a, :c], [:b, :d]).must_equal({})
14701500

14711501
@ds.as_hash(:a, :b, :hash => (tmp = {})).must_be_same_as(tmp)
14721502
end
14731503

14741504
it "should have working #to_hash_groups" do
14751505
ds = @ds.order(*@ds.columns)
14761506
wait{ds.insert(1, 2, 3, 9)}
1507+
@ds.to_hash_groups(:x, :x).must_equal(nil=>[nil]*3)
1508+
@ds.to_hash_groups(:x, [:x]).must_equal(nil=>[[nil]]*3)
1509+
@ds.to_hash_groups([:x], :x).must_equal([nil]=>[nil]*3)
1510+
@ds.to_hash_groups([:x], [:x]).must_equal([nil]=>[[nil]]*3)
14771511
ds.to_hash_groups(:a).must_equal(1=>[{:a=>1, :b=>2, :c=>3, :d=>4}, {:a=>1, :b=>2, :c=>3, :d=>9}], 5=>[{:a=>5, :b=>6, :c=>7, :d=>8}])
14781512
ds.to_hash_groups(:b).must_equal(2=>[{:a=>1, :b=>2, :c=>3, :d=>4}, {:a=>1, :b=>2, :c=>3, :d=>9}], 6=>[{:a=>5, :b=>6, :c=>7, :d=>8}])
14791513
ds.to_hash_groups([:a, :b]).must_equal([1, 2]=>[{:a=>1, :b=>2, :c=>3, :d=>4}, {:a=>1, :b=>2, :c=>3, :d=>9}], [5, 6]=>[{:a=>5, :b=>6, :c=>7, :d=>8}])
@@ -1482,23 +1516,33 @@
14821516
ds.to_hash_groups([:a, :c], :d).must_equal([1, 3]=>[4, 9], [5, 7]=>[8])
14831517
ds.to_hash_groups(:a, [:b, :d]).must_equal(1=>[[2, 4], [2, 9]], 5=>[[6, 8]])
14841518
ds.to_hash_groups([:a, :c], [:b, :d]).must_equal([1, 3]=>[[2, 4], [2, 9]], [5, 7]=>[[6, 8]])
1485-
@ds.extension(:null_dataset).nullify.to_hash_groups([:a, :c], [:b, :d]).must_equal({})
1519+
null_ds = @ds.extension(:null_dataset).nullify
1520+
null_ds.to_hash_groups(:a, :b).must_equal({})
1521+
null_ds.to_hash_groups([:a, :c], :b).must_equal({})
1522+
null_ds.to_hash_groups(:a, [:b, :d]).must_equal({})
1523+
null_ds.to_hash_groups([:a, :c], [:b, :d]).must_equal({})
14861524

14871525
ds.to_hash_groups(:a, :d, :hash => (tmp = {})).must_be_same_as(tmp)
14881526
end
14891527

14901528
it "should have working #as_set" do
1529+
@ds.as_set(:x).must_equal Set[nil]
14911530
@ds.as_set(:a).must_equal Set[1, 5]
14921531
@ds.as_set(:b).must_equal Set[2, 6]
14931532
@ds.as_set([:a, :b]).must_equal Set[[1, 2], [5, 6]]
1533+
null_ds = @ds.extension(:null_dataset).nullify
1534+
null_ds.as_set(:a).must_equal Set[]
1535+
null_ds.as_set([:a, :b]).must_equal Set[]
14941536
end
14951537

14961538
it "should have working #select_map" do
14971539
@ds.select_map(:a).must_equal [1, 5]
14981540
@ds.select_map(:b).must_equal [2, 6]
14991541
@ds.select_map([:a]).must_equal [[1], [5]]
15001542
@ds.select_map([:a, :b]).must_equal [[1, 2], [5, 6]]
1501-
@ds.extension(:null_dataset).nullify.select_map([:a, :b]).must_equal []
1543+
null_ds = @ds.extension(:null_dataset).nullify
1544+
null_ds.select_map(:a).must_equal []
1545+
null_ds.select_map([:a, :b]).must_equal []
15021546

15031547
@ds.select_map(Sequel[:a].as(:e)).must_equal [1, 5]
15041548
@ds.select_map(Sequel[:b].as(:e)).must_equal [2, 6]
@@ -1516,7 +1560,9 @@
15161560
@ds.select_order_map(Sequel.qualify(:a, :b).as(:e)).must_equal [2, 6]
15171561
@ds.select_order_map([:a]).must_equal [[1], [5]]
15181562
@ds.select_order_map([Sequel.desc(:a), :b]).must_equal [[5, 6], [1, 2]]
1519-
@ds.extension(:null_dataset).nullify.select_order_map(:a).must_equal []
1563+
null_ds = @ds.extension(:null_dataset).nullify
1564+
null_ds.select_order_map(:a).must_equal []
1565+
null_ds.select_order_map([:a, :b]).must_equal []
15201566

15211567
@ds.select_order_map(Sequel[:a].as(:e)).must_equal [1, 5]
15221568
@ds.select_order_map(Sequel[:b].as(:e)).must_equal [2, 6]
@@ -1537,7 +1583,11 @@
15371583
@ds.select_hash(:a, [:b, :c]).must_equal(1=>[2, 3], 5=>[6, 7])
15381584
@ds.select_hash([:a, :c], [:b, :d]).must_equal([1, 3]=>[2, 4], [5, 7]=>[6, 8])
15391585
@ds.select_hash(:a, :b, :hash => (tmp = {})).must_be_same_as(tmp)
1540-
@ds.extension(:null_dataset).nullify.select_hash(:a, :b).must_equal({})
1586+
null_ds = @ds.extension(:null_dataset).nullify
1587+
null_ds.select_hash(:a, :b).must_equal({})
1588+
null_ds.select_hash([:a, :c], :b).must_equal({})
1589+
null_ds.select_hash(:a, [:b, :d]).must_equal({})
1590+
null_ds.select_hash([:a, :c], [:b, :d]).must_equal({})
15411591
end
15421592

15431593
it "should have working #select_hash_groups" do
@@ -1552,15 +1602,21 @@
15521602
ds.select_hash_groups(:a, [:b, :d]).must_equal(1=>[[2, 4], [2, 9]], 5=>[[6, 8]])
15531603
ds.select_hash_groups([:a, :c], [:b, :d]).must_equal([1, 3]=>[[2, 4], [2, 9]], [5, 7]=>[[6, 8]])
15541604
ds.select_hash_groups(:a, :d, :hash => (tmp = {})).must_be_same_as(tmp)
1555-
@ds.extension(:null_dataset).nullify.select_hash_groups(:a, :d).must_equal({})
1605+
null_ds = @ds.extension(:null_dataset).nullify
1606+
null_ds.select_hash_groups(:a, :b).must_equal({})
1607+
null_ds.select_hash_groups([:a, :c], :b).must_equal({})
1608+
null_ds.select_hash_groups(:a, [:b, :d]).must_equal({})
1609+
null_ds.select_hash_groups([:a, :c], [:b, :d]).must_equal({})
15561610
end
15571611

15581612
it "should have working #select_set" do
15591613
@ds.select_set(:a).must_equal Set[1, 5]
15601614
@ds.select_set(:b).must_equal Set[2, 6]
15611615
@ds.select_set([:a]).must_equal Set[[1], [5]]
15621616
@ds.select_set([:a, :b]).must_equal Set[[1, 2], [5, 6]]
1563-
@ds.extension(:null_dataset).nullify.select_set([:a, :b]).must_equal Set[]
1617+
null_ds = @ds.extension(:null_dataset).nullify
1618+
null_ds.select_set(:a).must_equal Set[]
1619+
null_ds.select_set([:a, :b]).must_equal Set[]
15641620

15651621
@ds.select_set(Sequel[:a].as(:e)).must_equal Set[1, 5]
15661622
@ds.select_set(Sequel[:b].as(:e)).must_equal Set[2, 6]

0 commit comments

Comments
 (0)