決済が絡む機能はZennのリリース時点から存在していたものです。というわけで記憶が曖昧で、テストに割いた期間は覚えていないです。人数は1人ですね。

当時はStripeのCharge APIを利用しており、決済フローが同期的だったのでテストも書きやすかったですね。バックエンドを中心にユニットテストを厚めに書いていたと思います。

具体的には以下のようなものです。

  • 決済のAPIエンドポイントが適切なパラメーターのみを受け付けること

    • 金額のバリデーション

    • アイテムの状態に基づくバリデーション(例:未公開の本は購入できない / 自分の本は購入できない / 購入済みの本は購入できない etc)

  • StripeのCharge APIが適切な引数で呼ばれること

  • 通知が適切に作成されること

  • Stripe APIの決済に成功したにも関わらず、DBの更新に失敗したときは運営のSlackにアラートが飛ぶこと

リリース後しばらくしてから非同期のPayment Intents APIに移行したため、実装は複雑になり、テストも書きづらくなりました。その分クライアント側の表示も含めてCypressでE2Eテストも行うようになりました。

という感じですね。

2023/10/03投稿
Loading...
匿名で catnose さんにメッセージを送ろう
0 / 20000

利用規約プライバシーポリシーに同意の上ご利用ください

Loading...