心はいつも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を高速で復習する。5.3.4章。

5.3.4RSpecを洗練させる、です。 確かに、名前付きルートに書き換えていて …

no image
MacBookAirで真央ちゃんのテレビ放映を見ました

テレビ持っていないを公言しています。 15年以上使っていたナショナル6型ブラウン …

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

6.2.3長さを検証する、です。空データを拒否した次は、入力できるデータ長の制限 …

railsでtest unitを生成させない

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

no image
Vaio Pよりも軽く感じる?MacBookAirとお出かけ

Vaoi Pを手放し、iPadも手放し、UQ Wimaxは解約し、DellのWi …

Mac miniのメモリを自力で16Gに増設しました

Mac miniとDellの27インチIPS液晶、とても快適です。もっと快適にす …

BiglobeでWimax契約して怒った

久々にダメサービスに遭遇して怒ったので書きます。 BiglobeでWimax契約 …

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

9.3.2サンプルのユーザー、です。 Faker gemで、実際にありそうなユー …

no image
iTunesをMacBookAirからWindowsに戻しました。

2月にMacBookAirを購入し、今までWindows上にあったiTunesを …

no image
浅田真央ちゃんは今シーズンが最後!テレビチューナーにHDつけて録画する!

テレビ見なくなってはや10年以上。ただし、 *真央ちゃんを除く*です。 土曜日に …