@@ -37,26 +37,15 @@ import {
3737 FEATURE_NOT_ENABLED_FOR_USER,
3838 INVALID_CLIENT_ENGINE,
3939 INVALID_DEFAULT_DECIDE_OPTIONS,
40- INVALID_OBJECT,
4140 NOT_ACTIVATING_USER,
42- USER_HAS_NO_FORCED_VARIATION,
43- USER_HAS_NO_FORCED_VARIATION_FOR_EXPERIMENT,
44- USER_MAPPED_TO_FORCED_VARIATION,
45- USER_RECEIVED_DEFAULT_VARIABLE_VALUE,
4641 VALID_USER_PROFILE_SERVICE,
47- VARIATION_REMOVED_FOR_USER,
4842} from 'log_message';
4943import {
50- EXPERIMENT_KEY_NOT_IN_DATAFILE,
51- INVALID_ATTRIBUTES,
5244 NOT_TRACKING_USER,
5345 EVENT_KEY_NOT_FOUND,
5446 INVALID_EXPERIMENT_KEY,
55- INVALID_INPUT_FORMAT,
56- NO_VARIATION_FOR_EXPERIMENT_KEY,
57- USER_NOT_IN_FORCED_VARIATION,
58- INSTANCE_CLOSED,
5947 ONREADY_TIMEOUT,
48+ SERVICE_STOPPED_BEFORE_RUNNING
6049} from 'error_message';
6150
6251import {
@@ -77,6 +66,7 @@ import {
7766} from '../core/decision_service';
7867
7968import { USER_BUCKETED_INTO_EXPERIMENT_IN_GROUP } from '../core/bucketer';
69+ import { resolvablePromise } from '../utils/promise/resolvablePromise';
8070
8171var LOG_LEVEL = enums.LOG_LEVEL;
8272var DECISION_SOURCES = enums.DECISION_SOURCES;
@@ -9253,10 +9243,10 @@ describe('lib/optimizely', function() {
92539243 });
92549244 });
92559245
9256- it('returns a promise that fulfills with a successful result object ', function() {
9257- return optlyInstance.close().then(function(result) {
9258- assert.deepEqual(result, { success: true } );
9259- });
9246+ it('returns a promise that resolves ', function() {
9247+ return optlyInstance.close().then().catch(() => {
9248+ assert.fail( );
9249+ })
92609250 });
92619251 });
92629252
@@ -9291,13 +9281,11 @@ describe('lib/optimizely', function() {
92919281 });
92929282 });
92939283
9294- it('returns a promise that fulfills with an unsuccessful result object', function() {
9295- return optlyInstance.close().then(function(result) {
9296- // assert.deepEqual(result, {
9297- // success: false,
9298- // reason: 'Error: Failed to stop',
9299- // });
9300- assert.isFalse(result.success);
9284+ it('returns a promise that rejects', function() {
9285+ return optlyInstance.close().then(() => {
9286+ assert.fail('promnise should reject')
9287+ }).catch(() => {
9288+
93019289 });
93029290 });
93039291 });
@@ -9465,7 +9453,7 @@ describe('lib/optimizely', function() {
94659453 var readyPromise = optlyInstance.onReady();
94669454 clock.tick(300001);
94679455 return readyPromise.then(() => {
9468- return Promise.reject(new Error(PROMISE_SHOULD_NOT_HAVE_RESOLVED));
9456+ return Promise.reject(new Error(' PROMISE_SHOULD_NOT_HAVE_RESOLVED' ));
94699457 }, (err) => {
94709458 assert.equal(err.baseMessage, ONREADY_TIMEOUT);
94719459 assert.deepEqual(err.params, [ 30000 ]);
@@ -9487,18 +9475,25 @@ describe('lib/optimizely', function() {
94879475 eventProcessor,
94889476 });
94899477 var readyPromise = optlyInstance.onReady({ timeout: 100 });
9478+
94909479 optlyInstance.close();
9480+
94919481 return readyPromise.then(() => {
9492- return Promise.reject(new Error(PROMISE_SHOULD_NOT_HAVE_RESOLVED));
9482+ return Promise.reject(new Error(' PROMISE_SHOULD_NOT_HAVE_RESOLVED' ));
94939483 }, (err) => {
9494- assert.equal(err.baseMessage, INSTANCE_CLOSED );
9484+ assert.equal(err.baseMessage, SERVICE_STOPPED_BEFORE_RUNNING );
94959485 });
94969486 });
94979487
94989488 it('can be called several times with different timeout values and the returned promises behave correctly', function() {
9489+ const onRunning = resolvablePromise();
9490+
94999491 optlyInstance = new Optimizely({
95009492 clientEngine: 'node-sdk',
9501- projectConfigManager: getMockProjectConfigManager(),
9493+ projectConfigManager: getMockProjectConfigManager({
9494+ onRunning: onRunning.promise,
9495+ }),
9496+
95029497 eventProcessor,
95039498 jsonSchemaValidator: jsonSchemaValidator,
95049499 logger: createdLogger,
@@ -9512,16 +9507,16 @@ describe('lib/optimizely', function() {
95129507 var readyPromise3 = optlyInstance.onReady({ timeout: 300 });
95139508 clock.tick(101);
95149509 return readyPromise1
9515- .then (function() {
9510+ .catch (function() {
95169511 clock.tick(100);
95179512 return readyPromise2;
95189513 })
9519- .then (function() {
9514+ .catch (function() {
95209515 // readyPromise3 has not resolved yet because only 201 ms have elapsed.
95219516 // Calling close on the instance should resolve readyPromise3
9522- optlyInstance.close();
9517+ optlyInstance.close().catch(() => {}) ;
95239518 return readyPromise3;
9524- });
9519+ }).catch(() => {}) ;
95259520 });
95269521
95279522 it('clears the timeout when the project config manager ready promise fulfills', function() {
0 commit comments