From 3a5062d9a964d1ba22ba6fd5c236d2fb57097b6f Mon Sep 17 00:00:00 2001 From: Rainer Killinger Date: Tue, 16 Jul 2019 14:35:39 +0200 Subject: [PATCH] test: add test for fixed side effects --- test/connector-client.spec.ts | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/test/connector-client.spec.ts b/test/connector-client.spec.ts index 015f2771..18fccee2 100644 --- a/test/connector-client.spec.ts +++ b/test/connector-client.spec.ts @@ -32,6 +32,7 @@ import * as chai from 'chai'; import {expect} from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; import * as chaiSpies from 'chai-spies'; +import clone = require('fast-clone'); import {readdir, readFile} from 'fs'; import {suite, test} from 'mocha-typescript'; import * as moment from 'moment'; @@ -66,7 +67,7 @@ const httpClient = new HttpClient(); */ function doesContainThings(thing: T): boolean { /* tslint:disable-next-line:only-arrow-functions */ - return traverse(thing).reduce(function(sum, item) { + return traverse(thing).reduce(function (sum, item) { if (this.isRoot) { return false; } @@ -348,16 +349,30 @@ export class ConnectorClientSpec { const testInstances = await asyncPool(5, testFiles, async (testFile) => { const buffer = await readFilePromisified(join(pathToTestFiles, testFile)); const content = JSON.parse(buffer.toString()); + return content.instance; }); for (const testInstance of testInstances) { + + const checkInstance = clone(testInstance); const testInstanceWithoutReferences = ConnectorClient.removeReferences(testInstance); - expect(doesContainThings(testInstanceWithoutReferences)).to.be.equal(false, JSON.stringify( - [testInstance, testInstanceWithoutReferences], - null, - 2, - )); + + expect(doesContainThings(testInstanceWithoutReferences)).to.be + .equal(false, JSON.stringify( + [testInstance, testInstanceWithoutReferences], + null, + 2, + )); + expect((testInstanceWithoutReferences as any).origin).to.be + .equal(undefined, JSON.stringify( + [testInstance, testInstanceWithoutReferences], + null, + 2, + )); + expect(testInstance).to.be.deep + .equal(checkInstance, + 'Removing the references of a thing could have side effects because no deep copy is used'); } }