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

卒業生に通知がいかないように修正 & テストの修正 #4141

Merged
merged 8 commits into from
Feb 14, 2022

Conversation

maeda-seina
Copy link
Contributor

@maeda-seina maeda-seina commented Feb 4, 2022

issue

修正PR

概要

#4012 のPRに不備があり、卒業生に「はじめての日報を書きました!」通知がいってしまっていたのでその修正を行いました。

変更内容

app/models/notification_facade.rb:78if receiver.student_or_trainee?student_or_traineeメソッドでは卒業生も対象になってしまっていたので、そちらのメソッドをstudent_or_trainee_or_retired?に変更しました。
また、test/system/reports_test.rb:6の卒業生のテストが機能していなかったため、機能させるためにwait_for_vuejsメソッドを追加しておきました。

@maeda-seina maeda-seina self-assigned this Feb 4, 2022
@maeda-seina
Copy link
Contributor Author

@haruguchi-yuma さん
お疲れ様です!
お時間ある時に、こちらのレビューお願い致します🙇‍♂️

Copy link
Contributor

@haruguchi-yuma haruguchi-yuma left a comment

Choose a reason for hiding this comment

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

問題ないと思いました。OKです〜!:tada:

今回の変更点ではないんですが、テストの部分で日報を作るところがありますが、titledescriptionが意味のあるものだとテストが読みやすかなーと思いました!

test 'the first daily report notification is sent only to current students and mentors' do
    report = users(:muryou).reports.create!(
      title: 'test title',  #ここ
      description: 'test', #ここ
      reported_on: Date.current
    )
...

本質的な部分ではないので変更はどちらでも結構です〜!

@@ -75,7 +75,7 @@ def self.came_question(question, receiver)
end

def self.first_report(report, receiver)
Notification.first_report(report, receiver) if receiver.student_or_trainee? || receiver.admin_or_mentor?
Notification.first_report(report, receiver) if receiver.student_or_trainee_or_retired? || receiver.admin_or_mentor?
Copy link
Member

Choose a reason for hiding this comment

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

これだとリタイアしたユーザーも通知の対象になってしまうので
卒業生ではない人 かつ student または trainee または admin または advisor を対象にすると良さそうです 😄

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@ima1zumi さん
レビューして頂きありがとうございます!😊
ご指摘してもらった通り、リタイアしたユーザーへの通知を考慮できていませんでした😅
教えていただいた内容で通知対象を修正をしたいと思います!

Copy link
Contributor

Choose a reason for hiding this comment

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

メールのこと考えるの忘れてました。確かにリタイヤした人に通知行くのはダメですね、、🥲

@maeda-seina maeda-seina force-pushed the bug/fix-first-daily-report-notification branch from cccdc5a to 6bcc9c5 Compare February 5, 2022 15:50
@maeda-seina
Copy link
Contributor Author

@haruguchi-yuma さん
レビューして頂き、ありがとうございます!!
おっしゃる通りだと思いましたので、テストのtitleとdescriptionを修正しようと思います!🙇‍♂️ 😄

@maeda-seina
Copy link
Contributor Author

@haruguchi-yuma さん、@ima1zumi さん
お手数おかけしますが、再度レビューのほどよろしくお願い致します🙇‍♂️

@haruguchi-yuma
Copy link
Contributor

haruguchi-yuma commented Feb 6, 2022

@maeda-seina (cc @ima1zumi )
リタイヤしたユーザの視点でいくとこの条件でも条件式全体がtrueになってしまうような気がします。😭
以下rails consoleの結果です。studentかどうかの判定ににリタイヤしたユーザがヒットしてしまうので、、、

 retired_user.name
=> "辞目 辞目夫"
 retired_user.student?
=> true
retired_user.student_or_trainee?
=> true
 retired_user.student_or_trainee_or_retired?
=> true

明示的に!retired?という条件を加えるのがいいかも?

@maeda-seina
Copy link
Contributor Author

@haruguchi-yuma さん
再度レビューして頂き、ありがとうございます!!

リタイヤしたユーザの視点でいくとこの条件でも条件式全体がtrueになってしまうような気がします。😭

ほんとうですね...😅(何度も申し訳ないです🙏)
!retired?を条件に加えて修正させて頂きます!!🙏

@maeda-seina
Copy link
Contributor Author

maeda-seina commented Feb 7, 2022

@haruguchi-yuma さん
お疲れ様です。
お手数お掛けしますが、再度レビューのほどよろしくお願い致します🙇‍♂️
app/models/notification_facade.rb:78の条件式receiver.student_or_trainee? && !receiver.graduated? && !receiver.retired?の部分をcurrent_student?というメソッド名で切り出しました。(current_student?メソッドにはuser.rbにある既存のメソッドを使用すると誤解を招いたり複雑になると思ったため、カラムを使用して定義しました。)

@komagata さん、 @machida さん
current_student?メソッドを使用して変更できる箇所がないか探した所、app/views/application/_header.html.slim:7student_or_trainee?メソッドが使用されていまして、student_or_trainee? メソッドの中身はstudent? || trainee? となっており、student?メソッドには卒業生も含まれているため、卒業生でログインしてもヘッダー部分には卒業生ロールが表示されていませんでした。
なので、current_student?メソッドを使用して、卒業生ロールが表示されるよう修正をしました。

修正前

image

修正後

image

@maeda-seina maeda-seina force-pushed the bug/fix-first-daily-report-notification branch from e541bd2 to c7f1e3f Compare February 7, 2022 14:49
@haruguchi-yuma
Copy link
Contributor

@maeda-seina
確認しました〜!メソッド定義するという判断もナイスだと思います。僕の方からはOKです:rocket:

@maeda-seina
Copy link
Contributor Author

@haruguchi-yuma さん
何度もレビューしていただき、ありがとうございました😊

@komagata さん
お疲れ様です!
お時間ある時に、こちらのレビューお願い致します🙇‍♂️

@komagata
Copy link
Member

komagata commented Feb 9, 2022

@maeda-seina

なので、current_student?メソッドを使用して、卒業生ロールが表示されるよう修正をしました。

ありがとうございます〜👍

@@ -20,16 +20,20 @@ class Notification::ReportsTest < ApplicationSystemTestCase
)

notification_message = 'muryouさんがはじめての日報を書きました!'
visit_with_auth '/notifications', 'komagata'
visit_with_auth '/notifications', 'machida'
wait_for_vuejs
Copy link
Member

Choose a reason for hiding this comment

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

これ、中身は単なるsleepなので、できれば使いたくない感じなんですよね。
vue.jsで表示しているものが表示されるまで待つような処理をきちんと書きたい感じがします。

理由はsleepだと不要な場合でも必ずその秒数待つのでテストが遅くなるのと、重さなどでその秒数を単に超えるとエラーになり、flakyなテストになっちゃうからです。

Copy link
Contributor Author

@maeda-seina maeda-seina Feb 9, 2022

Choose a reason for hiding this comment

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

@komagata さん
了解いたしました!
前教えていただいた、findメソッドを使ってテスト作成できるかやってみます!💪

@maeda-seina maeda-seina force-pushed the bug/fix-first-daily-report-notification branch from c7f1e3f to bf6b5af Compare February 9, 2022 13:05
@maeda-seina
Copy link
Contributor Author

@komagata さん
お疲れ様です。
再度レビューのほどよろしくお願い致します🙏
(先日komagataさんに教えて頂いたコードを参考にテストコードの修正を行いました。)

参考
https://github.com/fjordllc/bootcamp/blob/main/test/system/comments_test.rb#L52
https://github.com/fjordllc/bootcamp/blob/main/app/javascript/comments.vue

Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

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

確認しました、OKですー🙆‍♂️

@komagata komagata merged commit 6ca71eb into main Feb 14, 2022
@komagata komagata deleted the bug/fix-first-daily-report-notification branch February 14, 2022 06:02
@github-actions github-actions bot mentioned this pull request Feb 14, 2022
54 tasks
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