DCIPs/assets/eip-5007/test/test.js

96 lines
4.0 KiB
JavaScript

const { assert } = require("chai");
const { BigNumber } = require("bignumber.js")
const ERC5007Demo = artifacts.require("ERC5007Demo");
const ERC5007ComposableTest = artifacts.require("ERC5007ComposableTest");
contract("test ERC5007", async accounts => {
it("test ERC5007", async () => {
const Alice = accounts[0];
const instance = await ERC5007Demo.deployed("ERC5007Demo", "ERC5007Demo");
const demo = instance;
let now = Math.floor(new Date().getTime()/1000);
let inputStartTime1 = new BigNumber(now - 10000);
let inputEndTime1 = new BigNumber(now + 10000);
let id1 = 1;
await demo.mint(Alice, id1, inputStartTime1.toFixed(0), inputEndTime1.toFixed(0));
let outputStartTime1 = await demo.startTime(id1);
let outputEndTime1 = await demo.endTime(id1);
assert.equal(inputStartTime1.comparedTo(outputStartTime1) == 0 && inputEndTime1.comparedTo(outputEndTime1) == 0, true, "wrong data");
console.log("IERC5007 InterfaceId:", await demo.getInterfaceId())
let isSupport = await demo.supportsInterface('0x7a0cdf92');
assert.equal(isSupport, true , "supportsInterface error");
});
it("test ERC5007Composable", async () => {
const Alice = accounts[0];
const Bob = accounts[1];
const Carl = accounts[2];
const instance = await ERC5007ComposableTest.deployed("ERC5007ComposableTest", "ERC5007ComposableTest");
const demo = instance;
let now = Math.floor(new Date().getTime()/1000);
let token1InputStartTime = new BigNumber(now - 10000);
let token1InputEndTime = new BigNumber(now + 10000);
let id1 = 1;
await demo.mint(Alice, id1, token1InputStartTime.toFixed(0), token1InputEndTime.toFixed(0));
let token1OutputStartTime = new BigNumber( await demo.startTime(id1));
let token1OutputEndTime = new BigNumber( await demo.endTime(id1));
assert.equal(token1InputStartTime.comparedTo(token1OutputStartTime) == 0
&& token1InputEndTime.comparedTo(token1OutputEndTime) == 0, true, "wrong data");
let id2 = 2;
let token2InputStartTime = token1InputStartTime.plus(5000);
await demo.split(id1, id2, Bob, token2InputStartTime.toFixed(0));
token1OutputStartTime = new BigNumber( await demo.startTime(id1));
token1OutputEndTime = new BigNumber( await demo.endTime(id1));
let token2OutputStartTime = new BigNumber( await demo.startTime(id2));
let token2OutputEndTime = new BigNumber( await demo.endTime(id2));
assert.equal(token1InputStartTime.comparedTo(token1OutputStartTime) == 0
&& token1OutputEndTime.comparedTo(token2InputStartTime.minus(1)) == 0, true, "wrong data");
assert.equal(token2InputStartTime.comparedTo(token2OutputStartTime) == 0
&& token2OutputEndTime.comparedTo(token1InputEndTime) == 0, true, "wrong data");
let token1RootId = await demo.rootTokenId(id1);
let token2RootId = await demo.rootTokenId(id2);
assert.equal(token1RootId == id1 && token2RootId == id1, true, 'wrong data');
let id3 = 3;
await demo.setApprovalForAll(Alice, true,{from: Bob});
await demo.merge(id1, id2, Carl, id3);
let token3OutputStartTime = new BigNumber( await demo.startTime(id3));
let token3OutputEndTime = new BigNumber( await demo.endTime(id3));
let token3RootId = await demo.rootTokenId(id3);
let token3Owner = await demo.ownerOf(id3);
assert.equal(token1InputStartTime.comparedTo(token3OutputStartTime) == 0
&& token3OutputEndTime.comparedTo(token1InputEndTime) == 0, true, "wrong start time or end time");
assert.equal(token3RootId == id1, true, 'wrong rootId');
assert.equal(token3Owner == Carl, true, 'wrong owner');
console.log("IERC5007Composable InterfaceId:", await demo.getInterfaceId())
let isSupport = await demo.supportsInterface('0x620063db');
assert.equal(isSupport, true , "supportsInterface error");
});
});