ryoma123/sample_app2 — pull request #23 by ryoma123 (2014-09-09 03:33:07+00:00)
Title: [Exercises 9.6.8] フレンドリーフォワーディングが初回サインインにのみ有効となっているかテストする

### Exercises 9.6.8

@tacahilo @kitak @gs3 @keokent

フレンドリーフォワーディングが初回のサインインにのみ有効となっているかテストしました。
なおRails Tutorial9章の内容で、手元のアプリケーションに不足しているコードが見つかったのですが、
今回の課題に関連するコードであったため、そちらの修正もPRに含めています。
レビューのほどよろしくお願いします！

### 修正箇所
- [x] フレンドリーフォワーディングが、次回のサインインでは解除されていることを確認するテストを追加
※ フレンドリーフォワーディング自体のテストは、[Listing 9.16](https://www.railstutorial.org/book/updating_and_deleting_users#code-friendly_forwarding_test) で追加済みです。
※ [Listing 9.51](https://www.railstutorial.org/book/updating_and_deleting_users#code-friendly_forgetting_test) を参考にしました。

### テスト結果
* テストが通りませんでした！

```
% bundle exec Rspec spec/
.............................................F..............................................

Failures:

1) Authentication authorization for non-signed-in users when attempting to visit a protected page after signing in when signing in again should render the default (profile) page
Failure/Error: expect(page).to have_title(user.name)
expected #has_title?("Person 9") to return true, got false
# ./spec/requests/authentication_pages_spec.rb:81:in `block (7 levels) in '

Finished in 5.34 seconds
92 examples, 1 failure

Failed examples:

rspec ./spec/requests/authentication_pages_spec.rb:80 # Authentication authorization for non-signed-in users when attempting to visit a protected page after signing in when signing in again should render the default (profile) page
```

### テストが通らない原因
「サインインしていない」という条件文が抜けていたためサインイン時にもURLを保持してしまっていた。
(サインインしていない状態でプロテクトページにアクセスすると、URLを保持してフレンドリーフォワーディングを実行するのが正しい)

- [x] フレンドリーフォワーディングが正しく機能するように、users_controllerに条件分岐を追加する

```
def signed_in_user
- store_location
- redirect_to signin_url, notice: "Please sign in." unless signed_in?
+ unless signed_in?
+ store_location
+ redirect_to signin_url, notice: "Please sign in."
+ end
end
```

### テスト結果
- [x] 全体テストでグリーンを確認

```
% bundle exec Rspec spec/
............................................................................................
Finished in 5.22 seconds
92 examples, 0 failures
```

演習URL：http://www.railstutorial.org/book/updating_and_deleting_users#sec-updating_deleting_exercises