spec/integration/plugin_test.rb in sequel-4.31.0 vs spec/integration/plugin_test.rb in sequel-4.32.0
- old
+ new
@@ -1300,10 +1300,15 @@
album.tag_pks.must_equal []
album.tag_pks = [@t1, @t2]
album.tag_pks.must_equal [@t1, @t2]
album.save
album_class.with_pk!(album.pk).tag_pks.sort.must_equal [@t1, @t2]
+
+ album.tag_pks = []
+ album.tag_pks.must_equal []
+ album.save
+ album_class.with_pk!(album.pk).tag_pks.sort.must_equal []
end
it "should handle :delay=>:all association option for existing instances" do
album_class = Class.new(Album)
album_class.many_to_many :tags, :clone=>:tags, :delay_pks=>:always, :join_table=>:albums_tags, :left_key=>:album_id
@@ -1311,10 +1316,15 @@
album.tag_pks.sort.must_equal [@t1, @t2, @t3]
album.tag_pks = [@t1, @t2]
album.tag_pks.must_equal [@t1, @t2]
album.save_changes
album_class.with_pk!(album.pk).tag_pks.sort.must_equal [@t1, @t2]
+
+ album.tag_pks = []
+ album.tag_pks.must_equal []
+ album.save_changes
+ album_class.with_pk!(album.pk).tag_pks.sort.must_equal []
end
it "should set associated pks correctly for a one_to_many association" do
Artist.use_transactions = true
Album.order(:id).select_map(:artist_id).must_equal [@ar1, @ar1, @ar1]
@@ -1328,10 +1338,13 @@
Album.order(:id).select_map(:artist_id).must_equal [@ar1, nil, @ar2]
Artist[@ar1].album_pks = [@al1, @al2]
Artist[@ar2].album_pks.must_equal [@al3]
Album.order(:id).select_map(:artist_id).must_equal [@ar1, @ar1, @ar2]
+
+ Artist[@ar1].album_pks = []
+ Album.order(:id).select_map(:artist_id).must_equal [nil, nil, @ar2]
end
it "should set associated pks correctly for a many_to_many association" do
Artist.use_transactions = true
@db[:albums_tags].filter(:album_id=>@al1).select_order_map(:tag_id).must_equal [@t1, @t2, @t3]
@@ -1367,10 +1380,13 @@
Vocalist.order(:first, :last).select_map(:album_id).must_equal [@al1, nil, @al2]
Album[@al1].vocalist_pks = [@v1, @v2]
Album[@al2].vocalist_pks.must_equal [@v3]
Vocalist.order(:first, :last).select_map(:album_id).must_equal [@al1, @al1, @al2]
+
+ Album[@al1].vocalist_pks = []
+ Vocalist.order(:first, :last).select_map(:album_id).must_equal [nil, nil, @al2]
end
it "should set associated right-side cpks correctly for a many_to_many association" do
Album.use_transactions = true
Album.many_to_many :vocalists, :join_table=>:albums_vocalists, :right_key=>[:first, :last], :order=>:first
@@ -1408,10 +1424,13 @@
Instrument.order(:id).select_map([:first, :last]).must_equal [@v1, [nil, nil], @v2]
Vocalist[@v1].instrument_pks = [@i1, @i2]
Vocalist[@v2].instrument_pks.must_equal [@i3]
Instrument.order(:id).select_map([:first, :last]).must_equal [@v1, @v1, @v2]
+
+ Vocalist[@v1].instrument_pks = []
+ Instrument.order(:id).select_map([:first, :last]).must_equal [[nil, nil], [nil, nil], @v2]
end
it "should set associated pks correctly with left-side cpks for a many_to_many association" do
Vocalist.use_transactions = true
Vocalist.many_to_many :instruments, :join_table=>:vocalists_instruments, :left_key=>[:first, :last], :order=>:id
@@ -1449,9 +1468,12 @@
Hit.order(:year, :week).select_map([:first, :last]).must_equal [@v1, [nil, nil], @v2]
Vocalist[@v1].hit_pks = [@h1, @h2]
Vocalist[@v2].hit_pks.must_equal [@h3]
Hit.order(:year, :week).select_map([:first, :last]).must_equal [@v1, @v1, @v2]
+
+ Vocalist[@v1].hit_pks = []
+ Hit.order(:year, :week).select_map([:first, :last]).must_equal [[nil, nil], [nil, nil], @v2]
end
it "should set associated right-side cpks correctly with left-side cpks for a many_to_many association" do
Vocalist.use_transactions = true
Vocalist.many_to_many :hits, :join_table=>:vocalists_hits, :left_key=>[:first, :last], :right_key=>[:year, :week], :order=>:week