Skip to content

Commit c56ba6e

Browse files
Adam Simonadams85
authored andcommitted
Adjust tests
Signed-off-by: Adam Simon <[email protected]>
1 parent de83140 commit c56ba6e

File tree

2 files changed

+76
-36
lines changed

2 files changed

+76
-36
lines changed

libs/providers/config-cat-web/src/lib/config-cat-web-provider.spec.ts

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
createConsoleLogger,
44
createFlagOverridesFromMap,
55
HookEvents,
6+
IConfigCatCache,
67
ISettingUnion,
78
LogLevel,
89
OverrideBehaviour,
@@ -81,30 +82,47 @@ describe('ConfigCatWebProvider', () => {
8182
});
8283
});
8384

84-
it('should emit PROVIDER_ERROR event', () => {
85-
const handler = jest.fn();
86-
const eventData: [string, unknown] = ['error', { error: 'error' }];
85+
it("should emit PROVIDER_READY event when underlying client is initialized after provider's initialize", async () => {
86+
const cacheValue = '253370761200000\nW/"12345678-90a"\n{"f":{"booleanTrue":{"t":0,"v":{"b":true}}}}';
87+
88+
const fakeSharedCache = new (class implements IConfigCatCache {
89+
private _value?: string;
90+
get(key: string) {
91+
return this._value;
92+
}
93+
set(key: string, value: string) {
94+
this._value = value;
95+
}
96+
})();
97+
98+
const provider = ConfigCatWebProvider.create('configcat-sdk-1/1234567890123456789012/1234567890123456789012', {
99+
cache: fakeSharedCache,
100+
logger: createConsoleLogger(LogLevel.Off),
101+
offline: true,
102+
maxInitWaitTimeSeconds: 1,
103+
});
87104

88-
provider.events.addHandler(ProviderEvents.Error, handler);
89-
configCatEmitter.emit('clientError', ...eventData);
105+
const readyHandler = jest.fn();
106+
provider.events.addHandler(ProviderEvents.Ready, readyHandler);
90107

91-
expect(handler).toHaveBeenCalledWith({
92-
message: eventData[0],
93-
metadata: eventData[1],
94-
});
95-
});
108+
try {
109+
await provider.initialize();
110+
} catch (err) {
111+
expect((err as Error).message).toContain('underlying ConfigCat client could not initialize');
112+
}
96113

97-
it('should emit PROVIDER_READY event after successful evaluation during ERROR condition', async () => {
98-
const errorHandler = jest.fn();
99-
provider.events.addHandler(ProviderEvents.Error, errorHandler);
114+
expect(readyHandler).toHaveBeenCalledTimes(0);
100115

101-
configCatEmitter.emit('clientError', 'error', { error: 'error' });
102-
expect(errorHandler).toHaveBeenCalled();
116+
fakeSharedCache.set('', cacheValue);
103117

104-
const readyHandler = jest.fn();
105-
provider.events.addHandler(ProviderEvents.Ready, readyHandler);
118+
// Make sure that the internal cache is refreshed.
119+
await provider.configCatClient?.forceRefreshAsync();
120+
121+
provider.resolveBooleanEvaluation('booleanTrue', false, { targetingKey });
122+
123+
// Wait a little while for the Ready event to be emitted.
124+
await new Promise((resolve) => setTimeout(resolve, 100));
106125

107-
await provider.resolveBooleanEvaluation('booleanTrue', false, { targetingKey });
108126
expect(readyHandler).toHaveBeenCalled();
109127
});
110128
});

libs/providers/config-cat/src/lib/config-cat-provider.spec.ts

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
createConsoleLogger,
55
createFlagOverridesFromMap,
66
HookEvents,
7+
IConfigCatCache,
78
ISettingUnion,
89
LogLevel,
910
OverrideBehaviour,
@@ -82,30 +83,51 @@ describe('ConfigCatProvider', () => {
8283
});
8384
});
8485

85-
it('should emit PROVIDER_ERROR event', () => {
86-
const handler = jest.fn();
87-
const eventData: [string, unknown] = ['error', { error: 'error' }];
86+
it("should emit PROVIDER_READY event when underlying client is initialized after provider's initialize", async () => {
87+
const cacheValue = '253370761200000\nW/"12345678-90a"\n{"f":{"booleanTrue":{"t":0,"v":{"b":true}}}}';
88+
89+
const fakeSharedCache = new (class implements IConfigCatCache {
90+
private _value?: string;
91+
get(key: string) {
92+
return this._value;
93+
}
94+
set(key: string, value: string) {
95+
this._value = value;
96+
}
97+
})();
98+
99+
const provider = ConfigCatProvider.create(
100+
'configcat-sdk-1/1234567890123456789012/1234567890123456789012',
101+
PollingMode.AutoPoll,
102+
{
103+
cache: fakeSharedCache,
104+
logger: createConsoleLogger(LogLevel.Off),
105+
offline: true,
106+
maxInitWaitTimeSeconds: 1,
107+
},
108+
);
88109

89-
provider.events.addHandler(ProviderEvents.Error, handler);
90-
configCatEmitter.emit('clientError', ...eventData);
110+
const readyHandler = jest.fn();
111+
provider.events.addHandler(ProviderEvents.Ready, readyHandler);
91112

92-
expect(handler).toHaveBeenCalledWith({
93-
message: eventData[0],
94-
metadata: eventData[1],
95-
});
96-
});
113+
try {
114+
await provider.initialize();
115+
} catch (err) {
116+
expect((err as Error).message).toContain('underlying ConfigCat client could not initialize');
117+
}
97118

98-
it('should emit PROVIDER_READY event after successful evaluation during ERROR condition', async () => {
99-
const errorHandler = jest.fn();
100-
provider.events.addHandler(ProviderEvents.Error, errorHandler);
119+
expect(readyHandler).toHaveBeenCalledTimes(0);
101120

102-
configCatEmitter.emit('clientError', 'error', { error: 'error' });
103-
expect(errorHandler).toHaveBeenCalled();
121+
fakeSharedCache.set('', cacheValue);
104122

105-
const readyHandler = jest.fn();
106-
provider.events.addHandler(ProviderEvents.Ready, readyHandler);
123+
// Make sure that the internal cache is refreshed.
124+
await provider.configCatClient?.forceRefreshAsync();
125+
126+
provider.resolveBooleanEvaluation('booleanTrue', false, { targetingKey });
127+
128+
// Wait a little while for the Ready event to be emitted.
129+
await new Promise((resolve) => setTimeout(resolve, 100));
107130

108-
await provider.resolveBooleanEvaluation('booleanTrue', false, { targetingKey });
109131
expect(readyHandler).toHaveBeenCalled();
110132
});
111133
});

0 commit comments

Comments
 (0)