# Depositのテストシナリオ
###### tags: `テスト設計`
## コントラクト
```javascript=
describe("Deposit コントラクト", () => {
it("アドレスを指定して、任意の量のETHがdepositできる", () => {});
it("アドレスを指定して、任意の量のERC20がdepositできる", () => {});
it("invalidなアドレスの場合failする", () => {});
it("コントラクトウォレットからアドレスを指定して、任意の量のETHがdepositできる", () => {});
it("コントラクトウォレットからアドレスを指定して、任意の量のERC20がdepositできる", () => {});
it("ETHをDepositするとEventが発火する", () => {});
it("ERC20をDepositするとEventが発火する", () => {});
});
```
## オペレーター
```javascript=
describe("Deposit オペレーター", () => {
it("ETHのdeposit Eventを検知できる", () => {});
it("ERC20のdeposit Eventを検知できる", () => {});
describe("State Diff API", () => {
it("Depositした人のDiffが返る", () => {});
it("Diffがなかった場合エラーが返る", () => {});
});
});
```
## ユーザー(ウォレット)
```javascript=
describe("Deposit ユーザー(ウォレット)", () => {
it("depositしたらstate diffを要求して自分のstateを作れる", () => {});
it("作った自分のstateをstate updateに渡してdeposit残高が確定される", () => {});
it("自分の残高が確認できる", () => {});
});
```