1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
require_relative "spec_helper"
describe "null_dataset extension" do
before do
@db = Sequel::mock(:fetch=>{:id=>1}, :autoid=>1, :numrows=>1, :columns=>[:id]).extension(:null_dataset)
@ds = @db[:table].nullify
@i = 0
@pr = proc{|*a| @i += 1}
end
after do
@db.sqls.must_equal [] unless @skip_check
end
it "should make each be a noop" do
@ds.each(&@pr).must_be_same_as(@ds)
@i.must_equal 0
end
it "should make fetch_rows be a noop" do
@ds.fetch_rows("SELECT 1", &@pr).must_be_nil
@i.must_equal 0
end
it "nullify should be a cached dataset" do
ds = @db[:table]
ds.nullify.object_id.must_equal(ds.nullify.object_id)
end
it "should make insert be a noop" do
@ds.insert(1).must_be_nil
end
it "should make update be a noop" do
@ds.update(:a=>1).must_equal 0
end
it "should make delete be a noop" do
@ds.delete.must_equal 0
end
it "should make truncate be a noop" do
@ds.truncate.must_be_nil
end
it "should make execute_* be a noop" do
@ds.send(:execute_ddl,'FOO').must_be_nil
@ds.send(:execute_insert,'FOO').must_be_nil
@ds.send(:execute_dui,'FOO').must_be_nil
@ds.send(:execute,'FOO').must_be_nil
end
it "should have working columns" do
@skip_check = true
2.times do
@ds.columns.must_equal [:id]
end
@db.sqls.must_equal ['SELECT * FROM table LIMIT 1']
end
it "should have count return 0" do
@ds.count.must_equal 0
end
it "should have empty return true" do
@ds.empty?.must_equal true
end
it "should make import a noop" do
@ds.import([:id], [[1], [2], [3]]).must_be_nil
end
it "should have nullify method returned modified receiver" do
@skip_check = true
ds = @db[:table]
ds.nullify.wont_be_same_as(ds)
ds.each(&@pr)
@db.sqls.must_equal ['SELECT * FROM table']
@i.must_equal 1
end
it "should work with method chaining" do
@ds.where(:a=>1).select(:b).each(&@pr)
@i.must_equal 0
end
end
|