Feature
マスタ管理 18 Scenarios
Master Data Management — UC-14 〜 UC-19
UC-14
商品の追加
PRD-001 · PRD-002 · PRD-003
店長が新商品をメニューに追加する。画像はR2バケットにアップロード。magic-byte検証(JPEG/PNG/WebP)でファイル種別を確認する。
Background
各シナリオの共通前提
Given店長は認証済みで商品管理画面
/products を表示している# guardRole(c, "manager") — manager ロール必須
Scenarios
01
Scenario · @happy-path
商品の新規追加(画像あり)
Given店長は「商品を追加」ボタンをクリックしている
And商品名・価格・税率・カテゴリを入力している
AndJPEG / PNG / WebP 形式の画像ファイルを選択している
When「保存」ボタンをクリックする
Then画像の magic-byte 検証が行われる
And画像が R2 バケットにアップロードされる
And新 PRODUCT レコードが DB に保存される
And商品一覧に新商品が表示される
02
Scenario · @error
必須項目が未入力
Given店長が商品名または価格を入力していない
When「保存」ボタンをクリックする
Thenバリデーションエラーを表示する
03
Scenario · @security
不正な画像形式のアップロード試行
Given店長が JPEG / PNG / WebP 以外のファイルを選択している
When「保存」ボタンをクリックする
Then「JPEG/PNG/WebP 以外のファイルは受け付けられません」エラーを表示する
# Content-Type ではなく magic bytes で判定
# JPEG: FF D8 FF / PNG: 89 50 4E 47 / WebP: RIFF....WEBP
UC-15
商品の編集
PRD-004 · PRD-005
店長が既存商品の情報を編集する。画像差し替え時は旧画像を R2 から削除する。
Background
各シナリオの共通前提
Given店長は認証済みで商品管理画面
/products を表示しているAnd商品が 1 件以上存在する
Scenarios
04
Scenario · @happy-path
商品情報の更新
Given店長は編集したい商品の「編集」ボタンをクリックしている
And現在の商品情報がフォームに入力済みで表示されている
When必要な項目を修正して「保存」をクリックする
ThenPRODUCT レコードが更新される
And商品カードが更新後の情報で表示される
05
Scenario · @happy-path
画像の差し替え
Given店長は新しい画像ファイルを選択している
When「保存」をクリックする
Then旧画像が R2 バケットから削除される
And新画像が R2 バケットにアップロードされる
AndPRODUCT レコードの
photo_url が更新される
UC-16
商品の削除
PRD-006 · PRD-007
店長が廃止商品をメニューから削除する。確認ダイアログで誤削除を防ぐ。
Background
各シナリオの共通前提
Given店長は認証済みで商品管理画面
/products を表示しているAnd削除対象の商品が存在する
Scenarios
06
Scenario · @happy-path
商品の削除
Given店長は削除したい商品の「削除」ボタンをクリックしている
When確認ダイアログで「OK」をクリックする
ThenPRODUCT レコードが DB から削除される
And商品一覧から対象商品が消える
07
Scenario · @alternative
削除のキャンセル
Given店長は確認ダイアログを表示している
When「キャンセル」をクリックする
Then削除操作がキャンセルされ一覧表示を維持する
UC-17
カテゴリの追加・編集・削除
CAT-001 〜 CAT-004 · CAT-006
店長がカテゴリを追加・編集・削除する。スラッグの重複チェックを行う。削除は確認ダイアログで誤操作を防ぎ、商品が紐づくカテゴリを削除する際は警告を表示する。
Background
各シナリオの共通前提
Given店長は認証済みでカテゴリ管理画面
/categories を表示している
Scenarios
08
Scenario · @happy-path
新規カテゴリの追加
Given店長は「カテゴリを追加」ボタンをクリックしている
Andカテゴリ名(日本語)を入力している
Andスラッグ(英数字)を入力している
When「保存」ボタンをクリックする
Thenスラッグの重複チェックが行われる
And新 CATEGORY レコードが追加される
Andカテゴリ一覧に新カテゴリが表示される
09
Scenario · @error
スラッグ重複エラー
Given入力したスラッグが既存カテゴリと重複している
When「保存」ボタンをクリックする
Then「このスラッグはすでに使用されています」エラーを表示する
10
Scenario · @happy-path
既存カテゴリの編集
Given店長は既存カテゴリの「編集」ボタンをクリックしている
And現在の値が入力済みのエディタが表示されている
When変更して「保存」をクリックする
ThenCATEGORY レコードが更新される
11
Scenario · @happy-path
カテゴリの削除
Given店長は商品が紐づいていないカテゴリの「削除」ボタンをクリックしている
When確認ダイアログで「OK」をクリックする
ThenCATEGORY レコードが DB から削除される
Andカテゴリ一覧から対象カテゴリが消える
# guardRole(c, "manager") — manager ロール必須
12
Scenario · @warning
商品が紐づくカテゴリの削除
Given削除対象のカテゴリに 1 件以上の商品が紐づいている
When「削除」ボタンをクリックする
Then「このカテゴリには N 件の商品が紐づいています。削除すると商品のカテゴリが未設定になります」と警告を表示する
And「OK」を選択すると紐づく商品の
category_id が未設定(0)に更新される
UC-18
スタッフの追加
EMP-001 · EMP-005
店長が新しいスタッフを登録する。役職は manager / barista / hall から選択。
Background
各シナリオの共通前提
Given店長は認証済みでスタッフ管理画面
/employees を表示している
Scenarios
13
Scenario · @happy-path
スタッフの新規追加
Given店長は「スタッフを追加」ボタンをクリックしている
Andスタッフエディタモーダルが空の状態で表示されている
And名前(必須)を入力している
And役職(店長 / バリスタ / ホール)を選択している
And最寄り駅(任意)を入力している
When「保存」ボタンをクリックする
Then入力値が検証される
And新 EMPLOYEE レコードが生成される
Andモーダルが閉じ、スタッフ一覧に新スタッフカードが表示される
14
Scenario · @error
必須項目が未入力
Given店長が名前または役職を入力していない
When「保存」をクリックする
Thenエラーメッセージを表示し入力を促す
15
Scenario · @alternative
追加のキャンセル
Givenモーダルが表示されている
When「キャンセル」ボタンをクリックする
Thenモーダルが閉じ、状態変更なしに終了する
UC-19
スタッフの編集・削除
EMP-006 · EMP-007
店長がスタッフ情報を編集または削除する。削除は確認ダイアログで誤操作を防ぐ。
Background
各シナリオの共通前提
Given店長は認証済みでスタッフ管理画面
/employees を表示しているAnd1 件以上のスタッフが存在する
Scenarios
16
Scenario · @happy-path
スタッフ情報の編集
Given店長は編集したいスタッフカードの「編集」ボタンをクリックしている
And現在のスタッフ情報が入力済みのモーダルが表示されている
When変更したいフィールドを修正して「保存」をクリックする
ThenEMPLOYEE レコードが更新される
Andスタッフカードが更新後の情報で表示される
17
Scenario · @happy-path
スタッフの削除
Given店長は削除したいスタッフカードの「削除」ボタンをクリックしている
When確認ダイアログで「OK」をクリックする
ThenEMPLOYEE レコードが削除される
Andスタッフ一覧から対象カードが消える
18
Scenario · @alternative
削除のキャンセル
Given確認ダイアログが表示されている
When「キャンセル」をクリックする
Then削除をキャンセルして終了する
キーワード凡例 / Keyword Legend
Given事前条件
When操作
Then期待結果
And前のステップを継続
But例外・除外条件
@happy-path
@error
@alternative
@security