From b38b9a51e24fc7b7f7ece6700cd247566b1bc6f7 Mon Sep 17 00:00:00 2001 From: Zeeshan Ashraf Date: Tue, 31 Mar 2020 19:48:23 -0700 Subject: [PATCH 1/2] Added react native client engines --- packages/optimizely-sdk/lib/index.react_native.js | 7 ++++++- packages/optimizely-sdk/lib/index.react_native.tests.js | 8 ++++---- packages/optimizely-sdk/lib/utils/enums/index.js | 4 ++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/optimizely-sdk/lib/index.react_native.js b/packages/optimizely-sdk/lib/index.react_native.js index 774bbe0c2..efc7def31 100644 --- a/packages/optimizely-sdk/lib/index.react_native.js +++ b/packages/optimizely-sdk/lib/index.react_native.js @@ -88,7 +88,7 @@ module.exports = { config = fns.assign( { - clientEngine: enums.JAVASCRIPT_CLIENT_ENGINE, + clientEngine: enums.REACT_NATIVE_JS_CLIENT_ENGINE, eventBatchSize: DEFAULT_EVENT_BATCH_SIZE, eventDispatcher: defaultEventDispatcher, eventFlushInterval: DEFAULT_EVENT_FLUSH_INTERVAL, @@ -101,6 +101,11 @@ module.exports = { } ); + // If client engine is react, convert it to react native + if (config.clientEngine === enums.REACT_CLIENT_ENGINE) { + config.clientEngine = enums.REACT_NATIVE_CLIENT_ENGINE + } + if (!eventProcessorConfigValidator.validateEventBatchSize(config.eventBatchSize)) { logger.warn('Invalid eventBatchSize %s, defaulting to %s', config.eventBatchSize, DEFAULT_EVENT_BATCH_SIZE); config.eventBatchSize = DEFAULT_EVENT_BATCH_SIZE; diff --git a/packages/optimizely-sdk/lib/index.react_native.tests.js b/packages/optimizely-sdk/lib/index.react_native.tests.js index 77b6e578e..ea1ba9f23 100644 --- a/packages/optimizely-sdk/lib/index.react_native.tests.js +++ b/packages/optimizely-sdk/lib/index.react_native.tests.js @@ -95,7 +95,7 @@ describe('javascript-sdk/react-native', function() { assert.equal(optlyInstance.clientVersion, '3.6.0-alpha.1'); }); - it('should set the JavaScript client engine and version', function() { + it('should set the React Native JS client engine and javascript SDK version', function() { var optlyInstance = optimizelyFactory.createInstance({ datafile: {}, errorHandler: fakeErrorHandler, @@ -104,11 +104,11 @@ describe('javascript-sdk/react-native', function() { }); // Invalid datafile causes onReady Promise rejection - catch this error optlyInstance.onReady().catch(function() {}); - assert.equal('javascript-sdk', optlyInstance.clientEngine); + assert.equal('react-native-js', optlyInstance.clientEngine); assert.equal(packageJSON.version, optlyInstance.clientVersion); }); - it('should allow passing of "react-sdk" as the clientEngine', function() { + it('should allow passing of "react-sdk" as the clientEngine and convert it to "react-native"', function() { var optlyInstance = optimizelyFactory.createInstance({ clientEngine: 'react-sdk', datafile: {}, @@ -118,7 +118,7 @@ describe('javascript-sdk/react-native', function() { }); // Invalid datafile causes onReady Promise rejection - catch this error optlyInstance.onReady().catch(function() {}); - assert.equal('react-sdk', optlyInstance.clientEngine); + assert.equal('react-native', optlyInstance.clientEngine); }); it('should activate with provided event dispatcher', function() { diff --git a/packages/optimizely-sdk/lib/utils/enums/index.js b/packages/optimizely-sdk/lib/utils/enums/index.js index 5561061c9..728081c83 100644 --- a/packages/optimizely-sdk/lib/utils/enums/index.js +++ b/packages/optimizely-sdk/lib/utils/enums/index.js @@ -174,12 +174,16 @@ exports.CONTROL_ATTRIBUTES = { exports.JAVASCRIPT_CLIENT_ENGINE = 'javascript-sdk'; exports.NODE_CLIENT_ENGINE = 'node-sdk'; exports.REACT_CLIENT_ENGINE = 'react-sdk'; +exports.REACT_NATIVE_CLIENT_ENGINE = 'react-native'; +exports.REACT_NATIVE_JS_CLIENT_ENGINE = 'react-native-js'; exports.NODE_CLIENT_VERSION = '3.6.0-alpha.1'; exports.VALID_CLIENT_ENGINES = [ exports.NODE_CLIENT_ENGINE, exports.REACT_CLIENT_ENGINE, exports.JAVASCRIPT_CLIENT_ENGINE, + exports.REACT_NATIVE_CLIENT_ENGINE, + exports.REACT_NATIVE_JS_CLIENT_ENGINE, ]; exports.NOTIFICATION_TYPES = jsSdkUtils.NOTIFICATION_TYPES; From 93e4284eb9674d0fda49c7b8a9ad3ea70f61a6ee Mon Sep 17 00:00:00 2001 From: Zeeshan Ashraf Date: Wed, 1 Apr 2020 13:29:00 -0700 Subject: [PATCH 2/2] 1. changed client engine values 2. Added tests to make sure client engine values always end with -sdk --- .../lib/index.react_native.tests.js | 6 ++-- .../optimizely-sdk/lib/utils/enums/index.js | 4 +-- .../lib/utils/enums/index.tests.js | 29 +++++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 packages/optimizely-sdk/lib/utils/enums/index.tests.js diff --git a/packages/optimizely-sdk/lib/index.react_native.tests.js b/packages/optimizely-sdk/lib/index.react_native.tests.js index ea1ba9f23..a12a0673b 100644 --- a/packages/optimizely-sdk/lib/index.react_native.tests.js +++ b/packages/optimizely-sdk/lib/index.react_native.tests.js @@ -104,11 +104,11 @@ describe('javascript-sdk/react-native', function() { }); // Invalid datafile causes onReady Promise rejection - catch this error optlyInstance.onReady().catch(function() {}); - assert.equal('react-native-js', optlyInstance.clientEngine); + assert.equal('react-native-js-sdk', optlyInstance.clientEngine); assert.equal(packageJSON.version, optlyInstance.clientVersion); }); - it('should allow passing of "react-sdk" as the clientEngine and convert it to "react-native"', function() { + it('should allow passing of "react-sdk" as the clientEngine and convert it to "react-native-sdk"', function() { var optlyInstance = optimizelyFactory.createInstance({ clientEngine: 'react-sdk', datafile: {}, @@ -118,7 +118,7 @@ describe('javascript-sdk/react-native', function() { }); // Invalid datafile causes onReady Promise rejection - catch this error optlyInstance.onReady().catch(function() {}); - assert.equal('react-native', optlyInstance.clientEngine); + assert.equal('react-native-sdk', optlyInstance.clientEngine); }); it('should activate with provided event dispatcher', function() { diff --git a/packages/optimizely-sdk/lib/utils/enums/index.js b/packages/optimizely-sdk/lib/utils/enums/index.js index 728081c83..523cd13c6 100644 --- a/packages/optimizely-sdk/lib/utils/enums/index.js +++ b/packages/optimizely-sdk/lib/utils/enums/index.js @@ -174,8 +174,8 @@ exports.CONTROL_ATTRIBUTES = { exports.JAVASCRIPT_CLIENT_ENGINE = 'javascript-sdk'; exports.NODE_CLIENT_ENGINE = 'node-sdk'; exports.REACT_CLIENT_ENGINE = 'react-sdk'; -exports.REACT_NATIVE_CLIENT_ENGINE = 'react-native'; -exports.REACT_NATIVE_JS_CLIENT_ENGINE = 'react-native-js'; +exports.REACT_NATIVE_CLIENT_ENGINE = 'react-native-sdk'; +exports.REACT_NATIVE_JS_CLIENT_ENGINE = 'react-native-js-sdk'; exports.NODE_CLIENT_VERSION = '3.6.0-alpha.1'; exports.VALID_CLIENT_ENGINES = [ diff --git a/packages/optimizely-sdk/lib/utils/enums/index.tests.js b/packages/optimizely-sdk/lib/utils/enums/index.tests.js new file mode 100644 index 000000000..5e464247c --- /dev/null +++ b/packages/optimizely-sdk/lib/utils/enums/index.tests.js @@ -0,0 +1,29 @@ +/**************************************************************************** + * Copyright 2020, Optimizely, Inc. and contributors * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ***************************************************************************/ + +var chai = require('chai') +var enums = require('./') +var assert = chai.assert; + +describe('lib/utils/enums', function() { + describe('valid client engines', function() { + it('all valid client engines should end with "-sdk"', function() { + enums.VALID_CLIENT_ENGINES.forEach(function(clientEngine) { + assert.isTrue(clientEngine.endsWith('-sdk')) + }); + }); + }); +});