Skip to content

Commit d6b5531

Browse files
committed
chore: evidence test update
1 parent 6d486ce commit d6b5531

File tree

1 file changed

+35
-30
lines changed

1 file changed

+35
-30
lines changed

contracts/test/evidence/index.ts

+35-30
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
import { expect } from "chai";
22
import { ethers } from "hardhat";
3-
import { BigNumber } from "ethers";
3+
import { toBigInt, ContractTransactionReceipt, EventLog } from "ethers";
44
const hre = require("hardhat");
5+
import { ModeratedEvidenceModule, CentralizedArbitrator, DisputeTemplateRegistry } from "../../typechain-types";
56

67
const Party = {
78
None: 0,
89
Submitter: 1,
910
Moderator: 2,
1011
};
1112

12-
function getEmittedEvent(eventName: any, receipt: any) {
13-
return receipt.events.find(({ event }) => event === eventName);
13+
function getEmittedEvent(eventName: any, receipt: ContractTransactionReceipt): EventLog {
14+
const logs = receipt.logs as Array<EventLog>;
15+
const event = logs.find((log) => log.eventName === eventName);
16+
if (event === undefined) process.exit();
17+
return event;
1418
}
1519

1620
describe("Home Evidence contract", async () => {
@@ -22,10 +26,10 @@ describe("Home Evidence contract", async () => {
2226
const totalCostMultiplier = 15000;
2327
const initialDepositMultiplier = 625;
2428
const disputeTemplate = '{ "disputeTemplate": "foo"}';
25-
const MULTIPLIER_DIVISOR = BigNumber.from(10000);
26-
const totalCost = BigNumber.from(arbitrationFee).mul(BigNumber.from(totalCostMultiplier)).div(MULTIPLIER_DIVISOR);
27-
const minRequiredDeposit = totalCost.mul(BigNumber.from(initialDepositMultiplier)).div(MULTIPLIER_DIVISOR);
28-
const ZERO = BigNumber.from(0);
29+
const MULTIPLIER_DIVISOR = toBigInt(10000);
30+
const totalCost = (toBigInt(arbitrationFee) * toBigInt(toBigInt(totalCostMultiplier))) / toBigInt(MULTIPLIER_DIVISOR);
31+
const minRequiredDeposit = (totalCost * toBigInt(toBigInt(initialDepositMultiplier))) / toBigInt(MULTIPLIER_DIVISOR);
32+
const ZERO = toBigInt(0);
2933

3034
let deployer;
3135
let user1;
@@ -34,9 +38,9 @@ describe("Home Evidence contract", async () => {
3438
let user4;
3539
let evidenceID;
3640

37-
let arbitrator;
38-
let evidenceModule;
39-
let disputeTemplateRegistry;
41+
let arbitrator: CentralizedArbitrator;
42+
let evidenceModule: ModeratedEvidenceModule;
43+
let disputeTemplateRegistry: DisputeTemplateRegistry;
4044

4145
beforeEach("Setup contracts", async () => {
4246
[deployer, user1, user2, user3, user4] = await ethers.getSigners();
@@ -49,9 +53,9 @@ describe("Home Evidence contract", async () => {
4953

5054
const EvidenceModule = await ethers.getContractFactory("ModeratedEvidenceModule");
5155
evidenceModule = await EvidenceModule.deploy(
52-
arbitrator.address,
56+
arbitrator.target,
5357
deployer.address, // governor
54-
disputeTemplateRegistry.address,
58+
disputeTemplateRegistry.target,
5559
totalCostMultiplier,
5660
initialDepositMultiplier,
5761
bondTimeout,
@@ -82,22 +86,22 @@ describe("Home Evidence contract", async () => {
8286
let receipt = await tx.wait();
8387
let lastArbitratorIndex = await evidenceModule.getCurrentArbitratorIndex();
8488
let newArbitratorData = await evidenceModule.arbitratorDataList(lastArbitratorIndex);
85-
let oldArbitratorData = await evidenceModule.arbitratorDataList(lastArbitratorIndex.sub(BigNumber.from(1)));
89+
let oldArbitratorData = await evidenceModule.arbitratorDataList(lastArbitratorIndex - toBigInt(toBigInt(1)));
8690

87-
expect(newArbitratorData.disputeTemplateId).to.equal(oldArbitratorData.disputeTemplateId.add(BigNumber.from(1)));
91+
expect(newArbitratorData.disputeTemplateId).to.equal(oldArbitratorData.disputeTemplateId + toBigInt(1));
8892
expect(newArbitratorData.arbitratorExtraData).to.equal(oldArbitratorData.arbitratorExtraData);
8993
const disputeTemplateEvents = await disputeTemplateRegistry.queryFilter(
9094
disputeTemplateRegistry.filters.DisputeTemplate(),
91-
receipt.blockNumber,
92-
receipt.blockNumber
95+
receipt?.blockNumber,
96+
receipt?.blockNumber
9397
);
9498
const [_templateId, _, _templateData] = disputeTemplateEvents[0].args;
9599
expect(_templateData).to.equal(newDisputeTemplate, "Wrong Template Data.");
96100
expect(_templateId).to.equal(newArbitratorData.disputeTemplateId, "Wrong Template ID.");
97101

98102
const newArbitratorExtraData = "0x86";
99103
await evidenceModule.changeArbitratorExtraData(newArbitratorExtraData);
100-
newArbitratorData = await evidenceModule.arbitratorDataList(lastArbitratorIndex.add(BigNumber.from(1)));
104+
newArbitratorData = await evidenceModule.arbitratorDataList(lastArbitratorIndex + toBigInt(1));
101105
expect(newArbitratorData.arbitratorExtraData).to.equal(newArbitratorExtraData, "Wrong extraData");
102106
});
103107

@@ -135,17 +139,18 @@ describe("Home Evidence contract", async () => {
135139
value: minRequiredDeposit,
136140
}); // id: 0
137141
const receipt = await tx.wait();
138-
const evidenceID = ethers.utils.solidityKeccak256(["uint", "string"], [1234, newEvidence]);
142+
if (receipt === null) return;
143+
const evidenceID = ethers.solidityPackedKeccak256(["uint", "string"], [1234, newEvidence]);
139144

140145
const [_arbitrator, _externalDisputeID, _party, _evidence] = getEmittedEvent("ModeratedEvidence", receipt).args;
141-
expect(_arbitrator).to.equal(arbitrator.address, "Wrong arbitrator.");
146+
expect(_arbitrator).to.equal(arbitrator.target, "Wrong arbitrator.");
142147
expect(_externalDisputeID).to.equal(1234, "Wrong external dispute ID.");
143148
expect(_party).to.equal(user1.address, "Wrong submitter.");
144149
expect(_evidence).to.equal(newEvidence, "Wrong evidence message.");
145150

146151
let contributions = await evidenceModule.getContributions(evidenceID, 0, user1.address);
147152
expect(contributions[0]).to.equal(ZERO); // it's 1am and to.deep.equal() won't work, can't be bothered
148-
expect(contributions[1]).to.equal(BigNumber.from("93"));
153+
expect(contributions[1]).to.equal(toBigInt("93"));
149154
expect(contributions[2]).to.equal(ZERO);
150155
expect(contributions.length).to.equal(3);
151156
});
@@ -166,7 +171,7 @@ describe("Home Evidence contract", async () => {
166171
const newEvidence = "Irrefutable evidence";
167172
await expect(
168173
evidenceModule.submitEvidence(1234, newEvidence, {
169-
value: minRequiredDeposit.sub(BigNumber.from(1)),
174+
value: minRequiredDeposit - toBigInt(1),
170175
})
171176
).to.be.revertedWith("Insufficient funding.");
172177
});
@@ -178,7 +183,7 @@ describe("Home Evidence contract", async () => {
178183
await evidenceModule.connect(user1).submitEvidence(1234, newEvidence, {
179184
value: minRequiredDeposit,
180185
});
181-
evidenceID = ethers.utils.solidityKeccak256(["uint", "string"], [1234, newEvidence]);
186+
evidenceID = ethers.solidityPackedKeccak256(["uint", "string"], [1234, newEvidence]);
182187
});
183188

184189
it("Should not allow moderation after bond timeout passed.", async () => {
@@ -205,50 +210,50 @@ describe("Home Evidence contract", async () => {
205210

206211
it("Should create dispute after moderation escalation is complete.", async () => {
207212
await evidenceModule.connect(user2).moderate(evidenceID, Party.Moderator, {
208-
value: minRequiredDeposit.mul(2),
213+
value: minRequiredDeposit * toBigInt(2),
209214
});
210215

211216
let moderationInfo = await evidenceModule.getModerationInfo(evidenceID, 0);
212217
let paidFees = moderationInfo.paidFees;
213-
let depositRequired = paidFees[Party.Moderator].mul(2).sub(paidFees[Party.Submitter]);
218+
let depositRequired = paidFees[Party.Moderator] * toBigInt(2) - toBigInt(paidFees[Party.Submitter]);
214219
await evidenceModule.connect(user4).moderate(evidenceID, Party.Submitter, {
215220
value: depositRequired,
216221
});
217222

218223
moderationInfo = await evidenceModule.getModerationInfo(evidenceID, 0);
219224
paidFees = moderationInfo.paidFees;
220-
depositRequired = paidFees[Party.Submitter].mul(2).sub(paidFees[Party.Moderator]);
225+
depositRequired = paidFees[Party.Submitter] * toBigInt(2) - toBigInt(paidFees[Party.Moderator]);
221226
await evidenceModule.connect(user2).moderate(evidenceID, Party.Moderator, {
222227
value: depositRequired,
223228
});
224229

225230
moderationInfo = await evidenceModule.getModerationInfo(evidenceID, 0);
226231
paidFees = moderationInfo.paidFees;
227-
depositRequired = paidFees[Party.Moderator].mul(2).sub(paidFees[Party.Submitter]);
232+
depositRequired = paidFees[Party.Moderator] * toBigInt(2) - toBigInt(paidFees[Party.Submitter]);
228233
await evidenceModule.connect(user4).moderate(evidenceID, Party.Submitter, {
229234
value: depositRequired,
230235
});
231236

232237
moderationInfo = await evidenceModule.getModerationInfo(evidenceID, 0);
233238
paidFees = moderationInfo.paidFees;
234-
depositRequired = paidFees[Party.Submitter].mul(2).sub(paidFees[Party.Moderator]);
239+
depositRequired = paidFees[Party.Submitter] * toBigInt(2) - toBigInt(paidFees[Party.Moderator]);
235240
await evidenceModule.connect(user2).moderate(evidenceID, Party.Moderator, {
236241
value: depositRequired,
237242
});
238243

239244
moderationInfo = await evidenceModule.getModerationInfo(evidenceID, 0);
240245
paidFees = moderationInfo.paidFees;
241-
depositRequired = paidFees[Party.Moderator].mul(2).sub(paidFees[Party.Submitter]);
246+
depositRequired = paidFees[Party.Moderator] * toBigInt(2) - toBigInt(paidFees[Party.Submitter]);
242247
let tx = await evidenceModule.connect(user4).moderate(evidenceID, Party.Submitter, {
243248
value: depositRequired, // Less is actually needed. Overpaid fees are reimbursed
244249
});
245250
let receipt = await tx.wait();
246-
251+
if (receipt === null) return;
247252
let [_arbitrator, _arbitrableDisputeID, _externalDisputeID, _templateId, _templateUri] = getEmittedEvent(
248253
"DisputeRequest",
249254
receipt
250255
).args;
251-
expect(_arbitrator).to.equal(arbitrator.address, "Wrong arbitrator.");
256+
expect(_arbitrator).to.equal(arbitrator.target, "Wrong arbitrator.");
252257
expect(_arbitrableDisputeID).to.equal(0, "Wrong dispute ID.");
253258
expect(_templateId).to.equal(0, "Wrong template ID.");
254259
expect(_externalDisputeID).to.equal(evidenceID, "Wrong external dispute ID.");

0 commit comments

Comments
 (0)