spec/adapters/sqlite_spec.rb in sequel-3.14.0 vs spec/adapters/sqlite_spec.rb in sequel-3.15.0

- old
+ new

@@ -7,12 +7,14 @@ INTEGRATION_DB = SQLITE_DB unless defined?(INTEGRATION_DB) context "An SQLite database" do before do @db = SQLITE_DB + @fk = @db.foreign_keys end after do + @db.foreign_keys = @fk Sequel.datetime_class = Time end if SQLITE_DB.auto_vacuum == :none specify "should support getting pragma values" do @@ -323,14 +325,42 @@ # don't get messed up when we recreate the database. @db[:test3] << { :name => "foo", :value => 1} @db[:test3] << { :name => "foo", :value => 2} @db[:test3] << { :name => "foo", :value => 3} @db[:test3].filter(:id => 2).delete - + @db.drop_column :test3, :value @db['PRAGMA table_info(?)', :test3][:id][:pk].to_i.should == 1 @db[:test3].select(:id).all.should == [{:id => 1}, {:id => 3}] + end + + if SQLITE_DB.foreign_keys + specify "should keep foreign keys when dropping a column" do + @db.create_table! :test do + primary_key :id + String :name + Integer :value + end + @db.create_table! :test3 do + String :name + Integer :value + foreign_key :test_id, :test, :on_delete => :set_null, :on_update => :cascade + end + + @db[:test3].insert(:name => "abc", :test_id => @db[:test].insert(:name => "foo", :value => 3)) + @db[:test3].insert(:name => "def", :test_id => @db[:test].insert(:name => "bar", :value => 4)) + + @db.drop_column :test3, :value + + @db[:test].filter(:name => 'bar').delete + @db[:test3][:name => 'def'][:test_id].should be_nil + + @db[:test].filter(:name => 'foo').update(:id=>100) + @db[:test3][:name => 'abc'][:test_id].should == 100 + + @db.drop_table :test, :test3 + end end specify "should support rename_column operations" do @db[:test2].delete @db.add_column :test2, :xyz, :text