心はいつも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
ToDoの管理方法

東大生はノートがきれいだとか、、 きれいに書いている暇があったら、頭に書いて覚え …

40秒も待てない。

自由が丘のカフェでこれ書きました。Table Modern Service、食べ …

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

8.2.1[このアカウント設定を保存する]、です。 RailsTutorial4 …

railsでtest unitを生成させない

ruby on rails3プリケーションプログラミングの本の内容をruby2. …

no image
MacBookAirにMacAppStoreからソフトをダウンロード

MacBookAir 10日目。快調です。 WindowsからMacの移行でつま …

HerokuにRailsアプリをdeployする

Railsプロジェクトというよりも、Railsアプリっていうほうが正んでしょうか …

ラクダと蛇(キャメルとスネーク、Camel&Snake)

蛇。 いきなりラクダと蛇ってなんぞやー!と思う人と、あ、それかと思う人。後者はプ …

no image
RailsとRubyのインストール済みバージョン確認し、Rails3.2+Ruby1.9に戻してみる。

Rails3.2で作る必要があったので、Rails4はいったんおいといてRail …

attr_accessorでRuby文法を噛み締める

作りたいwebアプリがあって、プログラムやろう!となって現在にいたってる訳です。 …

no image
MacBookAir 1日め

ようやくMacBookAir を購入しました。Dellノートがずっと調子悪かった …