diff --git a/index.js b/index.js index acf4d0d..b7d7fbd 100644 --- a/index.js +++ b/index.js @@ -121,6 +121,7 @@ var new_client = function(sdk_key, config) { } client.waitUntilReady = function() { + if (init_complete) return Promise.resolve() return new Promise(function(resolve) { client.once('ready', resolve); }); diff --git a/test/LDClient-test.js b/test/LDClient-test.js index 0e313b4..fb6903e 100644 --- a/test/LDClient-test.js +++ b/test/LDClient-test.js @@ -48,4 +48,31 @@ describe('LDClient', function() { done(); }); }); + + describe('waitUntilReady()', function () { + it('should resolve waitUntilReady() when ready', function(done) { + var client = LDClient.init('secret', {offline: true}); + var callback = jest.fn(); + + client.waitUntilReady().then(callback) + .then(() => { + expect(callback).toHaveBeenCalled(); + done(); + }).catch(done.error) + }); + + it('should resolve waitUntilReady() even if the client is already ready', function(done) { + var client = LDClient.init('secret', {offline: true}); + var callback = jest.fn(); + + client.waitUntilReady() + .then(() => { + client.waitUntilReady().then(callback) + .then(() => { + expect(callback).toHaveBeenCalled(); + done(); + }).catch(done.error) + }).catch(done.error) + }); + }); });