Skip to content

Commit 8aee608

Browse files
committed
really fix tests
1 parent cb062eb commit 8aee608

File tree

1 file changed

+31
-20
lines changed

1 file changed

+31
-20
lines changed

src/client/eppo-client.spec.ts

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,18 @@ describe('EppoClient E2E test', () => {
4545
}) as jest.Mock;
4646
const storage = new MemoryOnlyConfigurationStore<Flag | ObfuscatedFlag>();
4747

48+
/**
49+
* Use this helper instead of directly setting entries on the `storage` ConfigurationStore.
50+
* This method ensures the format field is set as it is required for parsing.
51+
* @param entries
52+
*/
53+
function setUnobfuscatedFlagEntries(
54+
entries: Record<string, Flag | ObfuscatedFlag>,
55+
): Promise<boolean> {
56+
storage.setFormat(FormatEnum.SERVER);
57+
return storage.setEntries(entries);
58+
}
59+
4860
beforeAll(async () => {
4961
await initConfiguration(storage);
5062
});
@@ -88,7 +100,7 @@ describe('EppoClient E2E test', () => {
88100
let client: EppoClient;
89101

90102
beforeAll(() => {
91-
storage.setEntries({ [flagKey]: mockFlag });
103+
setUnobfuscatedFlagEntries({ [flagKey]: mockFlag });
92104
client = new EppoClient({ flagConfigurationStore: storage });
93105

94106
td.replace(EppoClient.prototype, 'getAssignmentDetail', function () {
@@ -144,7 +156,7 @@ describe('EppoClient E2E test', () => {
144156

145157
describe('setLogger', () => {
146158
beforeAll(() => {
147-
storage.setEntries({ [flagKey]: mockFlag });
159+
setUnobfuscatedFlagEntries({ [flagKey]: mockFlag });
148160
});
149161

150162
it('Invokes logger for queued events', () => {
@@ -192,7 +204,7 @@ describe('EppoClient E2E test', () => {
192204

193205
describe('precomputed flags', () => {
194206
beforeAll(() => {
195-
storage.setEntries({
207+
setUnobfuscatedFlagEntries({
196208
[flagKey]: mockFlag,
197209
disabledFlag: { ...mockFlag, enabled: false },
198210
anotherFlag: {
@@ -424,11 +436,10 @@ describe('EppoClient E2E test', () => {
424436
);
425437
});
426438

427-
it('logs variation assignment and experiment key', () => {
439+
it('logs variation assignment and experiment key', async () => {
428440
const mockLogger = td.object<IAssignmentLogger>();
429441

430-
storage.setEntries({ [flagKey]: mockFlag });
431-
storage.setFormat(FormatEnum.SERVER)
442+
await setUnobfuscatedFlagEntries({ [flagKey]: mockFlag });
432443
const client = new EppoClient({ flagConfigurationStore: storage });
433444
client.setAssignmentLogger(mockLogger);
434445

@@ -450,11 +461,11 @@ describe('EppoClient E2E test', () => {
450461
expect(loggedAssignmentEvent.allocation).toEqual(mockFlag.allocations[0].key);
451462
});
452463

453-
it('handles logging exception', () => {
464+
it('handles logging exception', async () => {
454465
const mockLogger = td.object<IAssignmentLogger>();
455466
td.when(mockLogger.logAssignment(td.matchers.anything())).thenThrow(new Error('logging error'));
456467

457-
storage.setEntries({ [flagKey]: mockFlag });
468+
await setUnobfuscatedFlagEntries({ [flagKey]: mockFlag });
458469
const client = new EppoClient({ flagConfigurationStore: storage });
459470
client.setAssignmentLogger(mockLogger);
460471

@@ -469,8 +480,8 @@ describe('EppoClient E2E test', () => {
469480
expect(assignment).toEqual('variation-a');
470481
});
471482

472-
it('exports flag configuration', () => {
473-
storage.setEntries({ [flagKey]: mockFlag });
483+
it('exports flag configuration', async () => {
484+
await setUnobfuscatedFlagEntries({ [flagKey]: mockFlag });
474485
const client = new EppoClient({ flagConfigurationStore: storage });
475486
expect(client.getFlagConfigurations()).toEqual({ [flagKey]: mockFlag });
476487
});
@@ -479,10 +490,10 @@ describe('EppoClient E2E test', () => {
479490
let client: EppoClient;
480491
let mockLogger: IAssignmentLogger;
481492

482-
beforeEach(() => {
493+
beforeEach(async () => {
483494
mockLogger = td.object<IAssignmentLogger>();
484495

485-
storage.setEntries({ [flagKey]: mockFlag });
496+
await setUnobfuscatedFlagEntries({ [flagKey]: mockFlag });
486497
client = new EppoClient({ flagConfigurationStore: storage });
487498
client.setAssignmentLogger(mockLogger);
488499
});
@@ -537,7 +548,7 @@ describe('EppoClient E2E test', () => {
537548
});
538549

539550
it('logs for each unique flag', async () => {
540-
await storage.setEntries({
551+
await setUnobfuscatedFlagEntries({
541552
[flagKey]: mockFlag,
542553
'flag-2': {
543554
...mockFlag,
@@ -564,10 +575,10 @@ describe('EppoClient E2E test', () => {
564575
expect(td.explain(mockLogger.logAssignment).callCount).toEqual(3);
565576
});
566577

567-
it('logs twice for the same flag when allocations change', () => {
578+
it('logs twice for the same flag when allocations change', async () => {
568579
client.useNonExpiringInMemoryAssignmentCache();
569580

570-
storage.setEntries({
581+
setUnobfuscatedFlagEntries({
571582
[flagKey]: {
572583
...mockFlag,
573584

@@ -588,7 +599,7 @@ describe('EppoClient E2E test', () => {
588599
});
589600
client.getStringAssignment(flagKey, 'subject-10', {}, 'default');
590601

591-
storage.setEntries({
602+
await setUnobfuscatedFlagEntries({
592603
[flagKey]: {
593604
...mockFlag,
594605
allocations: [
@@ -614,13 +625,13 @@ describe('EppoClient E2E test', () => {
614625
client.useNonExpiringInMemoryAssignmentCache();
615626

616627
// original configuration version
617-
storage.setEntries({ [flagKey]: mockFlag });
628+
setUnobfuscatedFlagEntries({ [flagKey]: mockFlag });
618629

619630
client.getStringAssignment(flagKey, 'subject-10', {}, 'default'); // log this assignment
620631
client.getStringAssignment(flagKey, 'subject-10', {}, 'default'); // cache hit, don't log
621632

622633
// change the variation
623-
storage.setEntries({
634+
setUnobfuscatedFlagEntries({
624635
[flagKey]: {
625636
...mockFlag,
626637
allocations: [
@@ -643,13 +654,13 @@ describe('EppoClient E2E test', () => {
643654
client.getStringAssignment(flagKey, 'subject-10', {}, 'default'); // cache hit, don't log
644655

645656
// change the flag again, back to the original
646-
storage.setEntries({ [flagKey]: mockFlag });
657+
setUnobfuscatedFlagEntries({ [flagKey]: mockFlag });
647658

648659
client.getStringAssignment(flagKey, 'subject-10', {}, 'default'); // important: log this assignment
649660
client.getStringAssignment(flagKey, 'subject-10', {}, 'default'); // cache hit, don't log
650661

651662
// change the allocation
652-
storage.setEntries({
663+
setUnobfuscatedFlagEntries({
653664
[flagKey]: {
654665
...mockFlag,
655666
allocations: [

0 commit comments

Comments
 (0)