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

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

Open
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

MikotoMakizuru
Copy link
Contributor

@MikotoMakizuru MikotoMakizuru commented Sep 12, 2024

Issue

概要

研修生には必ずではありませんが、研修終了日が設定されています。今回の実装では、研修終了日が 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 MikotoMakizuru self-assigned this Sep 12, 2024
template(v-if='traineeProductsEndDateWithin7Days.length > 0')
.a-card.h-auto
header.card-header
h2.card-header__title
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@maedana
研修終了日が7日以内の提出物一覧を追加しました。
スクリーンショット 2024-09-13 12 40 41

現在、カードタイトルに .a-elapsed-days のクラスを使用することで文字の中央寄せや文字間隔を他のカードと統一することができますが、elapsed days が経過日数を意味するため、今回追加したカードタイトルとは適切ではないと感じています。質問タイムで相談したように、クラス名の抽象化をお願いしたいです。

@MikotoMakizuru MikotoMakizuru force-pushed the feature/show-products-trainees-whose-training-end-date-within-7days branch from 1aa4136 to c38a508 Compare September 14, 2024 07:23
@machida
Copy link
Member

machida commented Sep 17, 2024

@MikotoMakizuru class名を変えてpushしましたー
レビューに進めてくださいー

@machida machida removed their assignment Sep 17, 2024
@MikotoMakizuru
Copy link
Contributor Author

@reckyy
はじめまして、PR のレビューをお願いしたいのですが可能でしょうか。
よろしくお願いします。

@reckyy
Copy link
Contributor

reckyy commented Sep 19, 2024

@MikotoMakizuru
お疲れ様です。
レビューは可能です!
が、#8066 (comment) にて @Shrimprin さんにも依頼されてますが、そちらは気にしなくても大丈夫ですか?
ご返信お待ちしております。

@MikotoMakizuru
Copy link
Contributor Author

@reckyy
返信なかったので別の方を探しておりました。
#8066 (comment) は削除しておきます。

レビューお願いいたします!🙇‍♂️

@reckyy
Copy link
Contributor

reckyy commented Sep 19, 2024

@MikotoMakizuru
なるほどです。承知しました!
3日以内にはレビューさせていただきます〜。

GitHubの通知に気づかない方もいるので、急ぎで返信が欲しい場合はDiscordで連絡してる方もいます!(GitHub上でコメントした後に)

@reckyy reckyy self-requested a review September 19, 2024 02:26
@MikotoMakizuru
Copy link
Contributor Author

@reckyy

3日以内にはレビューさせていただきます〜。

ありがとうございます、よろしくお願いします。

GitHubの通知に気づかない方もいるので、急ぎで返信が欲しい場合はDiscordで連絡してる方もいます!(GitHub上でコメントした後に)

承知です、今後は Discord でも連絡してみたいと思います。

Copy link
Contributor

@reckyy reckyy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MikotoMakizuru
お疲れ様です。
コードに関しては、2点コメントしています。
コードと関係ない部分を2点コメントします。

お手隙の際にご確認をお願いいたします!


  1. ダッシュボードのデザイン

画面のサイズをディスプレイの半分にした時に、カードの幅が異なっていましたがこちら意図された変更でしょうか?
ご確認をお願いいたします。(もしかしたら自分の環境起因かもしれないので、その場合はお知らせください。 🙇 )

  • mainブランチでのダッシュボード
スクリーンショット 2024-09-21 11 31 01
  • 本ブランチでのダッシュボード
スクリーンショット 2024-09-21 11 31 35
  1. 不安要素について

今回変更を行ったことにより、(補足事項に記載したように)提出物が 2 件表示されるため、上記のテストだと研修終了日が 7 日以内のカードに表示されていなくても、他のカードに表示されていればテストがパスしてしまいます。

テストコードを拝見しましたが、Productをテスト時に作成しているのでこの事象は起こらないように思いました。いかがでしょうか。

そもそも今回追加されたテストが必ず落ちてしまいます。。(ファイル単体でテストすると)
ちょっと原因については調べれていないですが、まず@MikotoMakizuru さんの手元では必ず通るかどうかお伺いしたいです。

app/javascript/product.vue Show resolved Hide resolved
test/system/home_test.rb Show resolved Hide resolved
@MikotoMakizuru
Copy link
Contributor Author

MikotoMakizuru commented Sep 21, 2024

@reckyy

画面のサイズをディスプレイの半分にした時に、カードの幅が異なっていましたがこちら意図された変更でしょうか?

私の環境でも確認できました。ユーザ名が長いとカードの幅が広がってしまうみたいです。

スクリーンショット 2024-09-21 21 57 56

ウィンドウ幅が広いと「...」で省略され、ある一定のサイズまで狭めると全て表示するみたいです。あまりよろしくない仕様かと思うので「ウィンドウ幅を狭めるとユーザ名が省略されなくなる」といった別 issue で登録するか相談してみます。(デザインの部分なので町田さんが対応されるかもしれません)

2024-09-21.22.08.28.mov

そもそも今回追加されたテストが必ず落ちてしまいます。。(ファイル単体でテストすると)
ちょっと原因については調べれていないですが、まず@MikotoMakizuruさんの手元では必ず通るかどうかお伺いしたいです。

私の環境では、以下の通りパスしますね。。。

  • ファイル指定して実行したとき
$ bin/rails test test/system/home_test.rb
Running via Spring preloader in process 83815
Run options: --seed 62766

# Running:

........................................................
[Minitest::CI] Generating test report in JUnit XML format...


Finished in 34.673798s, 1.6151 runs/s, 3.9223 assertions/s.
56 runs, 136 assertions, 0 failures, 0 errors, 0 skips
  • 今回追加したテストを指定したとき
$ bin/rails test test/system/home_test.rb:325
Running via Spring preloader in process 86298
Run options: --seed 56859

# Running:

.
[Minitest::CI] Generating test report in JUnit XML format...


Finished in 4.294147s, 0.2329 runs/s, 2.5616 assertions/s.
1 runs, 11 assertions, 0 failures, 0 errors, 0 skips

CI も通っているので、ちょっと原因がわからないですね。reckyy さんの実行結果などを載せていただければ、なにかわかるかもしれないです。🙇‍♂️

@MikotoMakizuru MikotoMakizuru force-pushed the feature/show-products-trainees-whose-training-end-date-within-7days branch from 9269280 to d2dcb5b Compare September 21, 2024 18:44
Copy link
Contributor

@reckyy reckyy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MikotoMakizuru
お疲れ様です。
2点コメントしましたので、お手隙の際にご確認ください。
コメントへの対応については、修正でも返信でもどちらでも大丈夫です!次の返信の時点でApproveします〜。

遅くなりましたが、懸念点への自分の意見を共有します。

今回変更を行ったことにより、(補足事項に記載したように)提出物が 2 件表示されるため、上記のテストだと研修終了日が 7 日以内のカードに表示されていなくても、他のカードに表示されていればテストがパスしてしまいます。そこで、対象の提出物と絞るため、こちらの記事を参考に、within でスコープを絞りました。繰り返し要素の各枠には .card-list-item が使われていたため、1つ目と2つ目の要素をそれぞれ指定しています。
しかし、このテストは .card-list-item の 1 つ目と 2 つ目に必ず特定の提出物が表示されることを前提としているため、新たに .card-list-item を使用したカードが表示されると、テストが失敗するリスクがあります。これは、変更に対して脆いテストコードとなってしまいます。伊藤さんの記事の解法4のように ID を指定して各提出物を特定できればテストの安定性を高められますが、今回は View の修正までは行っていません。もし他に良い改善案があれば、ご指摘いただけると幸いです。

記事も拝見しましたが、自分もユニークなクラスやIDを付与するのが最善だと思います。ただ、このPR内では現状のテストがベストだと思いました。一応、komagataさんのレビューの際にもご相談されると良いかと思います。

以下、#8066 (comment) への回答です。

  1. カードの幅問題

私の環境でも確認できました。ユーザ名が長いとカードの幅が広がってしまうみたいです。
ウィンドウ幅が広いと「...」で省略され、ある一定のサイズまで狭めると全て表示するみたいです。あまりよろしくない仕様かと思うので「ウィンドウ幅を狭めるとユーザ名が省略されなくなる」といった別 issue で登録するか相談してみます。(デザインの部分なので町田さんが対応されるかもしれません)

承知しました!お任せします。

  1. testが落ちる件

こちらごめんなさい、今日回してみると問題なくパスしました。。PCの調子が悪かったのかもしれません。
この件はご放念ください。

app/javascript/product.vue Outdated Show resolved Hide resolved
app/javascript/product.vue Outdated Show resolved Hide resolved
@MikotoMakizuru
Copy link
Contributor Author

@reckyy
お疲れです🍵

記事も拝見しましたが、自分もユニークなクラスやIDを付与するのが最善だと思います。ただ、このPR内では現状のテストがベストだと思いました。一応、komagataさんのレビューの際にもご相談されると良いかと思います。

細かく見ていただいてありがとうございます。komagata さんレビュー時にも相談してみたいと思います。

  1. カードの幅問題

私の環境でも確認できました。ユーザ名が長いとカードの幅が広がってしまうみたいです。
ウィンドウ幅が広いと「...」で省略され、ある一定のサイズまで狭めると全て表示するみたいです。あまりよろしくない仕様かと思うので「ウィンドウ幅を狭めるとユーザ名が省略されなくなる」といった別 issue で登録するか相談してみます。(デザインの部分なので町田さんが対応されるかもしれません)

承知しました!お任せします。

相談してみたいと思います!🙇‍♂️

  1. testが落ちる件
    こちらごめんなさい、今日回してみると問題なくパスしました。。PCの調子が悪かったのかもしれません。
    この件はご放念ください。

稀によくありますね😄
全然大丈夫です!🙆‍♂️

@reckyy
Copy link
Contributor

reckyy commented Sep 23, 2024

@MikotoMakizuru
ご対応ありがとうございます!

自分としてはApproveなのですが、以下のIssueが進行しているようです。
もしご存知でしたら申し訳ないです。

今回のPR内ではproduct.vueを使用していますが、上記PRではproduct.vueproducts.vueなどのVueファイルをViewComponentに移行しているようなので、上記PRがmergeされてからの方がいいのかなと思いました。
(komagataさん、もしくは @Shrimprin さんにご相談されるのがいいかと思います。)
ご返信お待ちしております。

@MikotoMakizuru
Copy link
Contributor Author

@reckyy
komagata さん、machida さんに確認してみます〜

@komagata
Copy link
Member

@MikotoMakizuru

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

「研修終了まで7日」などのブロックで絞り込んでいる(within)のであれば問題ないです。

@MikotoMakizuru
Copy link
Contributor Author

@reckyy

今回のPR内ではproduct.vueを使用していますが、上記PRではproduct.vueやproducts.vueなどのVueファイルをViewComponentに移行しているようなので、上記PRがmergeされてからの方がいいのかなと思いました。
(komagataさん、もしくは @Shrimprin さんにご相談されるのがいいかと思います。)
ご返信お待ちしております。

今週のスクラム MTG で相談した結果、@Shrimprin さんの実装が非 vue 化の対応であり、私が今回 vue で追加実装した部分はマージできないため、非 vue 化のプルリクがマージされたら rebase して rails の view で作り直す形となりました。(ポイントは別で付与していただくそうです。)

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

Successfully merging this pull request may close these issues.

4 participants