Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
kmjones1979 authored Dec 5, 2023
2 parents ffb7ee6 + 57f7581 commit 1fded55
Show file tree
Hide file tree
Showing 46 changed files with 1,444 additions and 1,033 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,16 @@ contract Messenger {
+ it('Should emit an event on post', async function () {
+ const { messenger, otherAccount } = await loadFixture(deployContract);
+
+ await expect(
+ messenger.post('text', otherAccount.address, { value: 1 })
+ ).to.emit(messenger, 'NewMessage');
+ await expect(messenger.post('text', otherAccount.address, { value: 1 }))
+ .to.emit(messenger, 'NewMessage')
+ .withArgs(
+ owner.address,
+ otherAccount.address,
+ 1,
+ anyValue,
+ 'text',
+ true,
+ );
+ });

it('Should send the correct amount of tokens', async function () {
Expand All @@ -145,7 +152,7 @@ contract Messenger {

it('Should set the right Message', async function () {
// ...
});
});
});
```

Expand All @@ -160,10 +167,9 @@ contract Messenger {
+ });
+
+ const first_index = 0;
+ await expect(messenger.connect(otherAccount).accept(first_index)).to.emit(
+ messenger,
+ 'MessageConfirmed'
+ );
+ await expect(messenger.connect(otherAccount).accept(first_index))
+ .to.emit(messenger, 'MessageConfirmed')
+ .withArgs(otherAccount.address, first_index);
+ });

it('isPending must be changed', async function () {
Expand Down Expand Up @@ -191,10 +197,9 @@ contract Messenger {
+ });
+
+ const first_index = 0;
+ await expect(messenger.connect(otherAccount).deny(first_index)).to.emit(
+ messenger,
+ 'MessageConfirmed'
+ );
+ await expect(messenger.connect(otherAccount).deny(first_index))
+ .to.emit(messenger, 'MessageConfirmed')
+ .withArgs(otherAccount.address, first_index);
+ });

it('isPending must be changed', async function () {
Expand All @@ -214,11 +219,48 @@ contract Messenger {
それぞれ正しくイベントが発生したかどうかについて確認をしています。

```ts
expect(関数実行).to.emit(コントラクト, 'イベント名');
expect(関数実行).to.emit(コントラクト, 'イベント名').withArgs(イベントの引数, ...);
```


とすることで指定したイベントが発生したのかをテストをすることができます。

`NewMessage`イベントの確認に使用している`anyValue`は、`@nomicfoundation/hardhat-chai-matchers/withArgs`に定義されている関数です。引数として受け取った値に関わらず常にtrueを返すため、引数の具体的な値をチェックせずにイベントを確認するために使用されます。ここでは、NewMessageイベントの引数のうち`block.timestamp`値に使用することで、この値をテストの対象外としています。

それでは、ファイルの先頭に以下のimport文を追加してください。

```ts
import { anyValue } from '@nomicfoundation/hardhat-chai-matchers/withArgs';
```

テストを実行する前に`Messenger`コントラクト内で定義していた`console.log`を削除しましょう。コンストラクタの動作はこれまでのテストですでに確認済みです。また、`post`関数で定義していたconsole.logは、イベントの発生をテストすることで確認できるため削除します。

まずはimport文を削除します。

```soidity
// === 下記を削除 ===
import "hardhat/console.sol";
```

次に、コンストラクタ内のconsole.logを削除します。

```solidity
// === 下記を削除 ===
console.log("Here is my first smart contract!");
```

最後にpost関数内のconsole.logを削除します。

```solidity
// === 下記を削除 ===
console.log(
"%s posts text:[%s] token:[%d]",
msg.sender,
_text,
msg.value
);
```

それではテストを実行しましょう!
ターミナル上で`AVAX-Messenger/`直下にいることを確認し、以下のコマンドを実行してください。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ contract Messenger {
event MessageConfirmed(address receiver, uint256 index);

+ constructor(uint256 _numOfPendingLimits) payable {
+ console.log("Here is my first smart contract!");
+
+ numOfPendingLimits = _numOfPendingLimits;
+ }

Expand All @@ -73,13 +71,6 @@ contract Messenger {
+ // 保留中のメッセージの数をインクリメントします。
+ _numOfPendingAtAddress[_receiver] += 1;

console.log(
"%s posts text:[%s] token:[%d]",
msg.sender,
_text,
msg.value
);

_messagesAtAddress[_receiver].push(
Message(
payable(msg.sender),
Expand Down Expand Up @@ -121,8 +112,6 @@ contract Messenger {

```solidity
constructor(uint256 _numOfPendingLimits) payable {
console.log("Here is my first smart contract!");
numOfPendingLimits = _numOfPendingLimits;
}
```
Expand Down Expand Up @@ -167,6 +156,7 @@ contract Messenger {
- `Post`テスト内の最後にテストケースを追加

```ts
import { anyValue } from '@nomicfoundation/hardhat-chai-matchers/withArgs';
import { loadFixture } from '@nomicfoundation/hardhat-network-helpers';
import { expect } from 'chai';
import { Overrides } from 'ethers';
Expand Down Expand Up @@ -334,8 +324,6 @@ import "hardhat/console.sol";
+ event NumOfPendingLimitsChanged(uint256 limits);

constructor(uint256 _numOfPendingLimits) payable {
console.log("Here is my first smart contract!");

+ ownable();

numOfPendingLimits = _numOfPendingLimits;
Expand Down
Loading

0 comments on commit 1fded55

Please sign in to comment.