aboutsummaryrefslogtreecommitdiffstats
path: root/packages/order-utils/test/rate_utils_test.ts
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-08-15 04:48:21 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-08-15 04:48:21 +0800
commit9c3d10d5be40abe86cb24ec437946707167c19ff (patch)
treeecdc085c2439090728e8816687357cf489320dd3 /packages/order-utils/test/rate_utils_test.ts
parent6a2634d362e50e5a611f388c0785df3209cee308 (diff)
parent3afe405bbe92f9c549a59f26b9c82654f0e304c4 (diff)
downloaddexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar
dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.gz
dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.bz2
dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.lz
dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.xz
dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.zst
dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.zip
Merge branch 'development' into refactor/order-utils/market-utils-api
* development: feat: Upgrade TypeScript to 3.0.1 Add defaults for networkId and pagination Update sortingUtils to support Order and SignedOrder Change rateUtils to use Order Updated CHANGELOG Fix lint errors Update tests for optional feeRate Make feeRate optional with a default of 0 Add tests for sortingUtils Implement sorting utils Add tests for rateUtils Implement rate utils
Diffstat (limited to 'packages/order-utils/test/rate_utils_test.ts')
-rw-r--r--packages/order-utils/test/rate_utils_test.ts55
1 files changed, 55 insertions, 0 deletions
diff --git a/packages/order-utils/test/rate_utils_test.ts b/packages/order-utils/test/rate_utils_test.ts
new file mode 100644
index 000000000..2e299c209
--- /dev/null
+++ b/packages/order-utils/test/rate_utils_test.ts
@@ -0,0 +1,55 @@
+import { BigNumber } from '@0xproject/utils';
+import * as chai from 'chai';
+import 'mocha';
+
+import { rateUtils } from '../src';
+
+import { chaiSetup } from './utils/chai_setup';
+import { testOrderFactory } from './utils/test_order_factory';
+
+chaiSetup.configure();
+const expect = chai.expect;
+
+describe('rateUtils', () => {
+ const testOrder = testOrderFactory.generateTestSignedOrder({
+ makerAssetAmount: new BigNumber(100),
+ takerAssetAmount: new BigNumber(100),
+ takerFee: new BigNumber(20),
+ });
+ describe('#getFeeAdjustedRateOfOrder', () => {
+ it('throws when feeRate is less than zero', async () => {
+ const feeRate = new BigNumber(-1);
+ expect(() => rateUtils.getFeeAdjustedRateOfOrder(testOrder, feeRate)).to.throw(
+ 'Expected feeRate: -1 to be greater than or equal to 0',
+ );
+ });
+ it('correctly calculates fee adjusted rate when feeRate is provided', async () => {
+ const feeRate = new BigNumber(2); // ZRX costs 2 units of takerAsset per 1 unit of ZRX
+ const feeAdjustedRate = rateUtils.getFeeAdjustedRateOfOrder(testOrder, feeRate);
+ // the order actually takes 100 + (2 * 20) takerAsset units to fill 100 units of makerAsset
+ expect(feeAdjustedRate).to.bignumber.equal(new BigNumber(1.4));
+ });
+ it('correctly calculates fee adjusted rate when no feeRate is provided', async () => {
+ const feeAdjustedRate = rateUtils.getFeeAdjustedRateOfOrder(testOrder);
+ // because no feeRate was provided we just assume 0 fees
+ // the order actually takes 100 takerAsset units to fill 100 units of makerAsset
+ expect(feeAdjustedRate).to.bignumber.equal(new BigNumber(1));
+ });
+ });
+ describe('#getFeeAdjustedRateOfFeeOrder', () => {
+ it('throws when takerFee exceeds makerAssetAmount', async () => {
+ const badOrder = testOrderFactory.generateTestSignedOrder({
+ makerAssetAmount: new BigNumber(100),
+ takerFee: new BigNumber(101),
+ });
+ expect(() => rateUtils.getFeeAdjustedRateOfFeeOrder(badOrder)).to.throw(
+ 'Expected takerFee: "101" to be less than makerAssetAmount: "100"',
+ );
+ });
+ it('correctly calculates fee adjusted rate', async () => {
+ const feeAdjustedRate = rateUtils.getFeeAdjustedRateOfFeeOrder(testOrder);
+ // the order actually takes 100 takerAsset units to fill (100 - 20) units of makerAsset
+ expect(feeAdjustedRate).to.bignumber.equal(new BigNumber(1.25));
+ });
+ });
+});