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

ブログの公開済み記事が公開日順で並ぶようにした #8167

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

Conversation

MikotoMakizuru
Copy link
Contributor

@MikotoMakizuru MikotoMakizuru commented Oct 30, 2024

Issue

概要

こちら のプルリクの対応により、ブログ一覧のソート順が作成日時の降順で並んでいました。今回のバグ修正対応では、ブログの公開日順で並ぶようにしました。

変更確認方法

  1. bug/articles-are-displayed-from-the-date-of-latest-publication をローカルに取り込む
  2. rails db:seed を実行して初期データ投入(このコマンドはローカルの DB データを初期化するので、初期化しても問題ないタイミングで行ってください。DB のデータが初期状態の場合実行する必要はありません。)
  3. コマンドライン環境で rails c を起動し、下記の「テストーデータ」を投入する ruby のコマンドを実行
  4. foreman start -f Procfile.dev でサーバを起動し、http://localhost:3000/articles/ にアクセス
  5. 「1..3番目に表示されてほしいブログ」の順にブログが表示されていることを確認

Screenshot

変更前

スクリーンショット 2024-11-02 3 21 20

変更後

スクリーンショット 2024-11-02 3 21 47

テストデータ

Article.create(
  title: '1番目に表示されてほしいブログ',
  body: 'test',
  created_at: Date.current - 6.day,
  updated_at: Date.current - 6.day,
  user_id: 459775584,
  published_at: Date.current - 1.day
)

Article.create(
  title: '2番目に表示されてほしいブログ',
  body: 'test',
  created_at: Date.current - 5.day,
  updated_at: Date.current - 5.day,
  user_id: 459775584,
  published_at: Date.current - 2.day
)

Article.create(
  title: '3番目に表示されてほしいブログ',
  body: 'test',
  created_at: Date.current - 4.day,
  updated_at: Date.current - 4.day,
  user_id: 459775584,
  published_at: Date.current - 3.day
)

@MikotoMakizuru MikotoMakizuru self-assigned this Oct 31, 2024
@MikotoMakizuru MikotoMakizuru force-pushed the bug/articles-are-displayed-from-the-date-of-latest-publication branch from b6dca70 to 2c1ae41 Compare November 1, 2024 12:14
@MikotoMakizuru
Copy link
Contributor Author

@kurumadaisuke
お疲れ様です、コードレビューをお願いすることは可能でしょうか。
よろしくお願いいたします。

@kurumadaisuke
Copy link
Contributor

@MikotoMakizuru
すいません、ちょっと家のことでバタバタしていてまとまった時間が取れそうにありません🙇‍♂️

@MikotoMakizuru
Copy link
Contributor Author

@Judeeeee
お疲れ様です、コードレビューをお願いすることは可能でしょうか。
よろしくお願いいたします。

@Judeeeee
Copy link
Contributor

Judeeeee commented Nov 3, 2024

@MikotoMakizuru
お疲れ様です〜
承知しました!
今週ちょっと忙しいので、1週間目処でのレビューと認識いただけると幸いです🙇
もし急ぎであれば、お手数ですが他の方に依頼いただけると幸いです🙏

@Judeeeee Judeeeee self-requested a review November 3, 2024 13:28
@MikotoMakizuru
Copy link
Contributor Author

@Judeeeee

今週ちょっと忙しいので、1週間目処でのレビューと認識いただけると幸いです🙇

かしこまりました、問題ありません!
よろしくお願いいたします。

@Judeeeee
Copy link
Contributor

@MikotoMakizuru
お疲れ様です!
ちょっと本日見れそうにないので、明日レビューさせていただきます🙇
お待たせして恐縮ですが、引き続きよろしくお願いいたします💦

@MikotoMakizuru
Copy link
Contributor Author

@Judeeeee
ご連絡ありがとうございます!
かしこまりました、明日でも問題ありません。

お忙しいところ恐れ入ります、よろしくお願いします🙇‍♂️

Copy link
Contributor

@Judeeeee Judeeeee left a comment

Choose a reason for hiding this comment

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

@MikotoMakizuru
お待たせしました!

ブラウザでの動作確認はOKでした🙆
レビューしている中で、気になった箇所がいくつかあるのでコメントしました🙏

Comment on lines 70 to 78
def list_articles
articles = Article.with_attached_thumbnail.includes(user: { avatar_attachment: :blob })
.order(published_at: :desc, created_at: :desc).page(params[:page])
admin_or_mentor_login? ? articles : articles.where(wip: false)
end

def list_recent_articles(number)
Article.with_attached_thumbnail.includes(user: { avatar_attachment: :blob })
.where(wip: false).order(published_at: :desc).limit(number)
Copy link
Contributor

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

Choose a reason for hiding this comment

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

なるほど、そのような観点があるのですね!戻しておきました b5410cf

Copy link
Contributor

Choose a reason for hiding this comment

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

ありがとうございます!
後出しですが、公式docにも記述があるのでよかったら参考にしてみてください〜!🙏

1 つの目的を満たす、焦点を絞った小さな pull request を作成することを目的とします。 pull request を小さくすると、レビューとマージが簡単かつ迅速になり、バグを導入する余地が少なくなり、変更の履歴がより明確になります。

ref: pull request のベスト プラクティス

@@ -414,6 +414,40 @@ class ArticlesTest < ApplicationSystemTestCase
assert_no_text 'WIPの記事は atom feed に表示されない'
end

test 'articles are displayed from the most recent publication date' do
Copy link
Contributor

Choose a reason for hiding this comment

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

article4 ~ 6がぱっと見で何が違うのか分かりにくいので、変数名を工夫するとよりわかりやすくなる気がします👀

Copy link
Contributor Author

Choose a reason for hiding this comment

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

違いがわかるよう変数名再考しましたので、ご確認お願いします c270255

Copy link
Contributor

Choose a reason for hiding this comment

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

修正ありがとうございます!OKです!🙆

Comment on lines 418 to 444
article4 = Article.create(
title: 'タイトル4',
body: 'テスト用のWIP記事4',
user: users(:komagata),
wip: false,
created_at: Date.current - 4.days,
updated_at: Date.current - 4.days,
published_at: Date.current - 3.days
)
article5 = Article.create(
title: 'タイトル5',
body: 'テスト用のWIP記事5',
user: users(:komagata),
wip: false,
created_at: Date.current - 5.days,
updated_at: Date.current - 5.days,
published_at: Date.current - 2.days
)
article6 = Article.create(
title: 'タイトル6',
body: 'テスト用のWIP記事6',
user: users(:komagata),
wip: false,
created_at: Date.current - 6.days,
updated_at: Date.current - 6.days,
published_at: Date.current - 1.day
)
Copy link
Contributor

Choose a reason for hiding this comment

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

fixturesでデータを作成せずに、テストファイルでArticle.createしたのは何か理由があったりしますか?👀

このファイル内で直接Article.createしている方もいるので強く言えないのですが、可読性の観点(コードが短い方がわかりやすいと自身は思っている)からfixtureを使った方がよりよくなると思いました🙆‍♀️

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixturesでデータを作成せずに、テストファイルでArticle.createしたのは何か理由があったりしますか?👀

以前、以下の PR で「fixtures を使用すると、全テストケースで DB に INSERT/DELETE が発生し、テストが重くなるため、1 つのテストでしか使用しないデータは、そのテスト内で作成してください」というレビューをを受けたことがありました。
今回も、このテストだけで使用するデータだったため、テスト内で作成するようにしました。
#7995 (comment)

可読性の観点(コードが短い方がわかりやすいと自身は思っている)からfixtureを使った方がよりよくなると思いました🙆‍♀️

私も Judeeeee さんと同じ考えです。
過去に fixtures に書くべきタイミングについて回答したことがあるのでそちらも参考程度に読んでいただければと思います。 #8066 (comment)

Copy link
Contributor

Choose a reason for hiding this comment

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

丁寧なコメントありがとうございます🙇

fixtures を使用すると、全テストケースで DB に INSERT/DELETE が発生し、テストが重くなるため

そうだったのですね!こちらについて知らなかったので勉強になりました!ありがとうございます🙏
OKとさせていただきますー🙆

Comment on lines 447 to 448
titles = all('h2.thumbnail-card__title').map(&:text)
assert_equal [article6.title, article5.title, article4.title, @article2.title, @article.title], titles
Copy link
Contributor

Choose a reason for hiding this comment

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

今回テストしたい対象はarticle4~6なので、@ article2, @ articleは含まない方がテストが明確になると思いました🙆‍♀️

Suggested change
titles = all('h2.thumbnail-card__title').map(&:text)
assert_equal [article6.title, article5.title, article4.title, @article2.title, @article.title], titles
top_three_articles = all('h2.thumbnail-card__title').take(3).map(&:text)
assert_equal [article6.title, article5.title, article4.title], top_three_articles

参考: takeメソッド

Copy link
Contributor Author

Choose a reason for hiding this comment

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

確かにテストする対象が明確になりますね、修正しました 62741c7

Copy link
Contributor

Choose a reason for hiding this comment

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

修正ありがとうございます〜!OKです👍

@MikotoMakizuru MikotoMakizuru force-pushed the bug/articles-are-displayed-from-the-date-of-latest-publication branch from 2c1ae41 to 62741c7 Compare November 16, 2024 08:23
@MikotoMakizuru
Copy link
Contributor Author

@Judeeeee
お忙しいところ、レビューありがとうございます!
修正および返信いたしましたので、ご確認お願いします。

Copy link
Contributor

@Judeeeee Judeeeee left a comment

Choose a reason for hiding this comment

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

@MikotoMakizuru

とんでもないです!こちらこそ修正ありがとうございました!
コメントに返信いたしましたので、ご確認ください🙏

私からはapproveさせていただきます〜👍
修正お疲れ様でした!🍵

@MikotoMakizuru
Copy link
Contributor Author

@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.

3 participants