fix dvm trader test
This commit is contained in:
@@ -12,8 +12,10 @@ import {InitializableOwnable} from "../lib/InitializableOwnable.sol";
|
|||||||
|
|
||||||
interface IConstFeeRateModel {
|
interface IConstFeeRateModel {
|
||||||
function init(address owner, uint256 feeRate) external;
|
function init(address owner, uint256 feeRate) external;
|
||||||
|
|
||||||
function setFeeRate(uint256 newFeeRate) external;
|
function setFeeRate(uint256 newFeeRate) external;
|
||||||
function getFeeRate() external view returns (uint256);
|
|
||||||
|
function getFeeRate(address trader) external view returns (uint256);
|
||||||
}
|
}
|
||||||
|
|
||||||
contract ConstFeeRateModel is InitializableOwnable {
|
contract ConstFeeRateModel is InitializableOwnable {
|
||||||
@@ -28,7 +30,7 @@ contract ConstFeeRateModel is InitializableOwnable {
|
|||||||
_FEE_RATE_ = newFeeRate;
|
_FEE_RATE_ = newFeeRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFeeRate() external view returns (uint256) {
|
function getFeeRate(address trader) external view returns (uint256) {
|
||||||
return _FEE_RATE_;
|
return _FEE_RATE_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
16
package-lock.json
generated
16
package-lock.json
generated
@@ -6121,6 +6121,12 @@
|
|||||||
"integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=",
|
"integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lodash.isequal": {
|
||||||
|
"version": "4.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
|
||||||
|
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"lodash.toarray": {
|
"lodash.toarray": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
|
||||||
@@ -8910,6 +8916,16 @@
|
|||||||
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
|
||||||
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
|
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
|
||||||
},
|
},
|
||||||
|
"truffle-assertions": {
|
||||||
|
"version": "0.9.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/truffle-assertions/-/truffle-assertions-0.9.2.tgz",
|
||||||
|
"integrity": "sha512-9g2RhaxU2F8DeWhqoGQvL/bV8QVoSnQ6PY+ZPvYRP5eF7+/8LExb4mjLx/FeliLTjc3Tv1SABG05Gu5qQ/ErmA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"assertion-error": "^1.1.0",
|
||||||
|
"lodash.isequal": "^4.5.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"truffle-hdwallet-provider": {
|
"truffle-hdwallet-provider": {
|
||||||
"version": "1.0.17",
|
"version": "1.0.17",
|
||||||
"resolved": "https://registry.npmjs.org/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.17.tgz",
|
"resolved": "https://registry.npmjs.org/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.17.tgz",
|
||||||
|
|||||||
@@ -53,6 +53,7 @@
|
|||||||
"ganache-cli": "^6.9.1",
|
"ganache-cli": "^6.9.1",
|
||||||
"prettier": "^2.0.5",
|
"prettier": "^2.0.5",
|
||||||
"prettier-plugin-solidity": "^1.0.0-alpha.52",
|
"prettier-plugin-solidity": "^1.0.0-alpha.52",
|
||||||
"solidity-coverage": "^0.7.7"
|
"solidity-coverage": "^0.7.7",
|
||||||
|
"truffle-assertions": "^0.9.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import { decimalStr, gweiStr } from '../utils/Converter';
|
|||||||
import { logGas } from '../utils/Log';
|
import { logGas } from '../utils/Log';
|
||||||
import { DVMContext, getDVMContext } from '../utils/DVMContext';
|
import { DVMContext, getDVMContext } from '../utils/DVMContext';
|
||||||
import { assert } from 'chai';
|
import { assert } from 'chai';
|
||||||
|
import { EXTERNAL_VALUE_NAME, getContractWithAddress } from '../utils/Contracts';
|
||||||
|
const truffleAssert = require('truffle-assertions');
|
||||||
|
|
||||||
let lp: string;
|
let lp: string;
|
||||||
let trader: string;
|
let trader: string;
|
||||||
@@ -49,12 +51,23 @@ describe("Trader", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("trade", () => {
|
describe("trade", () => {
|
||||||
it.only("basic check", async () => {
|
// it.only("basic check", async () => {
|
||||||
console.log(await ctx.DVM.methods.getVaultReserve().call())
|
// console.log(await ctx.DVM.methods.getVaultReserve().call())
|
||||||
console.log(await ctx.DVM.methods.getPMMState().call())
|
// console.log(await ctx.DVM.methods.getPMMState().call())
|
||||||
console.log(await ctx.DVM.methods.getMidPrice().call())
|
// console.log(await ctx.DVM.methods.getMidPrice().call())
|
||||||
console.log(await ctx.DVM.methods.querySellQuote(ctx.Deployer, decimalStr("200")).call())
|
// console.log(await ctx.DVM.methods.querySellQuote(ctx.Deployer, decimalStr("200")).call())
|
||||||
})
|
// console.log(ctx.BASE.options.address)
|
||||||
|
// console.log(await ctx.DVM.methods._BASE_TOKEN_().call())
|
||||||
|
// console.log(ctx.QUOTE.options.address)
|
||||||
|
// console.log(await ctx.DVM.methods._QUOTE_TOKEN_().call())
|
||||||
|
// })
|
||||||
|
|
||||||
|
// it.only("mannually buy", async () => {
|
||||||
|
// await ctx.QUOTE.methods.transfer(ctx.DVM.options.address, decimalStr("100")).send(ctx.sendParam(lp))
|
||||||
|
// console.log(await ctx.DVM.methods.getQuoteInput().call())
|
||||||
|
// console.log(await ctx.DVM.methods.querySellQuote(lp, decimalStr("100")).call())
|
||||||
|
// await ctx.DVM.methods.sellQuote(lp).send(ctx.sendParam(lp))
|
||||||
|
// })
|
||||||
|
|
||||||
it("buy & sell", async () => {
|
it("buy & sell", async () => {
|
||||||
|
|
||||||
@@ -128,7 +141,7 @@ describe("Trader", () => {
|
|||||||
// trader balances
|
// trader balances
|
||||||
assert.equal(
|
assert.equal(
|
||||||
await ctx.BASE.methods.balanceOf(trader).call(),
|
await ctx.BASE.methods.balanceOf(trader).call(),
|
||||||
"12837528824326616018"
|
"12837528824326616010"
|
||||||
);
|
);
|
||||||
assert.equal(
|
assert.equal(
|
||||||
await ctx.QUOTE.methods.balanceOf(trader).call(),
|
await ctx.QUOTE.methods.balanceOf(trader).call(),
|
||||||
@@ -137,7 +150,7 @@ describe("Trader", () => {
|
|||||||
// vault balances
|
// vault balances
|
||||||
assert.equal(
|
assert.equal(
|
||||||
await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call(),
|
await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call(),
|
||||||
"7158622099620899913"
|
"7158622099620899921"
|
||||||
);
|
);
|
||||||
assert.equal(
|
assert.equal(
|
||||||
await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call(),
|
await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call(),
|
||||||
@@ -158,9 +171,13 @@ describe("Trader", () => {
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it("revert cases", async () => {
|
it.only("revert cases", async () => {
|
||||||
await assert.fail(
|
var gasPriceLimitContract = getContractWithAddress(EXTERNAL_VALUE_NAME, await ctx.DVM.methods._GAS_PRICE_LIMIT_().call())
|
||||||
ctx.DVMProxy.methods.sellQuoteOnDVM(ctx.DVM.options.address, trader, decimalStr("200"), decimalStr("1")).send({ from: trader, gas: 300000, gasPrice: gweiStr("200") }), /GAS_PRICE_EXCEED/
|
await gasPriceLimitContract.methods.set(gweiStr("10")).send(ctx.sendParam(ctx.Deployer))
|
||||||
|
|
||||||
|
|
||||||
|
await truffleAssert.reverts(
|
||||||
|
ctx.DVMProxy.methods.sellQuoteOnDVM(ctx.DVM.options.address, trader, decimalStr("200"), decimalStr("1")).send({ from: trader, gas: 300000, gasPrice: gweiStr("200") }), "GAS_PRICE_EXCEED"
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ export class DVMContext {
|
|||||||
config.k
|
config.k
|
||||||
).send(this.sendParam(this.Deployer))
|
).send(this.sendParam(this.Deployer))
|
||||||
|
|
||||||
var vendorMachines = await this.DVMFactory.methods.getVendorMachine(this.BASE.options.address, this.QUOTE.options.address).call()
|
var vendingMachines = await this.DVMFactory.methods.getVendingMachine(this.BASE.options.address, this.QUOTE.options.address).call()
|
||||||
this.DVM = contracts.getContractWithAddress(contracts.DVM_NAME, vendorMachines[0])
|
this.DVM = contracts.getContractWithAddress(contracts.DVM_NAME, vendingMachines[0])
|
||||||
|
|
||||||
await this.DVM.methods.setMaintainer(this.Maintainer).send(this.sendParam(this.Deployer))
|
await this.DVM.methods.setMaintainer(this.Maintainer).send(this.sendParam(this.Deployer))
|
||||||
await gasPriceSource.methods.initOwner(this.Deployer).send(this.sendParam(this.Deployer))
|
await gasPriceSource.methods.initOwner(this.Deployer).send(this.sendParam(this.Deployer))
|
||||||
|
|||||||
Reference in New Issue
Block a user