LoginSignup
0
0

More than 5 years have passed since last update.

minitestでSQLのUniqueを検証する

Posted at

やりたいこと

SQLite3にもユニーク制限をかけているのでそれをminitestで確認したい

環境

os:Windows 7
ruby:2.4.0
rails:5.0.2

方針

Modelにもvalidationを設定しているので直接SQLを発行して例外が発生すること検証する。

テストコード

user_test.rb
  test "Unique constraint of name by sql" do
    User.create(name: 'hoge')
    before_user_count = User.all.length
    assert_raise(ActiveRecord::RecordNotUnique, "Not find exception") do
      con = ActiveRecord::Base.connection
      con.execute("INSERT INTO users(name) VALUES('hoge')")
    end
    after_user_count = User.all.length
    assert_equal(before_user_count, after_user_count)
  end

その他

そういえば、これを実装した後にsaveのオプションにvalidate: falseがあったのを思い出した(ただし記憶は大分古い)
今のrailsでも対象のオプションが存在するならそっちを使ったほうが明らかに速い気がする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0