@@ -112,6 +112,155 @@ describe('javascript-sdk', function() {
112112 done ( ) ;
113113 } ) ;
114114
115+ it ( 'should be able to set and get a forced variation' , function ( done ) {
116+ var optlyInstance = optimizelyFactory . createInstance ( {
117+ datafile : testData . getTestProjectConfig ( ) ,
118+ errorHandler : fakeErrorHandler ,
119+ eventDispatcher : eventDispatcher ,
120+ logger : fakeLogger ,
121+ } ) ;
122+
123+ var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
124+ assert . strictEqual ( didSetVariation , true ) ;
125+
126+ var variation = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
127+ assert . strictEqual ( variation , 'control' )
128+ done ( ) ;
129+ } ) ;
130+
131+ it ( 'should be able to set and unset a forced variation' , function ( done ) {
132+ var optlyInstance = optimizelyFactory . createInstance ( {
133+ datafile : testData . getTestProjectConfig ( ) ,
134+ errorHandler : fakeErrorHandler ,
135+ eventDispatcher : eventDispatcher ,
136+ logger : fakeLogger ,
137+ } ) ;
138+
139+ var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
140+ assert . strictEqual ( didSetVariation , true ) ;
141+
142+ var variation = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
143+ assert . strictEqual ( variation , 'control' )
144+
145+ var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , null ) ;
146+ assert . strictEqual ( didSetVariation2 , true ) ;
147+
148+ var variation2 = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
149+ assert . strictEqual ( variation2 , null )
150+ done ( ) ;
151+ } ) ;
152+
153+ it ( 'should be able to set multiple experiments for one user' , function ( done ) {
154+ var optlyInstance = optimizelyFactory . createInstance ( {
155+ datafile : testData . getTestProjectConfig ( ) ,
156+ errorHandler : fakeErrorHandler ,
157+ eventDispatcher : eventDispatcher ,
158+ logger : fakeLogger ,
159+ } ) ;
160+
161+ var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
162+ assert . strictEqual ( didSetVariation , true ) ;
163+
164+ var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'controlLaunched' ) ;
165+ assert . strictEqual ( didSetVariation2 , true ) ;
166+
167+
168+ var variation = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
169+ assert . strictEqual ( variation , 'control' )
170+
171+ var variation2 = optlyInstance . getForcedVariation ( 'testExperimentLaunched' , 'testUser' ) ;
172+ assert . strictEqual ( variation2 , 'controlLaunched' )
173+ done ( ) ;
174+ } ) ;
175+
176+ it ( 'should be able to set multiple experiments for one user, and unset one' , function ( done ) {
177+ var optlyInstance = optimizelyFactory . createInstance ( {
178+ datafile : testData . getTestProjectConfig ( ) ,
179+ errorHandler : fakeErrorHandler ,
180+ eventDispatcher : eventDispatcher ,
181+ logger : fakeLogger ,
182+ } ) ;
183+
184+ var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
185+ assert . strictEqual ( didSetVariation , true ) ;
186+
187+ var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'controlLaunched' ) ;
188+ assert . strictEqual ( didSetVariation2 , true ) ;
189+
190+ var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , null ) ;
191+ assert . strictEqual ( didSetVariation2 , true ) ;
192+
193+ var variation = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
194+ assert . strictEqual ( variation , 'control' )
195+
196+ var variation2 = optlyInstance . getForcedVariation ( 'testExperimentLaunched' , 'testUser' ) ;
197+ assert . strictEqual ( variation2 , null )
198+ done ( ) ;
199+ } ) ;
200+
201+ it ( 'should be able to set multiple experiments for one user, and reset one' , function ( done ) {
202+ var optlyInstance = optimizelyFactory . createInstance ( {
203+ datafile : testData . getTestProjectConfig ( ) ,
204+ errorHandler : fakeErrorHandler ,
205+ eventDispatcher : eventDispatcher ,
206+ logger : fakeLogger ,
207+ } ) ;
208+
209+ var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
210+ assert . strictEqual ( didSetVariation , true ) ;
211+
212+ var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'controlLaunched' ) ;
213+ assert . strictEqual ( didSetVariation2 , true ) ;
214+
215+ var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'variationLaunched' ) ;
216+ assert . strictEqual ( didSetVariation2 , true ) ;
217+
218+ var variation = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
219+ assert . strictEqual ( variation , 'control' )
220+
221+ var variation2 = optlyInstance . getForcedVariation ( 'testExperimentLaunched' , 'testUser' ) ;
222+ assert . strictEqual ( variation2 , 'variationLaunched' )
223+ done ( ) ;
224+ } ) ;
225+
226+ it ( 'should override bucketing when setForcedVariation is called' , function ( done ) {
227+ var optlyInstance = optimizelyFactory . createInstance ( {
228+ datafile : testData . getTestProjectConfig ( ) ,
229+ errorHandler : fakeErrorHandler ,
230+ eventDispatcher : eventDispatcher ,
231+ logger : fakeLogger ,
232+ } ) ;
233+
234+ var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
235+ assert . strictEqual ( didSetVariation , true ) ;
236+
237+ var variation = optlyInstance . getVariation ( 'testExperiment' , 'testUser' ) ;
238+ assert . strictEqual ( variation , 'control' )
239+
240+ var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'variation' ) ;
241+ assert . strictEqual ( didSetVariation2 , true ) ;
242+
243+ var variation = optlyInstance . getVariation ( 'testExperiment' , 'testUser' ) ;
244+ assert . strictEqual ( variation , 'variation' )
245+ done ( ) ;
246+ } ) ;
247+
248+ it ( 'should override bucketing when setForcedVariation is called for a not running experiment' , function ( done ) {
249+ var optlyInstance = optimizelyFactory . createInstance ( {
250+ datafile : testData . getTestProjectConfig ( ) ,
251+ errorHandler : fakeErrorHandler ,
252+ eventDispatcher : eventDispatcher ,
253+ logger : fakeLogger ,
254+ } ) ;
255+
256+ var didSetVariation = optlyInstance . setForcedVariation ( 'testExperimentNotRunning' , 'testUser' , 'controlNotRunning' ) ;
257+ assert . strictEqual ( didSetVariation , true ) ;
258+
259+ var variation = optlyInstance . getVariation ( 'testExperimentNotRunning' , 'testUser' ) ;
260+ assert . strictEqual ( variation , null )
261+
262+ done ( ) ;
263+ } ) ;
115264 } ) ;
116265 } ) ;
117266} ) ;
0 commit comments