spec/adapters/sqlite_spec.rb in sequel-4.29.0 vs spec/adapters/sqlite_spec.rb in sequel-4.30.0
- old
+ new
@@ -369,9 +369,44 @@
@d.filter(:name => 'xxx').update(:value => 23).must_equal 0
end
end
+describe "SQLite::Dataset#insert_conflict" do
+ before(:all) do
+ DB.create_table! :ic_test do
+ primary_key :id
+ String :name
+ end
+ end
+
+ after(:each) do
+ DB[:ic_test].delete
+ end
+
+ after(:all) do
+ DB.drop_table?(:ic_test)
+ end
+
+ it "Dataset#insert_ignore and insert_constraint should ignore uniqueness violations" do
+ DB[:ic_test].insert(:id => 1, :name => "one")
+ proc {DB[:ic_test].insert(:id => 1, :name => "one")}.must_raise Sequel::ConstraintViolation
+
+ DB[:ic_test].insert_ignore.insert(:id => 1, :name => "one")
+ DB[:ic_test].all.must_equal([{:id => 1, :name => "one"}])
+
+ DB[:ic_test].insert_conflict(:ignore).insert(:id => 1, :name => "one")
+ DB[:ic_test].all.must_equal([{:id => 1, :name => "one"}])
+ end
+
+ it "Dataset#insert_constraint should handle replacement" do
+ DB[:ic_test].insert(:id => 1, :name => "one")
+
+ DB[:ic_test].insert_conflict(:replace).insert(:id => 1, :name => "two")
+ DB[:ic_test].all.must_equal([{:id => 1, :name => "two"}])
+ end
+end
+
describe "SQLite dataset" do
before do
DB.create_table! :test do
primary_key :id
String :name