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

Regular Event のテストが失敗していたバグを修正 #8256

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

Conversation

mousu-a
Copy link
Contributor

@mousu-a mousu-a commented Dec 19, 2024

Issue

概要

Regular Event の一部テストケースで、イベント開催日時を「第二水曜日」としており、年内にこれ以降第二水曜日が存在しない状況の時に、次回の開催日を参照する変数の中身がnilとなってしまいテストが落ちてしまっていたバグを修正しました。

変更確認方法

  1. bug/regular-event-test-failsをローカルに取り込む
    1. git fetch origin bug/regular-event-test-fails
    2. git checkout bug/regular-event-test-fails
  2. テストが通ることを確認する
    1. rails test test/system/regular_events_test.rb
    2. rails test test/models/regular_event_test.rb

Screenshot

テストが落ちるバグ対応のため、画面の変更はありません!

@mousu-a mousu-a changed the title Bug/regular event test fails Regular Event のテストが失敗していたバグを修正 Dec 19, 2024
to: Date.new(Time.current.year, 12, 31)
def scheduled_dates_within_period(
from: Time.current.to_date,
to: Time.current.to_date.next_year
Copy link
Contributor Author

Choose a reason for hiding this comment

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

kyokuchoさんが仰っていたように、取得する日付が"年始〜年末"で固定されているのが問題だと思ったので、取得する日付を"今日〜来年の今日"までとしました。

Copy link
Member

@komagata komagata Dec 19, 2024

Choose a reason for hiding this comment

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

@mousu-a 色々とメソッド名が変わっているのはなぜでしょうか?
toを来年にするだけで、メソッドの意味は合っているように思います。
他のすべてのメソッドについても同じです。

Copy link
Contributor Author

@mousu-a mousu-a Dec 19, 2024

Choose a reason for hiding this comment

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

@komagata
all_scheduled_datesを変えたのは、元々のメソッドが、"今年の全てのスケジュールの日付"を取得するメソッドだったたところを、"今日〜来年の今日"(指定した期間のスケジュールの日付を取得する)メソッドに変えたのでメソッド名を変えました。

feature_scheduled_datesを変えたのは、既にbootcamp内にUpcomingEventクラスがあり文脈がより伝わりやすいかなと考えたためです。

next_holding_dateを変えたのは、メソッド名を見てdateオブジェクトを返すメソッドに勘違いしそうだったため変更しました。


すみません、このissueに限った話ではないのですが、"自分が書いた部分・それ以外という分け方で考えず、コード全体としてあるべき姿に"、ということと、"そのissue内で修正していい範囲"のラインを測りかねています💦

今回のkomagataさんの質問の意図としては、既存コードで十分に読みやすい、且つこのissue内で必要なこと(バグの修正)以外するべきではない、ということでしょうか?

Copy link
Member

Choose a reason for hiding this comment

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

@mousu-a

"自分が書いた部分・それ以外という分け方で考えず、コード全体としてあるべき姿に"

こちらはその通りです。

今回のkomagataさんの質問の意図としては、既存コードで十分に読みやすい、且つこのissue内で必要なこと(バグの修正)以外するべきではない、ということでしょうか?

そういうわけではないです。ただ、一部は単純に変更前の方が良いと思うからでです。

all_scheduled_datesを変えたのは、元々のメソッドが、"今年の全てのスケジュールの日付"を取得するメソッドだったたところを、"今日〜来年の今日"(指定した期間のスケジュールの日付を取得する)メソッドに変えたのでメソッド名を変えました。

all_scheduled_datesには”今年”という意味は含まれていないので名前を変える必要はないと思います。名前が間違っているのではなく、実装が間違っていただけだと思います。また、in, with, within, and, orなどがメソッド名に付く場合も冗長な名前、処理になっていることが多いので注意が必要です。

Copy link
Contributor Author

@mousu-a mousu-a Dec 19, 2024

Choose a reason for hiding this comment

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

all_scheduled_datesには”今年”という意味は含まれていないので名前を変える必要はないと思います。

よく考えてみると仰る通りfrom to が変わっているだけで実装自体は変わっていませんでした🙇‍♂️
変数名はそのままに、from to を"今日〜来年の今日"としました。

from to をこのようにした理由としては、動作も問題なく、既存のコードであるself.fetch_participated_regular_eventsfrom to を指定する二度手間を防げるためこのfrom to にしました。
0a00905

@mousu-a mousu-a requested a review from komagata December 19, 2024 05:21
@mousu-a mousu-a marked this pull request as ready for review December 19, 2024 05:21
@mousu-a
Copy link
Contributor Author

mousu-a commented Dec 19, 2024

@komagata
先日のMTGでお話しさせていただいた"mainブランチのテストが落ちるバグ"を修正いたしました。
こちらお手すきの際にご確認ください🙇‍♂️

@mousu-a mousu-a self-assigned this Dec 19, 2024
@@ -148,9 +145,9 @@ def end_at_be_greater_than_start_at
errors.add(:end_at, ': イベント終了時刻はイベント開始時刻よりも後の時刻にしてください。')
end

def feature_scheduled_dates
def upcoming_scheduled_dates
Copy link
Member

Choose a reason for hiding this comment

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

実装にも変更があるならいいかもですが、名前だけ変更というのは強力な理由がないとやらないかもです。
ただ、こちらは確かに元の名前より少しいいと思うのでこちらで大丈夫です。

Copy link
Contributor Author

@mousu-a mousu-a Dec 19, 2024

Choose a reason for hiding this comment

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

ありがとうございます!
こちらの変更はそのまま残しています。
88e5552

@@ -9,7 +9,7 @@ def holding_cycles
end.join('、')
end

def next_holding_date
def holding_status
Copy link
Member

Choose a reason for hiding this comment

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

ステータスが出る場合も日付が出る場合もあるので、どちらがより良いとも言えないかもです。
また、急ぎのバグ修正の場合はあまり関係ないところは弄らず、変更するとしてもリリース後にリファクタリングのPRとして作るのがいいかもです。

Copy link
Contributor Author

@mousu-a mousu-a Dec 19, 2024

Choose a reason for hiding this comment

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

すみません!こちら元に戻しました🙇‍♂️
88e5552
(リベースしたため履歴には残っていません)

@mousu-a mousu-a force-pushed the bug/regular-event-test-fails branch from 6b3d779 to 88e5552 Compare December 19, 2024 23:26
@mousu-a
Copy link
Contributor Author

mousu-a commented Dec 19, 2024

@komagata
レビューありがとうございます!
修正いたしましたので再度ご確認をお願いいたします。


元に戻した履歴をhistoryに残したくなかったためリベースしました。
お手数ですがmainにてこちらお願いいたします🙇‍♂️
git branch -D bug/regular-event-test-fails
git fetch origin bug/regular-event-test-fails
git checkout bug/regular-event-test-fails

@komagata
Copy link
Member

komagata commented Dec 20, 2024

@mousu-a 修正ありがとうございます。

元に戻した履歴をhistoryに残したくなかったためリベースしました。

これの主語は何でしょうか?すみません、ちょっと全体の文章の意味がわかりませんでした。

お手数ですがmainにてこちらお願いいたします🙇‍♂️

これってなぜ必要なんでしょうか?
ちょっと必要なシチュエーションが想像できませんでした。

ちょっとどのような状態かわかりませんが、 @mousu-a 3自身でこのブランチで git rebase main して g push --force-with-lease すればいいシチュエーションかも?

Comment on lines 112 to 113
from: Time.current.to_date,
to: Time.current.to_date.next_year
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
from: Time.current.to_date,
to: Time.current.to_date.next_year
from: Date.current,
to: Date.current.next_year

でいいかもです。

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Date.currentでも同じ結果になるのは知りませんでした。修正しました!
1a9a8d3

@mousu-a
Copy link
Contributor Author

mousu-a commented Dec 20, 2024

@komagata
レビューありがとうございます!
ただいまテスト回していますのでお待ちください🙏


元に戻した履歴をhistoryに残したくなかったためリベースしました。

これの主語は何でしょうか?すみません、ちょっと全体の文章の意味がわかりませんでした。

すみません、今回発生した以下の無駄な変更

  • next_holding_dateholding_statusに変更した→元に戻した
  • all_scheduled_datesscheduled_dates_within_periodに変更した→元に戻した

この変更(コミット)をリモートに残したくなかったため、ローカルでコミット履歴を改竄しました。
という意味合いです🙏

@mousu-a
Copy link
Contributor Author

mousu-a commented Dec 20, 2024

@komagata

お手数ですがmainにてこちらお願いいたします🙇‍♂️
git branch -D bug/regular-event-test-fails
git fetch origin bug/regular-event-test-fails
git checkout bug/regular-event-test-fails

これってなぜ必要なんでしょうか?
ちょっと必要なシチュエーションが想像できませんでした。

すみません、git pull origin bug/regular-event-test-failsするだけで事足りました。こちらお忘れください🙏

上のコメントにあるように、ローカルでコミット履歴を改善したので、ローカルのブランチを削除して再度リモートからgit fetchし直さなきゃいけないと思い込んでしまっていました。

@mousu-a
Copy link
Contributor Author

mousu-a commented Dec 20, 2024

@komagata
レビューありがとうございます!!
修正いたしましたので再度レビューをお願いいたします。

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.

2 participants