心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。9.1.2章。

   


9.1.2編集の失敗、です。

テストを書きます

リスト9.9 ユーザーupdateアクションのテスト。
spec/requests/user_pages_spec.rb

require 'spec_helper'

describe "User pages" do
略
  describe "edit" do
    let(:user) { FactoryGirl.create(:user) }
    before do
      visit signin_path
      fill_in "Email",    with: user.email
      fill_in "Password", with: user.password
      click_button "Sign in"
      visit edit_user_path(user)
      visit edit_user_path(user)
    end
略
    describe "with valid information" do
      let(:new_name)  { "New Name" }
      let(:new_email) { "new@example.com" }
      before do
        fill_in "Name",             with: new_name
        fill_in "Email",            with: new_email
        fill_in "Password",         with: user.password
        fill_in "Confirm Password", with: user.password
        click_button "Save changes"
      end

      it { should have_title(new_name) }
      it { should have_selector('div.alert.alert-success') }
      it { should have_link('Sign out', href: signout_path) }
      specify { expect(user.reload.name).to  eq new_name }
      specify { expect(user.reload.email).to eq new_email }
    end
  end
end

sign_inヘルパーをテストでも使っているところが気になります。いいいのかなーテストで本番コードを使用すべきでないと思います。RailsTutorialの良くないところです。

リスト9.6で使われたsign_inメソッドをbeforeブロック内に追加しています。これにより、”Sign Out” リンクのテストをパスさせることができます。また、サインインしていないユーザがeditアクションを実行できないことも確認しています

なのでsign_inヘルパーつかわない形に書き換えています。

reloadは属性変更のテストで、user.reloadとすると、user変数に再度読み込みが行われ、ユーザーの新しい名前とメールアドレスが新しい値と一致するかどうかが確認されます。

contorollerを実装

リスト9.10 ユーザーのupdateアクション。
app/controllers/users_controller.rb

class UsersController < ApplicationController
略
  def edit
    @user = User.find(params[:id])
  end

  def update
    @user = User.find(params[:id])
    if @user.update_attributes(user_params)
      flash[:success] = "Profile updated"
      redirect_to @user
    else
      render 'edit'
    end
  end
略
end

テストはパスします。いったんコミットして次は
9.2認可、
です。

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
RailsTutorial4.0を高速で復習する。8.1.3章。

8.1.3サインインのフォーム、です。 ログイン画面を作る 入力フォームをfor …

GitにRailsプロジェクトをpushする

HomebrewerでGitをインストールし、Rails 3.2やRails4. …

MicrosoftのFutureVision 2019 vs 2011 vs 2010

Wiredで取り上げられたので、今日はMSのFutureVisionが話題でした …

Ruby on Railsを4.1.0にバージョンアップする

真央ロス真央廃を超えた腐まお状態な1ヶ月1週間、まるで娘が嫁に行った父親のごとし …

パーフェクトRuby 2章Rubyの基礎 2-3 条件分岐と真偽値

p50 2-3 条件分岐と真偽値 falseとnil以外は全部true p51 …

no image
テンプレとヘルパーの順番

http://yourdomain/actionxを呼んだときのactionx用 …

MacにGUIのSQLite3クライアントを入れる。

ターミナルからコマンドたたけばいいだけですが、DBスキーマをちょっと確認したいと …

RailsGirls松江からのぉ〜東京More!*既に2回目

RailsGirls東京3回目に申し込みそびれた流れから松江に参加し、チューター …

no image
railsのエラーメッセージを日本語化

message:で渡すエラーメッセージや、その他いろんな箇所を日本語化します。 …

no image
RailsTutorial4.0を高速で復習する。8.3章。

8.3Cucumberの紹介 (オプション) Cucumberは振舞駆動開発用の …