require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper") describe "Sequel::Dataset #set_defaults" do before do deprecated do @ds = Sequel.mock.dataset.from(:items).extension(:set_overrides).set_defaults(:x=>1) end end it "should set the default values for inserts" do @ds.insert_sql.must_equal "INSERT INTO items (x) VALUES (1)" @ds.insert_sql(:x=>2).must_equal "INSERT INTO items (x) VALUES (2)" @ds.insert_sql(:y=>2).must_match(/INSERT INTO items \([xy], [xy]\) VALUES \([21], [21]\)/) @ds.set_defaults(:y=>2).insert_sql.must_match(/INSERT INTO items \([xy], [xy]\) VALUES \([21], [21]\)/) @ds.set_defaults(:x=>2).insert_sql.must_equal "INSERT INTO items (x) VALUES (2)" end it "should set the default values for updates" do @ds.update_sql.must_equal "UPDATE items SET x = 1" @ds.update_sql(:x=>2).must_equal "UPDATE items SET x = 2" @ds.update_sql(:y=>2).must_match(/UPDATE items SET (x = 1|y = 2), (x = 1|y = 2)/) @ds.set_defaults(:y=>2).update_sql.must_match(/UPDATE items SET (x = 1|y = 2), (x = 1|y = 2)/) @ds.set_defaults(:x=>2).update_sql.must_equal "UPDATE items SET x = 2" end deprecated "should not affect String update arguments" do @ds.update_sql('y = 2').must_equal "UPDATE items SET y = 2" end # SEQUEL5: Remove unless Sequel.mock.dataset.frozen? deprecated "should have working mutation method" do @ds = Sequel.mock.dataset.from(:items).extension(:set_overrides) @ds.set_defaults!(:x=>1) @ds.insert_sql.must_equal "INSERT INTO items (x) VALUES (1)" end end end describe "Sequel::Dataset #set_overrides" do before do deprecated do @ds = Sequel.mock.dataset.from(:items).extension(:set_overrides).set_overrides(:x=>1) end end it "should override the given values for inserts" do @ds.insert_sql.must_equal "INSERT INTO items (x) VALUES (1)" @ds.insert_sql(:x=>2).must_equal "INSERT INTO items (x) VALUES (1)" @ds.insert_sql(:y=>2).must_match(/INSERT INTO items \([xy], [xy]\) VALUES \([21], [21]\)/) @ds.set_overrides(:y=>2).insert_sql.must_match(/INSERT INTO items \([xy], [xy]\) VALUES \([21], [21]\)/) @ds.set_overrides(:x=>2).insert_sql.must_equal "INSERT INTO items (x) VALUES (1)" end it "should override the given values for updates" do @ds.update_sql.must_equal "UPDATE items SET x = 1" @ds.update_sql(:x=>2).must_equal "UPDATE items SET x = 1" @ds.update_sql(:y=>2).must_match(/UPDATE items SET (x = 1|y = 2), (x = 1|y = 2)/) @ds.set_overrides(:y=>2).update_sql.must_match(/UPDATE items SET (x = 1|y = 2), (x = 1|y = 2)/) @ds.set_overrides(:x=>2).update_sql.must_equal "UPDATE items SET x = 1" end # SEQUEL5: Remove unless Sequel.mock.dataset.frozen? deprecated "should have working mutation method" do @ds = Sequel.mock.dataset.from(:items).extension(:set_overrides) @ds.set_overrides!(:x=>1) @ds.insert_sql.must_equal "INSERT INTO items (x) VALUES (1)" end end it "should consider dataset with select overrides and default a simple select all" do @ds.send(:simple_select_all?).must_equal true end end