From b3f561cd777eb26d758fc5beb7aa8d786a50db13 Mon Sep 17 00:00:00 2001 From: Subhajit Ghosh Date: Sat, 6 Apr 2024 21:25:01 +0530 Subject: [PATCH 1/4] Fixed no such file error Signed-off-by: Subhajit Ghosh --- .../concerto-core/test/decoratormanager.js | 106 +++++++++--------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/packages/concerto-core/test/decoratormanager.js b/packages/concerto-core/test/decoratormanager.js index 1cf115e1e..4ef257316 100644 --- a/packages/concerto-core/test/decoratormanager.js +++ b/packages/concerto-core/test/decoratormanager.js @@ -62,16 +62,16 @@ describe('DecoratorManager', () => { describe('#validate', function() { it('should support syntax validation', async function() { - const dcs = fs.readFileSync('./test/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); const validationModelManager = DecoratorManager.validate( JSON.parse(dcs)); validationModelManager.should.not.be.null; }); it('should support syntax validation with model files', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); const validationModelManager = DecoratorManager.validate(JSON.parse(dcs), testModelManager.getModelFiles()); validationModelManager.should.not.be.null; validationModelManager.getType('test@1.0.0.Person').should.not.be.null; @@ -93,18 +93,18 @@ describe('DecoratorManager', () => { describe('#decorateModels', function() { it('should support no validation', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); let decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs)); decoratedModelManager.should.not.be.null; }); it('should support syntax validation', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); let decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true}); decoratedModelManager.should.not.be.null; @@ -112,9 +112,9 @@ describe('DecoratorManager', () => { it('should support semantic validation', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); let decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); decoratedModelManager.should.not.be.null; @@ -123,10 +123,10 @@ describe('DecoratorManager', () => { it('should add decorator', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -193,10 +193,10 @@ describe('DecoratorManager', () => { it('should decorate the specified MapDeclaration', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -208,10 +208,10 @@ describe('DecoratorManager', () => { it('should decorate the specified element on the specified Map Declaration (Map Key)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -224,10 +224,10 @@ describe('DecoratorManager', () => { it('should auto upgrade decoratorcommands $class minor version if it is below DCS_VERSION (asserts decorators are correctly applied)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/incompatible_version_dcs.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/incompatible_version_dcs.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true, migrate: true}); @@ -241,10 +241,10 @@ describe('DecoratorManager', () => { it('should auto upgrade decoratorcommands $class minor version if it is below DCS_VERSION (asserts correct upgrade on DCS $class properties)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - let dcs = fs.readFileSync('./test/data/decoratorcommands/incompatible_version_dcs.json', 'utf-8'); + let dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/incompatible_version_dcs.json', 'utf-8'); dcs = DecoratorManager.migrateTo(JSON.parse(dcs), '0.3.0'); dcs.$class.should.equal('org.accordproject.decoratorcommands@0.3.0.DecoratorCommandSet'); @@ -257,10 +257,10 @@ describe('DecoratorManager', () => { it('should decorate the specified type on the specified Map Declaration (Map Key)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -272,10 +272,10 @@ describe('DecoratorManager', () => { it('should decorate the specified element on the specified Map Declaration (Map Value)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -289,10 +289,10 @@ describe('DecoratorManager', () => { it('should decorate the specified type on the specified Map Declaration (Map Value)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -304,10 +304,10 @@ describe('DecoratorManager', () => { it('should decorate Declaration, Key and Value elements on the specified Map Declaration', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -322,10 +322,10 @@ describe('DecoratorManager', () => { it('should decorate a Key and Value element on an unspecified Map Declaration when a type is specified (type takes precedence over element value KEY_VALUE)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -339,10 +339,10 @@ describe('DecoratorManager', () => { it('should decorate all Map Declaration Key and Value elements on the model when a declaration is not specified', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -362,10 +362,10 @@ describe('DecoratorManager', () => { it('should fail with invalid command', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/invalid-command.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-command.json', 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs)); @@ -377,10 +377,10 @@ describe('DecoratorManager', () => { it('should detect invalid type', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/invalid-type.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-type.json', 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -391,10 +391,10 @@ describe('DecoratorManager', () => { it('should detect invalid target namespace', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/invalid-target-namespace.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-namespace.json', 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -405,10 +405,10 @@ describe('DecoratorManager', () => { it('should detect invalid target declaration', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/invalid-target-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-declaration.json', 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -419,10 +419,10 @@ describe('DecoratorManager', () => { it('should detect invalid target property', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/invalid-target-property.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-property.json', 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -433,10 +433,10 @@ describe('DecoratorManager', () => { it('should detect invalid target properties', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/invalid-target-properties.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-properties.json', 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -447,10 +447,10 @@ describe('DecoratorManager', () => { it('should detect target referencing both property and properties', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/invalid-target-property-properties.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-property-properties.json', 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -463,10 +463,10 @@ describe('DecoratorManager', () => { it('should detect decorator command set that is invalid', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/invalid-model.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-model.json', 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -477,10 +477,10 @@ describe('DecoratorManager', () => { it('should detect decorator command set with an invalid command type', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync('./test/data/decoratorcommands/invalid-command.json', 'utf-8'); + const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-command.json', 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -492,7 +492,7 @@ describe('DecoratorManager', () => { describe('#extractDecorators', function() { it('should be able to extract decorators and vocabs from a model withoup options', async function() { const testModelManager = new ModelManager({strict:true,}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/extract-test.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/extract-test.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); const resp = DecoratorManager.extractDecorators( testModelManager); const dcs = resp.decoratorCommandSet; @@ -500,7 +500,7 @@ describe('DecoratorManager', () => { }); it('should be able to extract decorators and vocabs from a model without namespace version', async function() { const testModelManager = new ModelManager(); - const modelTextWithoutNamespace = fs.readFileSync('./test/data/decoratorcommands/test-decorator-without-version.cto', 'utf-8'); + const modelTextWithoutNamespace = fs.readFileSync(__dirname+'/data/decoratorcommands/test-decorator-without-version.cto', 'utf-8'); testModelManager.addCTOModel(modelTextWithoutNamespace, 'test.cto'); const options = { removeDecoratorsFromModel:true, @@ -514,7 +514,7 @@ describe('DecoratorManager', () => { const testModelManager = new ModelManager(); const sourceCTO = []; const updatedCTO = []; - const modelTextWithoutNamespace = fs.readFileSync('./test/data/decoratorcommands/extract-test.cto', 'utf-8'); + const modelTextWithoutNamespace = fs.readFileSync(__dirname+'/data/decoratorcommands/extract-test.cto', 'utf-8'); testModelManager.addCTOModel(modelTextWithoutNamespace, 'test.cto'); const options = { removeDecoratorsFromModel:true, @@ -558,7 +558,7 @@ describe('DecoratorManager', () => { }); it('should give proper response in there is no vocabulary on any model', async function() { const testModelManager = new ModelManager({strict:true,}); - const modelText = fs.readFileSync('./test/data/decoratorcommands/model-without-vocab.cto', 'utf-8'); + const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/model-without-vocab.cto', 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); const resp = DecoratorManager.extractDecorators( testModelManager); const vocab = resp.vocabularies; From 3c614c8a171c2bea4eaa476db32157ad69804384 Mon Sep 17 00:00:00 2001 From: Subhajit Ghosh Date: Tue, 9 Apr 2024 21:50:13 +0530 Subject: [PATCH 2/4] Join the directory and path of the file using path.join Signed-off-by: Subhajit Ghosh --- .../concerto-core/test/decoratormanager.js | 107 +++++++++--------- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/packages/concerto-core/test/decoratormanager.js b/packages/concerto-core/test/decoratormanager.js index 4ef257316..5cdfefa99 100644 --- a/packages/concerto-core/test/decoratormanager.js +++ b/packages/concerto-core/test/decoratormanager.js @@ -15,6 +15,7 @@ 'use strict'; const fs = require('fs'); +const path = require('path'); const DecoratorManager = require('../lib/decoratormanager'); const ModelManager = require('../lib/modelmanager'); const VocabularyManager= require('../../concerto-vocabulary/lib/vocabularymanager'); @@ -62,16 +63,16 @@ describe('DecoratorManager', () => { describe('#validate', function() { it('should support syntax validation', async function() { - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); const validationModelManager = DecoratorManager.validate( JSON.parse(dcs)); validationModelManager.should.not.be.null; }); it('should support syntax validation with model files', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); const validationModelManager = DecoratorManager.validate(JSON.parse(dcs), testModelManager.getModelFiles()); validationModelManager.should.not.be.null; validationModelManager.getType('test@1.0.0.Person').should.not.be.null; @@ -93,18 +94,18 @@ describe('DecoratorManager', () => { describe('#decorateModels', function() { it('should support no validation', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); let decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs)); decoratedModelManager.should.not.be.null; }); it('should support syntax validation', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); let decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true}); decoratedModelManager.should.not.be.null; @@ -112,9 +113,9 @@ describe('DecoratorManager', () => { it('should support semantic validation', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); let decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); decoratedModelManager.should.not.be.null; @@ -123,10 +124,10 @@ describe('DecoratorManager', () => { it('should add decorator', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/web.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -193,10 +194,10 @@ describe('DecoratorManager', () => { it('should decorate the specified MapDeclaration', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -208,10 +209,10 @@ describe('DecoratorManager', () => { it('should decorate the specified element on the specified Map Declaration (Map Key)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -224,10 +225,10 @@ describe('DecoratorManager', () => { it('should auto upgrade decoratorcommands $class minor version if it is below DCS_VERSION (asserts decorators are correctly applied)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/incompatible_version_dcs.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/incompatible_version_dcs.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true, migrate: true}); @@ -241,10 +242,10 @@ describe('DecoratorManager', () => { it('should auto upgrade decoratorcommands $class minor version if it is below DCS_VERSION (asserts correct upgrade on DCS $class properties)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - let dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/incompatible_version_dcs.json', 'utf-8'); + let dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/incompatible_version_dcs.json'), 'utf-8'); dcs = DecoratorManager.migrateTo(JSON.parse(dcs), '0.3.0'); dcs.$class.should.equal('org.accordproject.decoratorcommands@0.3.0.DecoratorCommandSet'); @@ -257,10 +258,10 @@ describe('DecoratorManager', () => { it('should decorate the specified type on the specified Map Declaration (Map Key)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -272,10 +273,10 @@ describe('DecoratorManager', () => { it('should decorate the specified element on the specified Map Declaration (Map Value)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -289,10 +290,10 @@ describe('DecoratorManager', () => { it('should decorate the specified type on the specified Map Declaration (Map Value)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -304,10 +305,10 @@ describe('DecoratorManager', () => { it('should decorate Declaration, Key and Value elements on the specified Map Declaration', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -322,10 +323,10 @@ describe('DecoratorManager', () => { it('should decorate a Key and Value element on an unspecified Map Declaration when a type is specified (type takes precedence over element value KEY_VALUE)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -339,10 +340,10 @@ describe('DecoratorManager', () => { it('should decorate all Map Declaration Key and Value elements on the model when a declaration is not specified', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/map-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -362,10 +363,10 @@ describe('DecoratorManager', () => { it('should fail with invalid command', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-command.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-command.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs)); @@ -377,10 +378,10 @@ describe('DecoratorManager', () => { it('should detect invalid type', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-type.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-type.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -391,10 +392,10 @@ describe('DecoratorManager', () => { it('should detect invalid target namespace', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-namespace.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-namespace.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -405,10 +406,10 @@ describe('DecoratorManager', () => { it('should detect invalid target declaration', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-declaration.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-declaration.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -419,10 +420,10 @@ describe('DecoratorManager', () => { it('should detect invalid target property', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-property.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-property.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -433,10 +434,10 @@ describe('DecoratorManager', () => { it('should detect invalid target properties', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-properties.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-properties.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -447,10 +448,10 @@ describe('DecoratorManager', () => { it('should detect target referencing both property and properties', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-target-property-properties.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-property-properties.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -463,10 +464,10 @@ describe('DecoratorManager', () => { it('should detect decorator command set that is invalid', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-model.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-model.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -477,10 +478,10 @@ describe('DecoratorManager', () => { it('should detect decorator command set with an invalid command type', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(__dirname+'/data/decoratorcommands/invalid-command.json', 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-command.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -492,7 +493,7 @@ describe('DecoratorManager', () => { describe('#extractDecorators', function() { it('should be able to extract decorators and vocabs from a model withoup options', async function() { const testModelManager = new ModelManager({strict:true,}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/extract-test.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/extract-test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); const resp = DecoratorManager.extractDecorators( testModelManager); const dcs = resp.decoratorCommandSet; @@ -500,7 +501,7 @@ describe('DecoratorManager', () => { }); it('should be able to extract decorators and vocabs from a model without namespace version', async function() { const testModelManager = new ModelManager(); - const modelTextWithoutNamespace = fs.readFileSync(__dirname+'/data/decoratorcommands/test-decorator-without-version.cto', 'utf-8'); + const modelTextWithoutNamespace = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test-decorator-without-version.cto'), 'utf-8'); testModelManager.addCTOModel(modelTextWithoutNamespace, 'test.cto'); const options = { removeDecoratorsFromModel:true, @@ -514,7 +515,7 @@ describe('DecoratorManager', () => { const testModelManager = new ModelManager(); const sourceCTO = []; const updatedCTO = []; - const modelTextWithoutNamespace = fs.readFileSync(__dirname+'/data/decoratorcommands/extract-test.cto', 'utf-8'); + const modelTextWithoutNamespace = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/extract-test.cto'), 'utf-8'); testModelManager.addCTOModel(modelTextWithoutNamespace, 'test.cto'); const options = { removeDecoratorsFromModel:true, @@ -558,7 +559,7 @@ describe('DecoratorManager', () => { }); it('should give proper response in there is no vocabulary on any model', async function() { const testModelManager = new ModelManager({strict:true,}); - const modelText = fs.readFileSync(__dirname+'/data/decoratorcommands/model-without-vocab.cto', 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/model-without-vocab.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); const resp = DecoratorManager.extractDecorators( testModelManager); const vocab = resp.vocabularies; From 655cb439104d92f8d7fbc66e6e6343a49e04ff74 Mon Sep 17 00:00:00 2001 From: Subhajit Ghosh Date: Wed, 10 Apr 2024 19:52:05 +0530 Subject: [PATCH 3/4] Added comma seperated list arguement into path.join function Signed-off-by: Subhajit Ghosh --- .../concerto-core/test/decoratormanager.js | 107 +++++++++--------- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/packages/concerto-core/test/decoratormanager.js b/packages/concerto-core/test/decoratormanager.js index 5cdfefa99..4e2c60e57 100644 --- a/packages/concerto-core/test/decoratormanager.js +++ b/packages/concerto-core/test/decoratormanager.js @@ -27,6 +27,7 @@ chai.use(require('chai-things')); chai.use(require('chai-as-promised')); describe('DecoratorManager', () => { + console.log(path.join(__dirname,"/data")) beforeEach(() => { process.env.ENABLE_MAP_TYPE = 'true'; // TODO Remove on release of MapType @@ -63,16 +64,16 @@ describe('DecoratorManager', () => { describe('#validate', function() { it('should support syntax validation', async function() { - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/web.json'), 'utf-8'); const validationModelManager = DecoratorManager.validate( JSON.parse(dcs)); validationModelManager.should.not.be.null; }); it('should support syntax validation with model files', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/web.json'), 'utf-8'); const validationModelManager = DecoratorManager.validate(JSON.parse(dcs), testModelManager.getModelFiles()); validationModelManager.should.not.be.null; validationModelManager.getType('test@1.0.0.Person').should.not.be.null; @@ -94,18 +95,18 @@ describe('DecoratorManager', () => { describe('#decorateModels', function() { it('should support no validation', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/web.json'), 'utf-8'); let decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs)); decoratedModelManager.should.not.be.null; }); it('should support syntax validation', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/web.json'), 'utf-8'); let decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true}); decoratedModelManager.should.not.be.null; @@ -113,9 +114,9 @@ describe('DecoratorManager', () => { it('should support semantic validation', async function() { const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/web.json'), 'utf-8'); let decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); decoratedModelManager.should.not.be.null; @@ -124,10 +125,10 @@ describe('DecoratorManager', () => { it('should add decorator', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/web.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/web.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -194,10 +195,10 @@ describe('DecoratorManager', () => { it('should decorate the specified MapDeclaration', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -209,10 +210,10 @@ describe('DecoratorManager', () => { it('should decorate the specified element on the specified Map Declaration (Map Key)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -225,10 +226,10 @@ describe('DecoratorManager', () => { it('should auto upgrade decoratorcommands $class minor version if it is below DCS_VERSION (asserts decorators are correctly applied)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/incompatible_version_dcs.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/incompatible_version_dcs.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true, migrate: true}); @@ -242,10 +243,10 @@ describe('DecoratorManager', () => { it('should auto upgrade decoratorcommands $class minor version if it is below DCS_VERSION (asserts correct upgrade on DCS $class properties)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - let dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/incompatible_version_dcs.json'), 'utf-8'); + let dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/incompatible_version_dcs.json'), 'utf-8'); dcs = DecoratorManager.migrateTo(JSON.parse(dcs), '0.3.0'); dcs.$class.should.equal('org.accordproject.decoratorcommands@0.3.0.DecoratorCommandSet'); @@ -258,10 +259,10 @@ describe('DecoratorManager', () => { it('should decorate the specified type on the specified Map Declaration (Map Key)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -273,10 +274,10 @@ describe('DecoratorManager', () => { it('should decorate the specified element on the specified Map Declaration (Map Value)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -290,10 +291,10 @@ describe('DecoratorManager', () => { it('should decorate the specified type on the specified Map Declaration (Map Value)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -305,10 +306,10 @@ describe('DecoratorManager', () => { it('should decorate Declaration, Key and Value elements on the specified Map Declaration', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -323,10 +324,10 @@ describe('DecoratorManager', () => { it('should decorate a Key and Value element on an unspecified Map Declaration when a type is specified (type takes precedence over element value KEY_VALUE)', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -340,10 +341,10 @@ describe('DecoratorManager', () => { it('should decorate all Map Declaration Key and Value elements on the model when a declaration is not specified', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true, skipLocationNodes: true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/map-declaration.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/map-declaration.json'), 'utf-8'); const decoratedModelManager = DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), {validate: true, validateCommands: true}); @@ -363,10 +364,10 @@ describe('DecoratorManager', () => { it('should fail with invalid command', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-command.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/invalid-command.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs)); @@ -378,10 +379,10 @@ describe('DecoratorManager', () => { it('should detect invalid type', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-type.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/invalid-type.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -392,10 +393,10 @@ describe('DecoratorManager', () => { it('should detect invalid target namespace', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-namespace.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/invalid-target-namespace.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -406,10 +407,10 @@ describe('DecoratorManager', () => { it('should detect invalid target declaration', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-declaration.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/invalid-target-declaration.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -420,10 +421,10 @@ describe('DecoratorManager', () => { it('should detect invalid target property', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-property.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/invalid-target-property.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -434,10 +435,10 @@ describe('DecoratorManager', () => { it('should detect invalid target properties', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-properties.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/invalid-target-properties.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -448,10 +449,10 @@ describe('DecoratorManager', () => { it('should detect target referencing both property and properties', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-target-property-properties.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/invalid-target-property-properties.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -464,10 +465,10 @@ describe('DecoratorManager', () => { it('should detect decorator command set that is invalid', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-model.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/invalid-model.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -478,10 +479,10 @@ describe('DecoratorManager', () => { it('should detect decorator command set with an invalid command type', async function() { // load a model to decorate const testModelManager = new ModelManager({strict:true}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); - const dcs = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/invalid-command.json'), 'utf-8'); + const dcs = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/invalid-command.json'), 'utf-8'); (() => { DecoratorManager.decorateModels( testModelManager, JSON.parse(dcs), @@ -493,7 +494,7 @@ describe('DecoratorManager', () => { describe('#extractDecorators', function() { it('should be able to extract decorators and vocabs from a model withoup options', async function() { const testModelManager = new ModelManager({strict:true,}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/extract-test.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/extract-test.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); const resp = DecoratorManager.extractDecorators( testModelManager); const dcs = resp.decoratorCommandSet; @@ -501,7 +502,7 @@ describe('DecoratorManager', () => { }); it('should be able to extract decorators and vocabs from a model without namespace version', async function() { const testModelManager = new ModelManager(); - const modelTextWithoutNamespace = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/test-decorator-without-version.cto'), 'utf-8'); + const modelTextWithoutNamespace = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/test-decorator-without-version.cto'), 'utf-8'); testModelManager.addCTOModel(modelTextWithoutNamespace, 'test.cto'); const options = { removeDecoratorsFromModel:true, @@ -515,7 +516,7 @@ describe('DecoratorManager', () => { const testModelManager = new ModelManager(); const sourceCTO = []; const updatedCTO = []; - const modelTextWithoutNamespace = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/extract-test.cto'), 'utf-8'); + const modelTextWithoutNamespace = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/extract-test.cto'), 'utf-8'); testModelManager.addCTOModel(modelTextWithoutNamespace, 'test.cto'); const options = { removeDecoratorsFromModel:true, @@ -559,7 +560,7 @@ describe('DecoratorManager', () => { }); it('should give proper response in there is no vocabulary on any model', async function() { const testModelManager = new ModelManager({strict:true,}); - const modelText = fs.readFileSync(path.join(__dirname+'/data/decoratorcommands/model-without-vocab.cto'), 'utf-8'); + const modelText = fs.readFileSync(path.join(__dirname,'/data/decoratorcommands/model-without-vocab.cto'), 'utf-8'); testModelManager.addCTOModel(modelText, 'test.cto'); const resp = DecoratorManager.extractDecorators( testModelManager); const vocab = resp.vocabularies; From 4f4ce7ff3f3485b87b90eb6b1010ebd878b2d894 Mon Sep 17 00:00:00 2001 From: Matt Roberts <7544022+mttrbrts@users.noreply.github.com> Date: Wed, 1 May 2024 13:37:53 +0100 Subject: [PATCH 4/4] Update packages/concerto-core/test/decoratormanager.js --- packages/concerto-core/test/decoratormanager.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/concerto-core/test/decoratormanager.js b/packages/concerto-core/test/decoratormanager.js index 4e2c60e57..20481c3f1 100644 --- a/packages/concerto-core/test/decoratormanager.js +++ b/packages/concerto-core/test/decoratormanager.js @@ -27,7 +27,6 @@ chai.use(require('chai-things')); chai.use(require('chai-as-promised')); describe('DecoratorManager', () => { - console.log(path.join(__dirname,"/data")) beforeEach(() => { process.env.ENABLE_MAP_TYPE = 'true'; // TODO Remove on release of MapType