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