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