Gelato-automations/test/unit_tests/3_PriceOracleResolver.test.js

68 lines
2.3 KiB
JavaScript

const {expect} = require("chai");
const hre = require("hardhat");
const {deployments, ethers} = hre;
const ORACLE_MAKER_ETH_USD = "ETH/USD-Maker-v1";
const ORACLE_MAKER_ETH_USD_ADDR = "0x729D19f657BD0614b4985Cf1D82531c67569197B";
const PRICE_ORACLE_MAKER_PAYLOAD = "0x57de26a4"; // IMakerOracle.read()
describe("PriceOracleResolver Unit Test", function () {
this.timeout(0);
if (hre.network.name !== "hardhat") {
console.error("Test Suite is meant to be run on hardhat only");
process.exit(1);
}
let priceOracleResolver;
beforeEach(async function () {
await deployments.fixture();
priceOracleResolver = await ethers.getContract("PriceOracleResolver");
});
it("#1: addOracle should add a maker medianizer for a currencyPair", async function () {
await priceOracleResolver.addOracle(
ORACLE_MAKER_ETH_USD,
ORACLE_MAKER_ETH_USD_ADDR,
PRICE_ORACLE_MAKER_PAYLOAD
);
expect(await priceOracleResolver.oracle(ORACLE_MAKER_ETH_USD)).to.be.equal(
ORACLE_MAKER_ETH_USD_ADDR
);
expect(
await priceOracleResolver.oraclePayload(ORACLE_MAKER_ETH_USD)
).to.be.equal(PRICE_ORACLE_MAKER_PAYLOAD);
});
it("#2: addOracle should revert when adding a maker medianizer and for this currency pair it was been already added", async function () {
await priceOracleResolver.addOracle(
ORACLE_MAKER_ETH_USD,
ORACLE_MAKER_ETH_USD_ADDR,
PRICE_ORACLE_MAKER_PAYLOAD
);
await expect(
priceOracleResolver.addOracle(
ORACLE_MAKER_ETH_USD,
ethers.constants.AddressZero,
PRICE_ORACLE_MAKER_PAYLOAD
)
).to.be.revertedWith("PriceOracleResolver.addOracle: set");
});
it("#3: getPrice returns price", async function () {
await priceOracleResolver.addOracle(
ORACLE_MAKER_ETH_USD,
ORACLE_MAKER_ETH_USD_ADDR,
PRICE_ORACLE_MAKER_PAYLOAD
);
expect((await priceOracleResolver.getPrice(ORACLE_MAKER_ETH_USD)).isZero())
.to.be.false;
});
it("#4: getMakerTokenPrice should return PriceOracleResolver.getMakerTokenPrice: CurrencyPairNotSupported. when currencyPair are not supported / not been added", async function () {
await expect(priceOracleResolver.getPrice("ETH/DAI")).to.be.revertedWith(
"PriceOracleResolver.getPrice: no oracle"
);
});
});