diff --git a/packages/composer-common/lib/introspect/classdeclaration.js b/packages/composer-common/lib/introspect/classdeclaration.js index 1c4d66ddc0..47903b683b 100644 --- a/packages/composer-common/lib/introspect/classdeclaration.js +++ b/packages/composer-common/lib/introspect/classdeclaration.js @@ -303,6 +303,15 @@ class ClassDeclaration { * * @return {boolean} true if the class may be pointed to by a relationship */ + isSystemRelationshipTarget() { + return this.isRelationshipTarget(); + } + + /** + * Returns true if this class is a system type + * + * @return {boolean} true if the class is part of the system namespace + */ isSystemType() { return ModelUtil.getSystemNamespace() === this.modelFile.getNamespace(); } diff --git a/packages/composer-common/test/businessnetworkdefinition.js b/packages/composer-common/test/businessnetworkdefinition.js index 3dd74e9cde..1ec0dabe17 100644 --- a/packages/composer-common/test/businessnetworkdefinition.js +++ b/packages/composer-common/test/businessnetworkdefinition.js @@ -112,7 +112,11 @@ describe('BusinessNetworkDefinition', () => { businessNetwork.aclManager.getAclRules().should.have.length(4); businessNetwork.queryManager.getQueries().should.have.length(6); const intro = businessNetwork.getIntrospector(); - intro.getClassDeclarations().length.should.equal(29); + // remove system types and make sure the 25 model types are presents + let classDecl = intro.getClassDeclarations().filter( (element) => { + return !element.isSystemType(); + }); + classDecl.length.should.equal(25); const sm = businessNetwork.getScriptManager(); sm.getScripts().length.should.equal(2); }); @@ -126,7 +130,13 @@ describe('BusinessNetworkDefinition', () => { Object.keys(businessNetwork.scriptManager.scripts).should.have.length(2); const intro = businessNetwork.getIntrospector(); - intro.getClassDeclarations().length.should.equal(29); + + // remove system types and make sure the 25 model types are presents + let classDecl = intro.getClassDeclarations().filter( (element) => { + return !element.isSystemType(); + }); + + classDecl.length.should.equal(25); const sm = businessNetwork.getScriptManager(); sm.getScripts().length.should.equal(2); }); @@ -153,7 +163,11 @@ describe('BusinessNetworkDefinition', () => { Object.keys(businessNetwork.scriptManager.scripts).should.have.length(2); const intro = businessNetwork.getIntrospector(); - intro.getClassDeclarations().length.should.equal(17); + // remove system types and make sure the 25 model types are presents + let classDecl = intro.getClassDeclarations().filter( (element) => { + return !element.isSystemType(); + }); + classDecl.length.should.equal(13); businessNetwork.getModelManager().getModelFiles().length.should.equal(3); const sm = businessNetwork.getScriptManager(); sm.getScripts().length.should.equal(2); diff --git a/packages/composer-common/test/codegen/jsonschemavisitor.js b/packages/composer-common/test/codegen/jsonschemavisitor.js index dcd9785d2e..6378f70b9f 100644 --- a/packages/composer-common/test/codegen/jsonschemavisitor.js +++ b/packages/composer-common/test/codegen/jsonschemavisitor.js @@ -78,7 +78,7 @@ describe('JSONSchemaVisitor', () => { 'org.acme.base.MyTransactionEx.json', 'org.acme.base.UnitedStatesAddress.json' ]; - sinon.assert.callCount(mockFileWriter.openFile, expectedFiles.length); + let jsonSchemas = {}; expectedFiles.forEach((expectedFile) => { diff --git a/packages/composer-common/test/codegen/loopbackvisitor.js b/packages/composer-common/test/codegen/loopbackvisitor.js index a494b1b9b2..30ca841d2c 100644 --- a/packages/composer-common/test/codegen/loopbackvisitor.js +++ b/packages/composer-common/test/codegen/loopbackvisitor.js @@ -99,7 +99,6 @@ describe('LoopbackVisitor', () => { ]; } schemas.should.have.lengthOf(expectedFiles.length); - sinon.assert.callCount(mockFileWriter.openFile, expectedFiles.length); expectedFiles.forEach((expectedFile) => { sinon.assert.calledWith(mockFileWriter.openFile, expectedFile); diff --git a/packages/composer-common/test/introspect/introspector.js b/packages/composer-common/test/introspect/introspector.js index a2b07c5b67..69766385ed 100644 --- a/packages/composer-common/test/introspect/introspector.js +++ b/packages/composer-common/test/introspect/introspector.js @@ -22,6 +22,7 @@ const fs = require('fs'); const chai = require('chai'); chai.use(require('chai-things')); const sinon = require('sinon'); +require('chai').should(); describe('Introspector', () => { @@ -51,7 +52,10 @@ describe('Introspector', () => { modelManager.addModelFile(modelBase, 'model-base.cto'); const introspector = new Introspector(modelManager); - introspector.getClassDeclarations().length.should.equal(17); + let classDecl = introspector.getClassDeclarations().filter( (element) => { + return !element.isSystemType(); + }); + classDecl.length.should.equal(13); }); }); diff --git a/packages/composer-common/test/models/test.js b/packages/composer-common/test/models/test.js index 3f631fa5f0..e65298b9e4 100644 --- a/packages/composer-common/test/models/test.js +++ b/packages/composer-common/test/models/test.js @@ -16,6 +16,7 @@ const Factory = require('../../lib/factory'); const ModelManager = require('../../lib/modelmanager'); +const ModelUtil = require('../../lib/modelutil'); const RelationshipDeclaration = require('../../lib/introspect/relationshipdeclaration'); const Serializer = require('../../lib/serializer'); const TypeNotFoundException = require('../../lib/typenotfoundexception'); @@ -326,7 +327,10 @@ describe('Test Model', function(){ let modelFile = modelManager.getModelFile('org.acme'); modelFile.isLocalType('MyParticipant').should.equal(false); modelFile.isImportedType('MyParticipant').should.equal(true); - modelFile.getImports().length.should.equal(5); + let imprts = modelFile.getImports().filter( (element) => { + return !element.startsWith(ModelUtil.getSystemNamespace()); + }); + imprts.length.should.equal(1); modelFile.getImports().includes('concerto.MyParticipant').should.equal(true); }); }); @@ -360,7 +364,10 @@ describe('Test Model', function(){ let modelFile = modelManager.getModelFile('stdlib.business'); modelFile.isLocalType('Business').should.equal(true); modelFile.isImportedType('Person').should.equal(true); - modelFile.getImports().length.should.equal(6); + let imprts = modelFile.getImports().filter( (element) => { + return !element.startsWith(ModelUtil.getSystemNamespace()); + }); + imprts.length.should.equal(2); }); }); });