RailsTutorial4.0を高速で復習する。8.1.2章。
8.1.2サインインをテストする、です。
Signin(ログイン)失敗の場合
ログインに失敗したとき、メッセージを表示します。
ログイン失敗はどんなときにおきるのでしょう?
ID入力間違い
パスワード入力間違い、
ですね。
Signin(ログイン)失敗のテストを書く
リスト8.5ではなく、ちょっと飛ばして
リスト8.12 サインインが失敗したときの正しいコード。
spec/requests/authentication_pages_spec.rb
describe "Authentication" do subject { page } describe "with invalid information" do before { click_button "Sign in" } it { should have_title('Sign in') } it { should have_selector('div.alert.alert-error', text: 'Invalid') } describe "after visiting another page" do before { click_link "Home" } it { should_not have_selector('div.alert.alert-error') } end end end end
have_selectorはCapybaraのメソッド。特定のセレクタ要素 (HTMLタグなど) があるかどうかをチェックします。
Signin(ログイン)成功の場合
ログイン成功後はプロファイルページの表示です。
メニューからSigninがなくなり、かわりにAccountが追加されていて、profile,settings,signoutがプルダウンできます。
リスト8.6 サインインに成功したときのテスト。
spec/requests/authentication_pages_spec.rb
require 'spec_helper' describe "Authentication" do 略 describe "signin" do before { visit signin_path } 略 describe "with valid information" do let(:user) { FactoryGirl.create(:user) } before do fill_in "Email", with: user.email.upcase fill_in "Password", with: user.password click_button "Sign in" end it { should have_title(user.name) } it { should have_link('Profile', href: user_path(user)) } it { should have_link('Sign out', href: signout_path) } it { should_not have_link('Sign in', href: signin_path) } end end end
have_linkはCapybaraのメソッド。リンクテキストを引数にとる。 click_linkよりもキチンとテストできそう。
当然ながらテストは失敗です。
次は、
8.1.3サインインのフォーム
です。
関連記事
-
-
rails gでのファイル名、クラス名、アクション名
rails gすると、コントローラーとアクションができますが、 その書き方とファ …
-
-
iPhone充電3回分?大容量バッテリーで残念がなくなりました
iPhoneは便利なので、一日中使いっ放しの日がよくあります。iPhoneがあれ …
-
-
いまだにユビキタスなSONYとクラウドに向かうApple
PS3のトルネが良さそう@ヤマダ電機。PS3本体とチューナーの2台になってスッキ …
-
-
RailsTutorial4.0を高速で復習する。6.5章。
演習1問目。 リスト6.20の、メールアドレスを小文字に変換するコードに対するテ …
-
-
accepts_nested_attributes_for
everydayRailsやっていて、 phoneモデルのテストのところで ac …
-
-
iPad vs. VAIO P 持ち歩き編。
旅に出かけるときはケーブルと一緒です。ドコモ携帯、VAIO P、iPhone、W …
-
-
Mavericksでruby2.0 rails4.0.0のGem
MacBookAirにMavericksインストールして初めてのrails ne …
-
-
Gitをインストールする
Rails開発がしたいのですが、今後必要になるでしょうからGitをインストールし …
-
-
iPhoneでのToDo&スケジュール管理アプリ決定しました
苦手なタスク管理のために読んだ2冊というエントリーが割と人気なのですが、いまだに …
-
-
G+ウィジェット設置してみました
(この投稿は別ブログameblo.jp/sweetfからの転載です) G+ウィジ …