ぞえの技術めも

Ruby on Rails勉強中

【80日目】【1日20分のRailsチュートリアル】【第8章】テスト用ユーザーを準備する

Ruby on Railsチュートリアル(第3版)

今日は「8.2.4 レイアウトの変更をテストする」から。

8.2.4 レイアウトの変更をテストする

  1. ログイン用のパスを開く
  2. セッション用パスに有効な情報をpostする
  3. ログイン用リンクが表示されなくなったことを確認する
  4. ログアウト用リンクが表示されていることを確認する
  5. プロフィール用リンクが表示されていることを確認する

上記の操作手順をテストで記述して確認できるようにするそう。

上の変更を確認するためには、テスト時に登録済みユーザーとしてログインしておく必要があります。
(中略)
Railsでは、このようなテスト用データをフィクスチャで作成できます。

フィクスチャがよく分からないけどとりあえずテスト用データ作成する。

図6.8のデータモデルをもう一度見てみると、password_digest属性をユーザーのフィクスチャに追加すればよいことがわかります。そのために、digestメソッドを独自に定義することにします。

パスワードの文字列をそのままデータベースに保存はしていなくて、password_digest属性を指定する必要があるからdigestメソッドが必要ってことかな。

フィクスチャ向けのパスワードのハッシュ値生成メソッドを作成する。

app/models/user.rb

  :
  # 与えられた文字列のハッシュ値を返す 
  def User.digest(string)
    cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
                                                  BCrypt::Engine.cost
    BCrypt::Password.create(string, cost: cost)
  end

リスト8.18のdigestメソッドができたので、有効なユーザーを表すユーザーフィクスチャを作成できるようになりました (リスト8.19)。

test/fixtures/users.yml

michael:
  name: Michael Example
  email: michael@example.com
  password_digest: <%= User.digest('password') %>

文章読み込んでたら時間かかったので今日はここまで。

今日の作業時間は【21分】

次は「8.2.4 レイアウトの変更をテストする」のテストを作成するところから。