aboutsummaryrefslogtreecommitdiffstats
path: root/packages/pipeline/test/entities/util.ts
diff options
context:
space:
mode:
authorAlex Browne <stephenalexbrowne@gmail.com>2018-11-29 05:21:04 +0800
committerAlex Browne <stephenalexbrowne@gmail.com>2018-12-05 06:25:38 +0800
commit3d211c415b58a67f84332ff512bf9372cac5a3ac (patch)
tree087909fde4c6f2c8f99d8487a1f0ce45bf91591f /packages/pipeline/test/entities/util.ts
parent4061731245a8513e8d990f3af87e182fb674838b (diff)
downloaddexon-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/test/entities/util.ts')
-rw-r--r--packages/pipeline/test/entities/util.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/pipeline/test/entities/util.ts b/packages/pipeline/test/entities/util.ts
new file mode 100644
index 000000000..043a3b15d
--- /dev/null
+++ b/packages/pipeline/test/entities/util.ts
@@ -0,0 +1,25 @@
+import * as chai from 'chai';
+import 'mocha';
+
+import { Repository } from 'typeorm';
+
+const expect = chai.expect;
+
+/**
+ * First saves the given entity to the database, then finds it and makes sure
+ * that the found entity is exactly equal to the original one. This is a bare
+ * minimum basic test to make sure that the entity type definition and our
+ * database schema are aligned and that it is possible to save and find the
+ * entity.
+ * @param repository A TypeORM repository corresponding with the type of the entity.
+ * @param entity An instance of a TypeORM entity which will be saved/retrieved from the database.
+ */
+export async function testSaveAndFindEntityAsync<T>(repository: Repository<T>, entity: T): Promise<void> {
+ // Note(albrow): We are forced to use an 'as any' hack here because
+ // TypeScript complains about stack depth when checking the types.
+ await repository.save(entity as any);
+ const gotEntity = await repository.findOneOrFail({
+ where: entity,
+ });
+ expect(gotEntity).deep.equal(entity);
+}