diff --git a/src/lib/services/segment-service.ts b/src/lib/services/segment-service.ts index 880654e486..7dbf21004b 100644 --- a/src/lib/services/segment-service.ts +++ b/src/lib/services/segment-service.ts @@ -100,7 +100,7 @@ export class SegmentService { } async delete(id: number, user: User): Promise { - const segment = this.segmentStore.get(id); + const segment = await this.segmentStore.get(id); await this.segmentStore.delete(id); await this.eventStore.store({ type: SEGMENT_DELETED, diff --git a/src/test/e2e/api/client/segment.e2e.test.ts b/src/test/e2e/api/client/segment.e2e.test.ts index af15cc1e06..5eaaed7ed6 100644 --- a/src/test/e2e/api/client/segment.e2e.test.ts +++ b/src/test/e2e/api/client/segment.e2e.test.ts @@ -94,6 +94,7 @@ afterAll(async () => { afterEach(async () => { await db.stores.segmentStore.deleteAll(); await db.stores.featureToggleStore.deleteAll(); + await db.stores.eventStore.deleteAll(); }); test('should inline segment constraints into features by default', async () => { @@ -225,3 +226,18 @@ test('should only return segments to clients with the segments capability', asyn expect(collectIds(supportedClientResponse.segments)).toEqual(segmentIds); expect(supportedClientConstraints.length).toEqual(0); }); + +test('should store segment-created and segment-deleted events', async () => { + const constraints = mockConstraints(); + const user = new User({ id: 1, email: 'test@example.com' }); + + await createSegment({ name: 'S1', constraints }); + const [segment1] = await fetchSegments(); + await app.services.segmentService.delete(segment1.id, user); + const events = await db.stores.eventStore.getEvents(); + + expect(events[0].type).toEqual('segment-deleted'); + expect(events[0].data.id).toEqual(segment1.id); + expect(events[1].type).toEqual('segment-created'); + expect(events[1].data.id).toEqual(segment1.id); +});