Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【課題16】system spec #2

Open
16 tasks done
busitora opened this issue Nov 3, 2019 · 4 comments
Open
16 tasks done

【課題16】system spec #2

busitora opened this issue Nov 3, 2019 · 4 comments

Comments

@busitora
Copy link
Owner

busitora commented Nov 3, 2019

合計 example数

users → 9️⃣ (正常3、異常6)
user_sessions → 3️⃣ (正常2、異常1)
tasks → 6️⃣ (正常3、異常3)

[正常系]

users.spec.rb

  • ユーザーの新規作成、編集ができること
    フォーム入力値が全て正しい時、ユーザー新規作成に成功する
    フォーム入力値が全て正しい時、ユーザー編集に成功する
  • マイページにユーザーが新規作成したタスクが表示されること
    マイページにアクセスした時、自分のマイページの時、新規作成したタスクが表示される

user_sessions_spec.rb

  • ログインが成功すること
    ログイン前のケース、フォーム入力値が全て正しい時、ログインに成功する
  • (追加:課題になかったが必要) ログアウトが成功すること
    ログイン後のケース、ログアウトボタンをクリックした時、ログアウトに成功する

tasks_spec.rb

  • ログインした状態でタスクの新規作成、編集、削除ができること
    ログイン後のケース、タスクの新規作成画面、フォームの入力値が全て正しい時、タスクの新規作成に成功する
    ログイン後のケース、タスクの編集画面、フォームの入力値が全て正しい時、タスクの編集に成功する
    ログイン後のケース、タスクの一覧画面、Destoryボタンをクリックした時、タスクの削除に成功する

[異常系]

users.spec.rb

  • メールアドレスが未入力時にユーザーの新規作成、編集が失敗すること
    メールアドレスが未入力の時、 ユーザーの新規作成に失敗する
    メールアドレスが未入力の時、 ユーザーの編集に失敗する
  • 登録済メールアドレス使用時にユーザーの新規作成、編集が失敗すること
    登録済メールアドレスの時、 ユーザーの新規作成に失敗する
    登録済メールアドレスの時、 ユーザーの編集に失敗する
  • 他のユーザーのユーザー編集ができないこと
    ログイン後のケース、ユーザー編集画面、他人の編集ページにアクセスした時、権限がないためアクセスが失敗する
  • ログインしていないユーザーで、マイページに推移できないこと
    マイページへアクセスした時、自分のマイページの時、ログイン前なので推移に失敗する

user_sessions_spec.rb

  • フォーム未入力時にログインが失敗すること
    ログイン前のケース、フォームが未入力のとき、ログインに失敗する

tasks.spec.rb

  • ログインしていないユーザーでタスクの新規作成、編集、マイページへの遷移ができないこと
    ログイン前のケース、タスクの新規作成画面、権限がないため、アクセスに失敗する
    ログイン前のケース、タスクの編集画面、権限がないため、アクセスに失敗する
  • 他のユーザーのタスク編集ページへの遷移ができないこと
    ログイン後のケース、他ユーザーの編集ページにアクセスした時、権限がないためアクセスが失敗する

細かい指示

  • 各Controller毎にsystem specを作成し、アクション毎にdescribeを作成してください。
  • loginメソッドはmoduleを作成し、specファイル間で共通に呼び出せるようにしてください。
  • --format documentation を設定したテスト実行結果をPRに添付してください。
  • 😞 spec実行時に chrome/headless_chrome を切り替える設定を spec/support 以下に追加してください。
@busitora
Copy link
Owner Author

busitora commented Nov 3, 2019

・パスワード3文字以下の場合
・パスワードが空の時
・パスワードが一致しなかった場合
のテストはいいのかな。保留にしておく。

何故showとindexのテストはしないのか?
マイページが詳細だった。

@busitora
Copy link
Owner Author

busitora commented Nov 4, 2019

fill_in に入れる時に
user[email]でもEmail でも 動くことを確認。
どうやらラベル内の要素を指定する法が良い模様。
【RSpec/capybara】fill_inが上手く動作しない

fill_inを使う場合は、
fill_in "メールアドレス", with: 'a@example.com'
のように、labelタグ内に書かれたテキストを指定しても動くはずです。
むしろ、idで指定するよりも読みやすくなるので、個人的にはこちらの書き方をお勧めします。

→ fill_in も共通化できそうな感じかな?

@busitora
Copy link
Owner Author

busitora commented Nov 4, 2019

謎だったところ。質問したいところ

users.spec.rb の新規作成画面へのpathが2つある件

users/newにつながるpathは、sign_upnew_user とあったが、どちらを使えばいいか分からなかった。よりパッと見てわかる後者を使用した。

【解決済み】expectの eq の 使い方

expect(current_path).to eq(users_path)
現在のURLが、ユーザーpathであることを期待する

expect(users_path).to eq(current_path)
ユーザーpathが、現在のURLであることを期待する

どっちがいいのか。結果として、前者を使用した(個人的にわかりやすいと思った)

追記: (中の要素は違うが)

Failure/Error: expect(current_path).to eq(logout_path)

       expected: "/logout"
            got: "/login"

前者だと、ログアウトを期待するがログインですよ。なので、後者が正しいとわかった。

@busitora
Copy link
Owner Author

busitora commented Nov 5, 2019

let!の使い方をもっとはっきりさせる(聞いて動いたけどわかってない)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant