カロリーメイトください

Barbaroi Ware(バルバロイ・ウェア)という名前でアプリ開発してます

『Ruby on Rails チュートリアル』「第10章ユーザーの更新・表示・削除」3

railstutorial.jp

序文

Railsチュートリアル22日目。

ついにストーブを入れました。
今年もまたハロゲンヒーター1台で乗り切る冬がやってくるお…
一応部屋にエアコン備え付いてるんですけど、ガスエアコンとかいう糞高い昭和の遺物なんですよね…

進捗

  • 第10章ユーザーの更新・表示・削除
    • 10.2 認可

コード実装部分(一部)

/sample_app/test/integration/users_edit_test.rb

require 'test_helper'

# ユーザーデータ編集のテスト
class UsersEditTest < ActionDispatch::IntegrationTest
  # fixturesで設定したデータを取得
  def setup
    @user = users(:michael)
  end

(中略)

  # ユーザーデータ編集成功
  test "successful edit with friendly forwarding" do
    # ログインしていない状態で
    # GETで/users/:id/editにアクセスする
    get edit_user_path(@user)
    # その後ログインする
    log_in_as(@user)
    # リダイレクト先がユーザーデータの編集ページか
    assert_redirected_to edit_user_url(@user)
    # 実際にリダイレクトする
    follow_redirect!
    # /sample_app/app/views/users/edit.html.erb
    # のテンプレートが適用されているか
    assert_template 'users/edit'
    # ユーザーデータを編集する
    name  = "Foo Bar"
    email = "foo@bar.com"
    # PATCHで/users/:idにデータを送信する
    patch user_path(@user), params: { user: { name:  name,
                                              email: email,
                                              password:              "",
                                              password_confirmation: "" } }
    # flashにメッセージ(編集成功)がセットされるか                                              
    assert_not flash.empty?
    # ユーザーデータへリダイレクトされるか
    assert_redirected_to @user
    # @userに代入されているユーザーデータを更新する
    @user.reload
    # ちゃんと変更されているか
    assert_equal name,  @user.name
    assert_equal email, @user.email
    
    # 再びログインする
    log_in_as(@user)
    # 転送先URLが初期化されているか
    assert_equal session[:forwarding_url], nil
  end
end

GitHub

github.com

実行結果

特になし

感想

Railsチュートリアル10章3日目。

違うユーザーがユーザーデータを編集できないようにしたり、ログイン直後のURLを状況に応じて設定したりといった機能をテスト駆動で実装。

昨日よりは集中していたと思うのだけど、まったく進まなかった。
特に最後の演習でCloud9の調子がおかしくなり、再起動の方法とか必死に調べているうちにあっという間に時間になってしまった。

AWSマネジメントコンソールからEC2インスタンスの再起動を行う方法(非エンジニア向け)

railstutorial.jp

演習の文章に「デバッガーがおかしな挙動を見せたりします」とか書いてるので既知の障害らしい。

メソッドジャンプ(?)のショートカットにやっと気づいたので、明日はもう少し捗ればいいなと思っている。
(そういうのこそググらないと…)

カロリーメイトください。

今日のunityroom

休止!