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