|
1 | | -import { AutoEnvAttributes, clone, Encoding, type LDContext } from '@launchdarkly/js-sdk-common'; |
| 1 | +import { |
| 2 | + AutoEnvAttributes, |
| 3 | + base64UrlEncode, |
| 4 | + clone, |
| 5 | + Encoding, |
| 6 | + internal, |
| 7 | + type LDContext, |
| 8 | + LDHeaders, |
| 9 | +} from '@launchdarkly/js-sdk-common'; |
2 | 10 | import { createBasicPlatform, createLogger } from '@launchdarkly/private-js-mocks'; |
3 | 11 |
|
| 12 | +import { Configuration } from '../src/configuration/Configuration'; |
4 | 13 | import { toMulti } from '../src/context/addAutoEnv'; |
| 14 | +import { FlagManager } from '../src/flag-manager/FlagManager'; |
5 | 15 | import LDClientImpl from '../src/LDClientImpl'; |
6 | 16 | import LDEmitter from '../src/LDEmitter'; |
7 | 17 | import { Flags, PatchFlag } from '../src/types'; |
8 | 18 | import * as mockResponseJson from './evaluation/mockResponse.json'; |
9 | 19 | import { MockEventSource } from './streaming/LDClientImpl.mocks'; |
| 20 | +import TestDataManager from './TestDataManager'; |
10 | 21 |
|
11 | 22 | let mockPlatform: ReturnType<typeof createBasicPlatform>; |
12 | 23 | let logger: ReturnType<typeof createLogger>; |
@@ -51,19 +62,47 @@ describe('sdk-client storage', () => { |
51 | 62 | } |
52 | 63 | }); |
53 | 64 |
|
54 | | - jest.spyOn(LDClientImpl.prototype as any, 'getStreamingPaths').mockReturnValue({ |
55 | | - pathGet(_encoding: Encoding, _plainContextString: string): string { |
56 | | - return '/stream/path'; |
| 65 | + ldc = new LDClientImpl( |
| 66 | + testSdkKey, |
| 67 | + AutoEnvAttributes.Disabled, |
| 68 | + mockPlatform, |
| 69 | + { |
| 70 | + logger, |
| 71 | + sendEvents: false, |
57 | 72 | }, |
58 | | - pathReport(_encoding: Encoding, _plainContextString: string): string { |
59 | | - return '/stream/path'; |
60 | | - }, |
61 | | - }); |
62 | | - |
63 | | - ldc = new LDClientImpl(testSdkKey, AutoEnvAttributes.Disabled, mockPlatform, { |
64 | | - logger, |
65 | | - sendEvents: false, |
66 | | - }); |
| 73 | + ( |
| 74 | + flagManager: FlagManager, |
| 75 | + configuration: Configuration, |
| 76 | + baseHeaders: LDHeaders, |
| 77 | + inEmitter: LDEmitter, |
| 78 | + diagnosticsManager?: internal.DiagnosticsManager, |
| 79 | + ) => |
| 80 | + new TestDataManager( |
| 81 | + mockPlatform, |
| 82 | + flagManager, |
| 83 | + testSdkKey, |
| 84 | + configuration, |
| 85 | + () => ({ |
| 86 | + pathGet(encoding: Encoding, _plainContextString: string): string { |
| 87 | + return `/msdk/evalx/contexts/${base64UrlEncode(_plainContextString, encoding)}`; |
| 88 | + }, |
| 89 | + pathReport(_encoding: Encoding, _plainContextString: string): string { |
| 90 | + return `/msdk/evalx/context`; |
| 91 | + }, |
| 92 | + }), |
| 93 | + () => ({ |
| 94 | + pathGet(_encoding: Encoding, _plainContextString: string): string { |
| 95 | + return '/stream/path/get'; |
| 96 | + }, |
| 97 | + pathReport(_encoding: Encoding, _plainContextString: string): string { |
| 98 | + return '/stream/path/report'; |
| 99 | + }, |
| 100 | + }), |
| 101 | + baseHeaders, |
| 102 | + inEmitter, |
| 103 | + diagnosticsManager, |
| 104 | + ), |
| 105 | + ); |
67 | 106 |
|
68 | 107 | // @ts-ignore |
69 | 108 | emitter = ldc.emitter; |
@@ -120,10 +159,47 @@ describe('sdk-client storage', () => { |
120 | 159 | }, |
121 | 160 | ); |
122 | 161 |
|
123 | | - ldc = new LDClientImpl(testSdkKey, AutoEnvAttributes.Enabled, mockPlatform, { |
124 | | - logger, |
125 | | - sendEvents: false, |
126 | | - }); |
| 162 | + ldc = new LDClientImpl( |
| 163 | + testSdkKey, |
| 164 | + AutoEnvAttributes.Enabled, |
| 165 | + mockPlatform, |
| 166 | + { |
| 167 | + logger, |
| 168 | + sendEvents: false, |
| 169 | + }, |
| 170 | + ( |
| 171 | + flagManager: FlagManager, |
| 172 | + configuration: Configuration, |
| 173 | + baseHeaders: LDHeaders, |
| 174 | + inEmitter: LDEmitter, |
| 175 | + diagnosticsManager?: internal.DiagnosticsManager, |
| 176 | + ) => |
| 177 | + new TestDataManager( |
| 178 | + mockPlatform, |
| 179 | + flagManager, |
| 180 | + testSdkKey, |
| 181 | + configuration, |
| 182 | + () => ({ |
| 183 | + pathGet(encoding: Encoding, _plainContextString: string): string { |
| 184 | + return `/msdk/evalx/contexts/${base64UrlEncode(_plainContextString, encoding)}`; |
| 185 | + }, |
| 186 | + pathReport(_encoding: Encoding, _plainContextString: string): string { |
| 187 | + return `/msdk/evalx/context`; |
| 188 | + }, |
| 189 | + }), |
| 190 | + () => ({ |
| 191 | + pathGet(_encoding: Encoding, _plainContextString: string): string { |
| 192 | + return '/stream/path/get'; |
| 193 | + }, |
| 194 | + pathReport(_encoding: Encoding, _plainContextString: string): string { |
| 195 | + return '/stream/path/report'; |
| 196 | + }, |
| 197 | + }), |
| 198 | + baseHeaders, |
| 199 | + inEmitter, |
| 200 | + diagnosticsManager, |
| 201 | + ), |
| 202 | + ); |
127 | 203 | // @ts-ignore |
128 | 204 | emitter = ldc.emitter; |
129 | 205 | jest.spyOn(emitter as LDEmitter, 'emit'); |
|
0 commit comments