diff --git a/test/unit/io_cloud.js b/test/unit/io_cloud.js new file mode 100644 index 000000000..d7f2c7843 --- /dev/null +++ b/test/unit/io_cloud.js @@ -0,0 +1,84 @@ +const test = require('tap').test; +const Cloud = require('../../src/io/cloud'); +const Target = require('../../src/engine/target'); +const Variable = require('../../src/engine/variable'); + +test('spec', t => { + const cloud = new Cloud(); + + t.type(cloud, 'object'); + t.type(cloud.postData, 'function'); + t.type(cloud.requestUpdateVariable, 'function'); + t.type(cloud.updateCloudVariable, 'function'); + t.type(cloud.setProvider, 'function'); + t.type(cloud.setStage, 'function'); + t.type(cloud.clear, 'function'); + t.end(); +}); + +test('stage and provider are null initially', t => { + const cloud = new Cloud(); + + t.strictEquals(cloud.provider, null); + t.strictEquals(cloud.stage, null); + t.end(); +}); + +test('setProvider sets the provider', t => { + const cloud = new Cloud(); + + const provider = { + foo: 'a fake provider' + }; + + cloud.setProvider(provider); + t.strictEquals(cloud.provider, provider); + + t.end(); +}); + +test('postData updates the variable', t => { + const stage = new Target(); + const fooVar = new Variable( + 'a fake var id', + 'foo', + Variable.SCALAR_TYPE, + true /* isCloud */ + ); + stage.variables[fooVar.id] = fooVar; + + t.strictEquals(fooVar.value, 0); + + const cloud = new Cloud(); + cloud.setStage(stage); + cloud.postData({varUpdate: { + name: 'foo', + value: 3 + }}); + t.strictEquals(fooVar.value, 3); + t.end(); +}); + +test('requestUpdateVariable calls provider\'s updateVariable function', t => { + let updateVariableCalled = false; + let mockVarName = ''; + let mockVarValue = ''; + const mockUpdateVariable = (name, value) => { + updateVariableCalled = true; + mockVarName = name; + mockVarValue = value; + return; + }; + + const provider = { + updateVariable: mockUpdateVariable + }; + + const cloud = new Cloud(); + cloud.setProvider(provider); + cloud.requestUpdateVariable('foo', 3); + t.equals(updateVariableCalled, true); + t.strictEquals(mockVarName, 'foo'); + t.strictEquals(mockVarValue, 3); + t.end(); +});