---
# System prepended metadata

title: Depositのテストシナリオ
tags: [テスト設計]

---

# 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("自分の残高が確認できる", () => {});
});
```