spec/model/dataset_methods_spec.rb in sequel-3.38.0 vs spec/model/dataset_methods_spec.rb in sequel-3.39.0
- old
+ new
@@ -67,5 +67,43 @@
it "should raise an error if the class doesn't have a primary key" do
@c.no_primary_key
proc{@d.to_hash}.should raise_error(Sequel::Error)
end
end
+
+describe Sequel::Model::DatasetMethods, "#join_table" do
+ before do
+ @c = Class.new(Sequel::Model(:items))
+ end
+
+ specify "should allow use to use a model class when joining" do
+ @c.join(Class.new(Sequel::Model(:categories)), :item_id => :id).sql.should == 'SELECT * FROM items INNER JOIN categories ON (categories.item_id = items.id)'
+ end
+
+ specify "should handle model classes that aren't simple selects using a subselect" do
+ @c.join(Class.new(Sequel::Model(MODEL_DB[:categories].where(:foo=>1))), :item_id => :id).sql.should == 'SELECT * FROM items INNER JOIN (SELECT * FROM categories WHERE (foo = 1)) AS t1 ON (t1.item_id = items.id)'
+ end
+end
+
+describe Sequel::Model::DatasetMethods, "#graph" do
+ before do
+ @c = Class.new(Sequel::Model(:items))
+ @c.columns :id
+ end
+
+ specify "should allow use to use a model class when joining" do
+ c = Class.new(Sequel::Model(:categories))
+ c.columns :id
+ @c.graph(c, :item_id => :id).sql.should == 'SELECT items.id, categories.id AS categories_id FROM items LEFT OUTER JOIN categories ON (categories.item_id = items.id)'
+ end
+end
+
+describe Sequel::Model::DatasetMethods, "#insert_sql" do
+ before do
+ @c = Class.new(Sequel::Model(:items))
+ @c.columns :id
+ end
+
+ specify "should handle a single model instance as an argument" do
+ @c.insert_sql(@c.load(:id=>1)).should == 'INSERT INTO items (id) VALUES (1)'
+ end
+end