diff options
author | Alex Browne <stephenalexbrowne@gmail.com> | 2018-11-29 05:21:04 +0800 |
---|---|---|
committer | Alex Browne <stephenalexbrowne@gmail.com> | 2018-12-05 06:25:38 +0800 |
commit | 3d211c415b58a67f84332ff512bf9372cac5a3ac (patch) | |
tree | 087909fde4c6f2c8f99d8487a1f0ce45bf91591f /packages/pipeline/src/utils | |
parent | 4061731245a8513e8d990f3af87e182fb674838b (diff) | |
download | dexon-sol-tools-3d211c415b58a67f84332ff512bf9372cac5a3ac.tar dexon-sol-tools-3d211c415b58a67f84332ff512bf9372cac5a3ac.tar.gz dexon-sol-tools-3d211c415b58a67f84332ff512bf9372cac5a3ac.tar.bz2 dexon-sol-tools-3d211c415b58a67f84332ff512bf9372cac5a3ac.tar.lz dexon-sol-tools-3d211c415b58a67f84332ff512bf9372cac5a3ac.tar.xz dexon-sol-tools-3d211c415b58a67f84332ff512bf9372cac5a3ac.tar.zst dexon-sol-tools-3d211c415b58a67f84332ff512bf9372cac5a3ac.zip |
Introduce framework for running basic tests for entities (#1344)
* Introduce framework for running basic tests for entities
* Add pipeline tests to CircleCI config
* Make pipeline tests more configurable and fix CircleCI config
* Add coverage dir to pipeline package
* Add basic tests for all exchange event entities
* Add tests for remaining entities
* Create separate test scripts in package.json and add new info to README
* Update db_setup.ts to revert migrations even if you are using docker
* Automatically pull the postgres image if needed
* Add comment about why NumberToBigIntTransformer is needed
Diffstat (limited to 'packages/pipeline/src/utils')
-rw-r--r-- | packages/pipeline/src/utils/index.ts | 16 | ||||
-rw-r--r-- | packages/pipeline/src/utils/transformers/big_number.ts | 16 | ||||
-rw-r--r-- | packages/pipeline/src/utils/transformers/index.ts | 2 | ||||
-rw-r--r-- | packages/pipeline/src/utils/transformers/number_to_bigint.ts | 27 |
4 files changed, 46 insertions, 15 deletions
diff --git a/packages/pipeline/src/utils/index.ts b/packages/pipeline/src/utils/index.ts index b6d84a565..918cfc695 100644 --- a/packages/pipeline/src/utils/index.ts +++ b/packages/pipeline/src/utils/index.ts @@ -1,5 +1,5 @@ import { BigNumber } from '@0x/utils'; -import { ValueTransformer } from 'typeorm/decorator/options/ValueTransformer'; +export * from './transformers'; /** * If the given BigNumber is not null, returns the string representation of that @@ -36,20 +36,6 @@ export function handleError(e: any): void { process.exit(1); } -class BigNumberTransformer implements ValueTransformer { - // tslint:disable-next-line:prefer-function-over-method - public to(value: BigNumber): string { - return value.toString(); - } - - // tslint:disable-next-line:prefer-function-over-method - public from(value: string): BigNumber { - return new BigNumber(value); - } -} - -export const bigNumberTransformer = new BigNumberTransformer(); - /** * Returns the unix timestamp of the current hour */ diff --git a/packages/pipeline/src/utils/transformers/big_number.ts b/packages/pipeline/src/utils/transformers/big_number.ts new file mode 100644 index 000000000..a0471a5e3 --- /dev/null +++ b/packages/pipeline/src/utils/transformers/big_number.ts @@ -0,0 +1,16 @@ +import { BigNumber } from '@0x/utils'; +import { ValueTransformer } from 'typeorm/decorator/options/ValueTransformer'; + +export class BigNumberTransformer implements ValueTransformer { + // tslint:disable-next-line:prefer-function-over-method + public to(value: BigNumber): string { + return value.toString(); + } + + // tslint:disable-next-line:prefer-function-over-method + public from(value: string): BigNumber { + return new BigNumber(value); + } +} + +export const bigNumberTransformer = new BigNumberTransformer(); diff --git a/packages/pipeline/src/utils/transformers/index.ts b/packages/pipeline/src/utils/transformers/index.ts new file mode 100644 index 000000000..232c1c5de --- /dev/null +++ b/packages/pipeline/src/utils/transformers/index.ts @@ -0,0 +1,2 @@ +export * from './big_number'; +export * from './number_to_bigint'; diff --git a/packages/pipeline/src/utils/transformers/number_to_bigint.ts b/packages/pipeline/src/utils/transformers/number_to_bigint.ts new file mode 100644 index 000000000..85560c1f0 --- /dev/null +++ b/packages/pipeline/src/utils/transformers/number_to_bigint.ts @@ -0,0 +1,27 @@ +import { BigNumber } from '@0x/utils'; +import { ValueTransformer } from 'typeorm/decorator/options/ValueTransformer'; + +const decimalRadix = 10; + +// Can be used to convert a JavaScript number type to a Postgres bigint type and +// vice versa. By default TypeORM will silently convert number types to string +// if the corresponding Postgres type is bigint. See +// https://github.com/typeorm/typeorm/issues/2400 for more information. +export class NumberToBigIntTransformer implements ValueTransformer { + // tslint:disable-next-line:prefer-function-over-method + public to(value: number): string { + return value.toString(); + } + + // tslint:disable-next-line:prefer-function-over-method + public from(value: string): number { + if (new BigNumber(value).greaterThan(Number.MAX_SAFE_INTEGER)) { + throw new Error( + `Attempted to convert PostgreSQL bigint value (${value}) to JavaScript number type but it is too big to safely convert`, + ); + } + return Number.parseInt(value, decimalRadix); + } +} + +export const numberToBigIntTransformer = new NumberToBigIntTransformer(); |