Add tests for resolveInstance

Add tests for the resolveInstance function in clusterctl.
This commit is contained in:
Hornwitser committed 2019-11-30 00:08:10 +01:00
1 parent bfff297d9a
commit f8aa947a98
3 files changed
+41 -1

No files matched your search

+2
View File
@@ -436,6 +436,8 @@ module.exports = {
// for testing only
_formatOutputColored: formatOutputColored,
_formatOutput: formatOutput,
_resolveInstance: resolveInstance,
_Control: Control,
}
+31
View File
@@ -1,8 +1,10 @@
const assert = require('assert').strict;
const chalk = require('chalk');
const errors = require('lib/errors');
const { testLines } = require('./lib/factorio/lines');
const clusterctl = require('../clusterctl.js');
const mock = require('./mock');
describe("clusterctl", function() {
@@ -28,4 +30,33 @@ describe("clusterctl", function() {
}
});
});
let mockConnector = new mock.MockConnector();
mockConnector.on('send', function(message) {
if (message.type === 'list_instances_request') {
this.emit('message', {
seq: 1, type: 'list_instances_response',
data: {
seq: message.seq,
list: [{ id: 57, slave_id: 4, name: 'Test Instance' }],
},
});
}
});
let testControl = new clusterctl._Control(mockConnector);
describe("resolveInstance", function() {
it("should pass an integer like string back", async function() {
assert.equal(await clusterctl._resolveInstance(null, "123"), 123);
});
it("should resolve an instance name with the master server", async function() {
assert.equal(await clusterctl._resolveInstance(testControl, "Test Instance"), 57);
});
it("should throw if instance is not found", async function() {
await assert.rejects(
clusterctl._resolveInstance(testControl, "invalid"),
new errors.CommandError("No instance named invalid")
);
});
});
});
+8 -1
View File
@@ -36,10 +36,17 @@ class MockConnector extends events.EventEmitter {
}
send(type, data) {
this.sentMessages.push({ seq: this._seq, type, data });
let message = { seq: this._seq, type, data };
this.sentMessages.push(message);
setImmediate(() => this.emit('send', message));
return this._seq++;
}
close(reason) {
this.send('close', { reason });
this.disconnect();
}
disconnect() {
this.disconnectCalled = true;
}