-
Notifications
You must be signed in to change notification settings - Fork 71
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
日報が確認OKされていない場合、メンターがコメントした時にアラートが出るように実装 #8061
日報が確認OKされていない場合、メンターがコメントした時にアラートが出るように実装 #8061
Conversation
@Judeeeee |
@su-su-su-su |
@Judeeeee |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@su-su-su-su
お疲れ様です!お待たせいたしました💦
ブラウザでの挙動はOKです〜
コメントの
念のため、以下の2つも確認しました。
についても問題ありませんでした🙆♀️
一点だけお願いです🙏
su-su-su-suさんが確認したことを客観的に示すためにも、テストを追加いただけると助かります🙇
私も過去にほぼ同じようなissueを担当しており、その時のPRが参考になるかもです〜!
https://github.com/fjordllc/bootcamp/pull/7953/files
お手数ですがよろしくお願いいたします🙏
77bda5e
to
b412eac
Compare
@Judeeeee
アドバイスありがとうございます🙇♂️ Judeeeeeさんがされていた部分的に追加できるテストがなかったので、新規でテストを追加しました。 手隙の際に、再度ご確認頂けますでしょうか? |
@su-su-su-su |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
テスト追加対応ありがとうございました🙏
私の環境だと、テストを実行した際に落ちてしまうのですがsu-su-su-suさんの環境では問題なくパスしているでしょうか?🤔
何度実行しても以下のエラーが出てしまっている状況です😢
Error:
CommentsTest#test_show_confirm_dialog_if_report_is_not_confirmed:
Capybara::ModalNotFound: Unable to find modal dialog with 日報を確認済みにしていませんがよろしいですか?
test/system/comments_test.rb:357:in `block in <class:CommentsTest>'
お手数ですが、ご確認いただけると幸いです🙇
|
||
test 'show confirm dialog if report is not confirmed' do | ||
visit_with_auth "/reports/#{reports(:report2).id}", 'machida' | ||
assert_text '確認OKにする' | ||
within('.thread-comment-form__form') do | ||
fill_in('new_comment[description]', with: 'comment test') | ||
end | ||
accept_confirm '日報を確認済みにしていませんがよろしいですか?' do | ||
click_button 'コメントする' | ||
end | ||
assert_text 'comment test' | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
テスト追加ありがとうございます🙏
- 未チェックの日報をクリック
- コメントを書いてコメントするをクリック
- 「日報を確認済みにしていませんがよろしいですか?」とアラートが出ることを確認
を確認するテストだと思うので、ちょっと意図とずれている印象です😓
この記述だと、
- フォームにコメントを入力する
- アラートが出る
- 「コメントする」ボタンを押す
ように見えます🤔
お手数ですが、もう一度確認いただけると幸いです🙇
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ご指摘ありがとうございます。
ご指摘の通りで
- フォームにコメントを入力する
- アラートが出る
- 「コメントする」ボタンを押す
となっておりました。
確認不足でした。お手間をおかけしました🙇♂️
- 未チェックの日報をクリック
- コメントを書いてコメントするをクリック
- 「日報を確認済みにしていませんがよろしいですか?」とアラートが出ることを確認
となるように
test 'show confirm dialog if report is not confirmed' do
visit_with_auth "/reports/#{reports(:report2).id}", 'machida'
assert_text '確認OKにする'
within('.thread-comment-form__form') do
fill_in('new_comment[description]', with: 'comment test')
click_button 'コメントする'
end
accept_confirm '日報を確認済みにしていませんがよろしいですか?' do
end
assert_text 'comment test'
end
と修正しました。
再度ご確認いただけますと幸いです。
よろしくお願いいたします🙇♂️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ご対応いただきありがとうございます🙏
こちらですが、私のaccept_confirm
の認識が間違っていたため、su-su-su-suさんの以前の変更が正しいです💦
公式ドキュメントの説明では、
Execute the block, accepting a confirm.
Expects a block whose actions will trigger the display modal to appear.
とあります。
https://www.rubydoc.info/gems/capybara/Capybara%2FSession:accept_confirm
ややこしいのですが、accept_confirm
のブロック内に書く処理は「モーダルを出現させる処理」なので、以前の変更のままで十分意図通りだと思います😓
折角ご対応いただいたのに混乱させてしまって申し訳ないです🙇🙇
私の方からはApproveさせていただきますので、修正次第komagataさんにレビュー依頼をお願いいたします🙇
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Judeeeee
ご確認ありがとうございます!
そうなのですね。
私こそ自分の書いたコードに自信がなく、ご指摘を頂いたまま修正してしまい申し訳ございません🙇♂️
こちら元のコードに修正いたしました。
お疲れ様です。ご確認ありがとうございます🙇♂️
私の方で再度テストをしました。 test/system/comments_test.rb をテストしました。 bin/rails test test/system/comments_test.rb
Running via Spring preloader in process 15261
Run options: --seed 8377
# Running:
................................
[Minitest::CI] Generating test report in JUnit XML format...
Finished in 105.349211s, 0.3038 runs/s, 0.7024 assertions/s.
32 runs, 74 assertions, 0 failures, 0 errors, 0 skips test/system/comments_test.rb のhow_confirm_dialog_if_report_is_not_confirmedのみテストをしました。 bin/rails test test/system/comments_test.rb -n /show_confirm_dialog_if_report_is_not_confirmed/
Running via Spring preloader in process 25194
Run options: -n /show_confirm_dialog_if_report_is_not_confirmed/ --seed 45360
# Running:
.
[Minitest::CI] Generating test report in JUnit XML format...
Finished in 21.066426s, 0.0475 runs/s, 0.0949 assertions/s.
1 runs, 2 assertions, 0 failures, 0 errors, 0 skips となっていて私の方ではテストは通っていたのですが、テストの方法が違っていたりしているのでしょうか? |
@su-su-su-su 結論、私の方でもテストが通ることを確認しました🙇 |
b288973
to
7bcd02a
Compare
ご確認ありがとうございます🙏 |
@komagata |
app/javascript/comments.vue
Outdated
@@ -294,6 +294,17 @@ export default { | |||
} | |||
}, | |||
postComment() { | |||
if (this.commentableType === 'Report' && this.isRole('mentor')) { | |||
const noConfirmed = !this.checkId |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
コード全体で確認(confirm)ではなくチェック(check)という用語を使っているのでそれに合わせた方がいいかなと思います。
そうなると!this.checkId
でもかなり意味がそのまま通るのでそのままでも良さそうですし、一旦変数に入れることで意味を明確にするのであれば、
const notChecked = !this.checkId
とかの方がいいかもです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ご指摘ありがとうございます。
ご提示いただいたconst notChecked = !this.checkId
に修正しました。
app/javascript/comments.vue
Outdated
const confirmResult = window.confirm( | ||
'日報を確認済みにしていませんがよろしいですか?' | ||
) | ||
if (!confirmResult) { | ||
return | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const confirmResult = window.confirm( | |
'日報を確認済みにしていませんがよろしいですか?' | |
) | |
if (!confirmResult) { | |
return | |
} | |
if (window.confirm('日報を確認済みにしていませんがよろしいですか?')) { | |
return | |
} |
でいいかも?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ご指摘ありがとうございます。
ご提示いただいたコードを動作確認したところ「日報を確認済みにしていませんがよろしいですか?」とアラートが表示され「OK」を押すとtrue
が返されreturn
が実行されてしまい、期待した動作になりませんでした。
そのため!window.confirm('日報を確認済みにしていませんがよろしいですか?')
として、false が返るように修正しました。
修正後のコードは以下です。
if (this.commentableType === 'Report' && this.isRole('mentor')) {
const notChecked = !this.checkId
if (notChecked) {
if (
!window.confirm('日報を確認済みにしていませんがよろしいですか?')
) {
return
}
}
}
7bcd02a
to
e87fd1c
Compare
お疲れ様です。 |
app/javascript/comments.vue
Outdated
if (notChecked) { | ||
if ( | ||
!window.confirm('日報を確認済みにしていませんがよろしいですか?') | ||
) { | ||
return | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
不必要なブロックの入れ子は避けるべきなので下記はいかがでしょうか??
if (notChecked) { | |
if ( | |
!window.confirm('日報を確認済みにしていませんがよろしいですか?') | |
) { | |
return | |
} | |
} | |
if (notChecked && !window.confirm('日報を確認済みにしていませんがよろしいですか?')) { | |
return | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@komagata
コメントありがとうございます。
ご提案頂いたコードに修正しました。
不必要なブロックの入れ子にならないように自分でも気づけるように注意したいと思います。
ありがとうございます!
e87fd1c
to
02d7e9d
Compare
@komagata |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
確認させて頂きました。OKです〜🙆♂️
元々メンターが日報にコメントをだけ入れて確認済みにしないまま画面を離れようとしたらアラートを出す。
というイシューだったのですが、ブラウザの仕様によりbeforeunloadイベントではカスタムメッセージを表示することができないことがわかりました。
そのことを町田さんに相談させていただいて、確認済になっていないとき、Bではなく、Aをクリックしたら、
「日報を確認済みにしていませんがよろしいですか?」
とアラートを出るようにしたいということで進めました。
Issue
概要
日報が確認OKされていない場合、メンターがコメントした時にアラートが出るように実装しました。
変更確認方法
feature/alert-for-unconfirmed-daily-report-comment
をローカルに取り込むforeman start -f Procfile.dev
でローカル環境を立ち上げるmachida
でログインコメントする
をクリックScreenshot
変更前
変更後
念のため、以下の2つも確認しました。
メンター以外がコメントしてもアラートが出ないことも確認しました。
メンターが日報が以外にコメントしてもアラートが出ないことを確認しました。