Sha256: ab628a614d7f74433b28c5489b8bb251a22b98a6ed930c517482cc318a18658b

Contents?: true

Size: 1.78 KB

Versions: 18

Compression:

Stored size: 1.78 KB

Contents

require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")

describe "Sequel::Plugins::DefaultsSetter" do
  before do
    @db = db = Sequel::Database.new
    @c = c = Class.new(Sequel::Model(db[:foo]))
    @c.instance_variable_set(:@db_schema, {:a=>{}})
    @c.plugin :defaults_setter
    @c.columns :a
    @pr = proc{|x| db.meta_def(:schema){|*| [[:a, {:ruby_default => x}]]}; c.dataset = c.dataset; c}
  end

  it "should set default value upon initialization" do
    @pr.call(2).new.values.should == {:a=>2}
  end

  it "should not mark the column as modified" do
    @pr.call(2).new.changed_columns.should == []
  end

  it "should not set a default of nil" do
    @pr.call(nil).new.values.should == {}
  end

  it "should not override a given value" do
    @pr.call(2)
    @c.new('a'=>3).values.should == {:a=>3}
    @c.new('a'=>nil).values.should == {:a=>nil}
  end

  it "should work correctly when subclassing" do
    Class.new(@pr.call(2)).new.values.should == {:a=>2}
  end

  it "should contain the default values in default_values" do
    @pr.call(2).default_values.should == {:a=>2}
    @pr.call(nil).default_values.should == {}
  end

  it "should allow modifications of default values" do
    @pr.call(2)
    @c.default_values[:a] = 3
    @c.new.values.should == {:a => 3}
  end

  it "should allow proc default values" do
    @pr.call(2)
    @c.default_values[:a] = proc{3}
    @c.new.values.should == {:a => 3}
  end

  it "should have procs that set default values set them to nil" do
    @pr.call(2)
    @c.default_values[:a] = proc{nil}
    @c.new.values.should == {:a => nil}
  end

  it "should work correctly on a model without a dataset" do
    @pr.call(2)
    c = Class.new(Sequel::Model(@db[:bar]))
    c.plugin :defaults_setter
    c.default_values.should == {:a=>2}
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
sequel-3.38.0 spec/extensions/defaults_setter_spec.rb
sequel-3.37.0 spec/extensions/defaults_setter_spec.rb
sequel-3.36.1 spec/extensions/defaults_setter_spec.rb
sequel-3.36.0 spec/extensions/defaults_setter_spec.rb
sequel-3.35.0 spec/extensions/defaults_setter_spec.rb
sequel-3.34.1 spec/extensions/defaults_setter_spec.rb
sequel-3.34.0 spec/extensions/defaults_setter_spec.rb
sequel-3.33.0 spec/extensions/defaults_setter_spec.rb
sequel-3.32.0 spec/extensions/defaults_setter_spec.rb
sequel-3.31.0 spec/extensions/defaults_setter_spec.rb
sequel-3.30.0 spec/extensions/defaults_setter_spec.rb
sequel-3.29.0 spec/extensions/defaults_setter_spec.rb
sequel-3.28.0 spec/extensions/defaults_setter_spec.rb
sequel-3.27.0 spec/extensions/defaults_setter_spec.rb
sequel-3.26.0 spec/extensions/defaults_setter_spec.rb
sequel-3.25.0 spec/extensions/defaults_setter_spec.rb
sequel-3.24.1 spec/extensions/defaults_setter_spec.rb
sequel-3.24.0 spec/extensions/defaults_setter_spec.rb