bootcamp icon indicating copy to clipboard operation
bootcamp copied to clipboard

研修終了日が7日以内の研修生の提出物一覧をメンターのダッシュボードに表示

Open MikotoMakizuru opened this issue 5 months ago • 12 comments

Issue

  • #7912

概要

研修生には必ずではありませんが、研修終了日が設定されています。今回の実装では、研修終了日が 7 日以内の研修生の提出物一覧をメンターのダッシュボードに表示するようにしました。これにより、メンターは研修終了が近い研修生の提出物を優先的にレビューすることが可能になります。

変更確認方法

  1. feature/show-products-trainees-whose-training-end-date-within-7days をローカルに取り込む
  2. rails db:seed を実行して初期データ投入(この操作はローカルのDBを初期化するので、初期化しても問題ないタイミングで行ってください。)
  3. foreman start -f Procfile.dev でローカル環境を立ち上げる
  4. ログイン画面で「ユーザー名 or メールアドレス」mentormentaro、「パスワード」testtest でログイン
  5. ダッシュボードタブ右上に研修終了日が7日以内の提出物一覧が表示されていることを確認

Screenshot

変更前

スクリーンショット 2024-09-12 19 34 52

変更後

スクリーンショット 2024-09-22 18 07 32

補足事項

今回の実装により、研修終了日が 7 日以内の提出物一覧が表示されることで、「研修終了日が 7 日以内」かつ「提出から 5 日経過」の提出物が以下の画像のように 2 件表示される仕様となります。この仕様についてはこちらのコメントで相談したうえで実装を行いました。

localhost_3000_ (2)

気になっていること(不安要素)

今回の実装では、「研修終了日が 7 日以内の提出物一覧が表示されること」を確認するテストを作成しました。

assert_text 'OS X Mountain Lionをクリーンインストールするの提出物'
assert_text 'kensyu-end-within-1-week (ケンシュウ モウスコシデシュウリョウ)'

今回変更を行ったことにより、(補足事項に記載したように)提出物が 2 件表示されるため、上記のテストだと研修終了日が 7 日以内のカードに表示されていなくても、他のカードに表示されていればテストがパスしてしまいます。そこで、対象の提出物と絞るため、こちらの記事を参考に、within でスコープを絞りました。繰り返し要素の各枠には .card-list-item が使われていたため、1つ目と2つ目の要素をそれぞれ指定しています。

スクリーンショット 2024-09-13 11 46 19

しかし、このテストは .card-list-item の 1 つ目と 2 つ目に必ず特定の提出物が表示されることを前提としているため、新たに .card-list-item を使用したカードが表示されると、テストが失敗するリスクがあります。これは、変更に対して脆いテストコードとなってしまいます。伊藤さんの記事の解法4のように ID を指定して各提出物を特定できればテストの安定性を高められますが、今回は View の修正までは行っていません。もし他に良い改善案があれば、ご指摘いただけると幸いです。

MikotoMakizuru avatar Sep 12 '24 09:09 MikotoMakizuru