From f8ec0084ade0038d23400abb4daba419cbdb2fa2 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 27 Jun 2022 22:57:18 -0500 Subject: [PATCH] Add Runtime#getNumberOfCloudVariables --- src/engine/runtime.js | 14 +++++++++++++- test/unit/engine_runtime_tw.js | 21 +++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/engine/runtime.js b/src/engine/runtime.js index 718ef795..4c83113c 100644 --- a/src/engine/runtime.js +++ b/src/engine/runtime.js @@ -122,6 +122,8 @@ const ArgumentTypeMap = (() => { * removing an existing cloud variable. * @property {function} hasCloudVariables A function to call to check that * the runtime has any cloud variables. + * @property {function} getNumberOfCloudVariables A function that returns the + * number of cloud variables in the project. */ /** @@ -151,11 +153,14 @@ const cloudDataManager = cloudOptions => { const hasCloudVariables = () => count > 0; + const getNumberOfCloudVariables = () => count; + return { canAddCloudVariable, addCloudVariable, removeCloudVariable, - hasCloudVariables + hasCloudVariables, + getNumberOfCloudVariables }; }; @@ -381,6 +386,12 @@ class Runtime extends EventEmitter { */ this.canAddCloudVariable = newCloudDataManager.canAddCloudVariable; + /** + * A function which returns the number of cloud variables in the runtime. + * @returns {number} + */ + this.getNumberOfCloudVariables = newCloudDataManager.getNumberOfCloudVariables; + /** * A function that tracks a new cloud variable in the runtime, * updating the cloud variable limit. Calling this function will @@ -2028,6 +2039,7 @@ class Runtime extends EventEmitter { const newCloudDataManager = cloudDataManager(this.cloudOptions); this.hasCloudData = newCloudDataManager.hasCloudVariables; this.canAddCloudVariable = newCloudDataManager.canAddCloudVariable; + this.getNumberOfCloudVariables = newCloudDataManager.getNumberOfCloudVariables; this.addCloudVariable = this._initializeAddCloudVariable(newCloudDataManager); this.removeCloudVariable = this._initializeRemoveCloudVariable(newCloudDataManager); } diff --git a/test/unit/engine_runtime_tw.js b/test/unit/engine_runtime_tw.js index f97f9640..37ef35d3 100644 --- a/test/unit/engine_runtime_tw.js +++ b/test/unit/engine_runtime_tw.js @@ -192,3 +192,24 @@ test('setStageSize argument range', t => { t.end(); }); + +test('getNumberOfCloudVariables', t => { + const rt = new Runtime(); + + t.equal(rt.getNumberOfCloudVariables(), 0); + rt.addCloudVariable(); + t.equal(rt.getNumberOfCloudVariables(), 1); + rt.addCloudVariable(); + t.equal(rt.getNumberOfCloudVariables(), 2); + rt.removeCloudVariable(); + t.equal(rt.getNumberOfCloudVariables(), 1); + rt.removeCloudVariable(); + t.equal(rt.getNumberOfCloudVariables(), 0); + + rt.dispose(); + t.equal(rt.getNumberOfCloudVariables(), 0); + rt.addCloudVariable(); + t.equal(rt.getNumberOfCloudVariables(), 1); + + t.end(); +});