webgme-bip
Version:
Design studio for component-based modeling with BIP.
320 lines (302 loc) • 11.5 kB
JavaScript
/*jshint node:true, mocha:true*/
/**
* Generated by PluginGenerator 1.7.0 from webgme on Wed Mar 08 2017 15:24:49 GMT-0600 (Central Standard Time).
*/
;
var testFixture = require('../../globals');
describe('BehaviorSpecGenerator', function () {
var gmeConfig = testFixture.getGmeConfig(),
expect = testFixture.expect,
logger = testFixture.logger.fork('BehaviorSpecGenerator'),
PluginCliManager = testFixture.WebGME.PluginCliManager,
projectName = 'testProject',
pluginName = 'BehaviorSpecGenerator',
project,
gmeAuth,
storage,
commitHash;
this.timeout(20000);
before(function (done) {
testFixture.clearDBAndGetGMEAuth(gmeConfig, projectName)
.then(function (gmeAuth_) {
gmeAuth = gmeAuth_;
// This uses in memory storage. Use testFixture.getMongoStorage to persist test to database.
storage = testFixture.getMemoryStorage(logger, gmeConfig, gmeAuth);
return storage.openDatabase();
})
.then(function () {
var importParam = {
projectSeed: testFixture.path.join(__dirname, 'BIP_violations.webgmex'),
projectName: projectName,
branchName: 'master',
logger: logger,
gmeConfig: gmeConfig
};
return testFixture.importProject(storage, importParam);
})
.then(function (importResult) {
project = importResult.project;
commitHash = importResult.commitHash;
return project.createBranch('test', commitHash);
})
.nodeify(done);
});
after(function (done) {
storage.closeDatabase()
.then(function () {
return gmeAuth.unload();
})
.nodeify(done);
});
it('should succeed on valid model', function (done) {
this.timeout(20000);
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/f',
};
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(err).to.equal(null);
expect(typeof pluginResult).to.equal('object');
expect(pluginResult.success).to.equal(true);
done();
}
catch (e) {
done(e);
}
});
});
it('should fail on no initial state', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/1',
};
this.timeout(20000);
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(1);
done();
}
catch (e) {
done(e);
}
});
});
it('should fail on duplicated transition name', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/U',
};
this.timeout(20000);
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(1);
done();
}
catch (e) {
done(e);
}
});
});
it('should fail on duplicated guard name', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/k',
};
this.timeout(20000);
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(1);
done();
}
catch (e) {
done(e);
}
});
});
it('should fail on duplicated state name', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/s',
};
this.timeout(20000);
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(1);
done();
}
catch (e) {
done(e);
}
});
});
it('should fail on non-defined transition methods', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/B',
};
this.timeout(20000);
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(1);
done();
}
catch (e) {
done(e);
}
});
});
it('should fail on non-defined guard reference', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/e',
};
this.timeout(20000);
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(1);
done();
}
catch (e) {
done(e);
}
});
});
it('should fail on non-defined src and dst of transitions', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/v',
};
this.timeout(20000);
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(3);
done();
}
catch (e) {
done(e);
}
});
});
it('should fail on space in component names', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/z',
};
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(1);
done();
}
catch (e) {
done(e);
}
});
});
this.timeout(20000);
it('should fail on invalid guard expression', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/q',
};
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(1);
done();
}
catch (e) {
done(e);
}
});
});
this.timeout(20000);
it('should fail on invalid guard expression with spaces', function (done) {
var manager = new PluginCliManager(null, logger, gmeConfig),
pluginConfig = {},
context = {
project: project,
commitHash: commitHash,
branchName: 'test',
activeNode: '/f/z/o',
};
manager.executePlugin(pluginName, pluginConfig, context, function (err, pluginResult) {
try {
expect(pluginResult.success).to.equal(false);
//expect(pluginResult).to.deep.equal({});
expect(pluginResult.error).to.include('violation(s)');
expect(pluginResult.messages.length).to.equal(1);
done();
}
catch (e) {
done(e);
}
});
});
});