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
|
require_relative "spec_helper"
describe "Sequel::Plugins::SplitValues" do
before do
@c = Class.new(Sequel::Model(:a))
@c.columns :id, :x
@c.plugin :split_values
end
it "stores non-columns in a separate hash" do
@c.dataset = @c.dataset.with_fetch(:id=>1, :x=>2, :y=>3)
o = @c.first
@c.db.reset
o.must_equal @c.load(:id=>1, :x=>2)
o[:id].must_equal 1
o[:x].must_equal 2
o[:y].must_equal 3
{@c.load(:id=>1, :x=>2)=>4}[o].must_equal 4
o.values.must_equal(:id=>1, :x=>2)
o.save
@c.db.sqls.must_equal ["UPDATE a SET x = 2 WHERE (id = 1)"]
end
it "handles false values" do
@c.dataset = @c.dataset.with_fetch(:id=>1, :x=>false, :y=>3)
o = @c.first
@c.db.reset
o.must_equal @c.load(:id=>1, :x=>false)
o[:id].must_equal 1
o[:x].must_equal false
o[:y].must_equal 3
{@c.load(:id=>1, :x=>false)=>4}[o].must_equal 4
o.values.must_equal(:id=>1, :x=>false)
o.save
@c.db.sqls.must_equal ["UPDATE a SET x = 'f' WHERE (id = 1)"]
end
it "handles nil values" do
@c.dataset = @c.dataset.with_fetch(:id=>1, :x=>nil, :y=>3)
o = @c.first
@c.db.reset
o.must_equal @c.load(:id=>1, :x=>nil)
o[:id].must_equal 1
o[:x].must_be_nil
o[:y].must_equal 3
{@c.load(:id=>1, :x=>nil)=>4}[o].must_equal 4
o.values.must_equal(:id=>1, :x=>nil)
o.save
@c.db.sqls.must_equal ["UPDATE a SET x = NULL WHERE (id = 1)"]
end
end
|