読者です 読者をやめる 読者になる 読者になる

ぞえの技術めも

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 レイアウトの変更をテストする」のテストを作成するところから。