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

お試し延長 開始・終了機能を作成 #4030

Merged
merged 24 commits into from
Feb 3, 2022

Conversation

haruna-tsujita
Copy link
Contributor

@haruna-tsujita haruna-tsujita commented Jan 25, 2022

#3910 お試し延長 開始・修了機能

概要

お試し延長キャンペーンの開始・終了機能を作成しました。

お試し延長キャンペーンは料金支払いサービスStripeと関連しており、ユーザーのお試し終了日などはStripeのAPIから情報を得られるため、このIssueでは「◯年◯月◯日〜✖️年✖️月✖️日にキャンペーンがある」また、「そちらと連動してトップページなどが切り替わる」という部分を実装しました。

※今回のPRでは、キャンペーン中のお試し延長日数を7日間として表示していますが、今後この部分はパーシャルにして一括で置き換えられる予定です!

管理画面(お試し延長登録)

お試し延長キャンペーンを行った際に、管理ページでキャンペーン期間(◯年◯月◯日〜✖️年✖️月✖️日)とタイトルを設定できるよう実装しました

  • お試し延長の新規登録
  • 作成したお試し延長一覧を表示
  • 管理画面のユーザー一覧にて、お試し延長適用中のユーザータブを作成

変更前

お試し延長タブなし
スクリーンショット 2022-01-26 16 46 39

変更後

一覧
スクリーンショット 2022-01-26 17 08 48

新規登録画面
スクリーンショット 2022-01-26 17 12 36

管理画面(お試し延長ユーザー)

変更前

貼り付けた画像_2022_01_05_16_52

変更後

スクリーンショット 2022-01-26 17 13 48

トップページ・管理画面・ウェルカムページ

管理画面でお試し延長を設定することで以下が自動的に切り替わるよう実装しました。
各ページ、既存の画面と変わりはないので、キャンペーン適用内外で比較しています。

  • トップページにキャンペーンが表示される
  • トップページからアクセスできる料金ページのお試し期間に絡む日数
  • 参加登録画面の上部に「お試し適用中」の旨が表示される
  • 参加登録画面のカード登録欄下部のお試し適用期間
  • お試し中のユーザーに表示されるウェルカムページの日数

トップページ

キャンペーン外

スクリーンショット 2022-01-26 13 16 32

キャンペーン中

スクリーンショット 2022-01-26 17 23 12

料金ページ

キャンペーン外

  1. http://localhost:3000/pricing にアクセス

スクリーンショット 2022-01-26 13 19 33

スクリーンショット 2022-01-26 13 21 02

キャンペーン中

スクリーンショット 2022-01-26 17 25 27

参加登録

キャンペーン外

スクリーンショット 2022-01-26 16 57 42

スクリーンショット 2022-01-26 16 58 40

キャンペーン中

スクリーンショット 2022-01-26 17 32 12

スクリーンショット 2022-01-26 17 33 42

ウェルカムぺージ

キャンペーン外

スクリーンショット 2022-01-26 17 00 23

キャンペーン中

スクリーンショット 2022-01-26 17 29 46

動作確認手順

お手数ですが、talkに関連するseedがこのブランチには取り込まれていないので、最新のmainpull --rebaseしたローカルブランチにこちらをpullしてくださるようお願いします🙇🏻‍♀️

  1. feature/function-about-extension-of-trial-periodをローカルの任意のブランチにpullする

  2. 新たにCampaignテーブルを作成したため、$ rails db:migrateを行う

  3. $ rails db:seedを行うと、seedした時点で入会したユーザー(お試し 延長さん)が新たに作成される

  4. お試し延長キャンペーンのデータがないサイトの状態を確認する

    • トップページのキャンペーン広告と料金ページの変更点
    • 参加登録画面の変更点
    • 上記のユーザーでログインし、ウェルカムページの変更点
    • 管理者(komagata)でログインし、管理画面のユーザー一覧とお試し延長ページの変更点
  5. お試し延長のデータがあるサイトの状態を確認する

    • お試し延長の期間を設定(今日を挟むように任意の月日を入力)
    • 既に終了したキャンペーンを任意の月日で作成し、一覧ページでステータス:終了、編集不可になっているか
    • 一覧ページではキャンペーンの日付が新しいものが上に来るようになっているか
    • http://localhost:3000/admin/usersのお試し延長タブの一覧に該当ユーザーが表示されているか
      に加えて、4の項目

確認項目が多くお手数をおかけしてすみませんが、よろしくお願いします!
不明点があればお知らせください🙇🏻‍♀️

@haruna-tsujita haruna-tsujita self-assigned this Jan 25, 2022
@haruna-tsujita haruna-tsujita force-pushed the feature/function-about-extension-of-trial-period branch from 6e3cba4 to 9a78d96 Compare January 26, 2022 03:48
@haruna-tsujita
Copy link
Contributor Author

@maeda-seina
お疲れ様です!ご都合の良い時にこちらのレビューをお願いしたいです。よろしくお願いします🙇🏻‍♀️✨

@haruna-tsujita haruna-tsujita marked this pull request as ready for review January 26, 2022 08:47
Copy link
Contributor

@maeda-seina maeda-seina left a comment

Choose a reason for hiding this comment

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

@napple29 さん
細かく丁寧にコミットされていて、変更意図がわかりやすかったです!🙇‍♂️
また、issue・PRに「あえて変更していないところ」の記述がわかりやすく書かれていてとても理解しやすかったです🙏
PRに載せていただいている変更箇所は実際に手を動かして確認したところオッケーだと思いました!
細かいところにはなりますが、何点かコメントしておりますので、ご確認のほどよろしくお願いいたします。
(命名の部分につきましては、変更しなくてよさそうと判断されたらそのままにしておいてください🙏 )

app/views/admin/campaigns/edit.html.slim Outdated Show resolved Hide resolved
assert_text 'お試し延長を更新しました。'
assert_text '春のお試し祭り'
assert_text (yesterday).strftime("%Y年%m月%d日(#{wd[yesterday.wday]}) %H:%M")
assert_text (five_days_later).strftime("%Y年%m月%d日(#{wd[five_days_later.wday]}) %H:%M")
Copy link
Contributor

Choose a reason for hiding this comment

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

46行目の(yesterday)と47行目の(five_days_later)についてですが、29行目のtodayと30行目のseven_days_later()がないので、どちらかで統一した方が良いのではないか?と思いました!

class CampaignTest < ActiveSupport::TestCase
test 'recently campaign' do
later_campaign = campaigns(:campaign2)
earlier_campaign = campaigns(:campaign1)
Copy link
Contributor

Choose a reason for hiding this comment

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

こちらの、later_campaignearlier_campaignの変数の命名についてなんですが、laterは「後の」という意味があり、earilerは「以前の」という意味があるので、どちらが前のキャンペーンで、どちらが後のキャンペーンなのか少しわかりづらい気がしました。
現在開催されているものが、:campaign1で、過去に開催されたものが:campaign2ということで、少し考えたところ現在のものがlatest_campaignとかcurrent_campaign、過去のものがpast_campaignとかが直感的にわかりやすいかもしれない?と思いました!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

参考になります、、🙏🏻修正しました!

@haruna-tsujita haruna-tsujita force-pushed the feature/function-about-extension-of-trial-period branch from 9a78d96 to c714228 Compare January 27, 2022 05:29
@haruna-tsujita
Copy link
Contributor Author

@maeda-seina
お疲れ様です!レビューしていただきありがとうございます🙇🏻‍♀️
修正したのでお時間のある時にご確認をお願いします〜!

@maeda-seina
Copy link
Contributor

@napple29 さん

確認させて頂きました!👍
レビューさせてもらい、とても勉強になりました!😊 🙏

@haruna-tsujita
Copy link
Contributor Author

@maeda-seina
こちらこそありがとうございました〜😊✨

@komagata
お疲れ様です。チームメンバーのレビューを通過しましたので、ご都合の良い時にレビューをお願いします!

# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html

campaign1:
start_at: <%= Time.zone.today %>
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
start_at: <%= Time.zone.today %>
start_at: <%= Time.current %>

こちらの方がスマートかもです〜

Copy link
Contributor Author

Choose a reason for hiding this comment

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

教えていただきありがとうございます!こちら、修正が複数箇所あったので全て修正しました!

test 'update a campaign' do
yesterday = Time.zone.today - 1.day
five_days_later = Time.zone.today + 5.days
wd = %w[日 月 火 水 木 金 土]
Copy link
Member

Choose a reason for hiding this comment

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

複数回出てくるのであればテストクラスの定数にしちゃった方がいいかもです〜

Comment on lines +8 to +13
with_options if: -> { start_at && end_at } do
validate :end_at_be_greater_than_start_at
end
Copy link
Contributor

Choose a reason for hiding this comment

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

Rails 7から日付の比較に ComparisonValidator を使えるようになるので、コメントを残しておきたいなと思いました。
こうしておけば、Rails 7に上げた後に気づいた人が直してくれるかなと思うので。

  # TODO: Rails 7に更新後、 `ComparisonValidator` を使うように直す。
  # refs: https://github.com/rails/rails/pull/40095
  # validates :end_at, greater_than: :start_at
  with_options if: -> { start_at && end_at } do
    validate :end_at_be_greater_than_start_at
  end

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@sinsoku
ありがとうございます!!教えていただいた通り、コメントで追記させていただきました!勉強になりました🙇🏻‍♀️

Copy link
Member

Choose a reason for hiding this comment

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

Rails 7から日付の比較に ComparisonValidator を使えるようになるので、

ヘェ〜知らなかった😲

@haruna-tsujita haruna-tsujita force-pushed the feature/function-about-extension-of-trial-period branch from c714228 to 01d9dd0 Compare January 31, 2022 05:41
@haruna-tsujita
Copy link
Contributor Author

@komagata
レビューありがとうございました!
指摘していただいた箇所を修正しました。また、それに伴い一部テストを修正しましたのでご確認をお願いします🙇🏻‍♀️

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.

conflictの修正お願いします〜

@haruna-tsujita haruna-tsujita force-pushed the feature/function-about-extension-of-trial-period branch from d652791 to 93c526a Compare January 31, 2022 16:02
@haruna-tsujita haruna-tsujita force-pushed the feature/function-about-extension-of-trial-period branch from 93c526a to e12555b Compare February 1, 2022 12:34
@haruna-tsujita
Copy link
Contributor Author

@komagata
お疲れ様です!コンフリクトを解消しましたので、ご確認をお願いします🙇🏻‍♀️

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ですー🙆‍♂️

Comment on lines +8 to +13
with_options if: -> { start_at && end_at } do
validate :end_at_be_greater_than_start_at
end
Copy link
Member

Choose a reason for hiding this comment

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

Rails 7から日付の比較に ComparisonValidator を使えるようになるので、

ヘェ〜知らなかった😲

@komagata
Copy link
Member

komagata commented Feb 2, 2022

@machida コードレビューはOKです。デザイン面の確認お願いできれば〜

@haruna-tsujita
Copy link
Contributor Author

@komagata
こちらがチーム開発最後のIssueだったので無事レビューが通ってホッとしています😊ありがとうございました!!

@haruna-tsujita
Copy link
Contributor Author

@machida
お疲れ様です!Issueを引き継いでいただき、ありがとうございます!

レビューを無事終えられましたので、デザインをお願いします☺️
以下が該当のファイルです。よろしくお願いします🙇🏻‍♀️


念の為管理画面のデザインの確認をお願いしたいです。

管理画面の入力欄
app/views/admin/campaigns/_form.html.slim

一覧画面
app/views/admin/campaigns/index.html.slim

以下は現状だと該当部分をif文でキャンペーン適用中か分岐させて表示が変更されるようになっています。

ウェルカムメッセージ
app/views/home/_welcome_message.html.slim

参加登録画面 一番上の部分
app/views/users/new.html.slim

参加登録画面 クレジットカード入力欄下の日数
app/views/card/_notice.html.slim 

料金ページ
app/views/welcome/pricing.html.slim

↓また、関連がありそうなファイルです。

トップページのキャンペーン広告(※今回変更を入れていないのでPRのFile Changedには入っていません)
app/views/welcome/_campaign.html.slim

@machida
Copy link
Member

machida commented Feb 2, 2022

デザイン入れていきますー

@machida
Copy link
Member

machida commented Feb 3, 2022

@komagata こちら、デザインを入れつつ機能を追加していきたいので、一旦マージをしてしまいたいですー

#4130
こういう機能を入れていきたいと思います。

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.

5 participants