From ebcbd7b637dd269bc3585a385c8caed7b2b8c803 Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Wed, 5 Feb 2025 10:05:35 +0100 Subject: [PATCH] feat: productivity report only for seen users (#9204) --- .../user-subscriptions-read-model.test.ts | 8 +++++--- .../user-subscriptions/user-subscriptions-read-model.ts | 1 + .../user-subscriptions-service.e2e.test.ts | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/lib/features/user-subscriptions/user-subscriptions-read-model.test.ts b/src/lib/features/user-subscriptions/user-subscriptions-read-model.test.ts index 30ba7e4302..15c5551cca 100644 --- a/src/lib/features/user-subscriptions/user-subscriptions-read-model.test.ts +++ b/src/lib/features/user-subscriptions/user-subscriptions-read-model.test.ts @@ -32,11 +32,13 @@ afterAll(async () => { }); describe('getSubscribedUsers', () => { - test('returns users that did not unsubscribe', async () => { + test('returns seen users that did not unsubscribe', async () => { const user1 = await userStore.insert({ email: 'user1@example.com', name: 'User One', }); + // user seen + await userStore.successfullyLogin(user1); const user2 = await userStore.insert({ email: 'user2@example.com', name: 'User Two', @@ -54,11 +56,10 @@ describe('getSubscribedUsers', () => { const subscribers = await userSubscriptionsReadModel.getSubscribedUsers(subscription); - expect(subscribers).toHaveLength(2); + expect(subscribers).toHaveLength(1); expect(subscribers).toEqual( expect.arrayContaining([ { email: 'user1@example.com', name: 'User One' }, - { email: 'user3@example.com', name: 'User Three' }, ]), ); }); @@ -68,6 +69,7 @@ describe('getSubscribedUsers', () => { email: 'user7@example.com', name: 'User Seven', }); + await userStore.successfullyLogin(user); let subscribers = await userSubscriptionsReadModel.getSubscribedUsers(subscription); diff --git a/src/lib/features/user-subscriptions/user-subscriptions-read-model.ts b/src/lib/features/user-subscriptions/user-subscriptions-read-model.ts index c8176391ab..1849ac8f2c 100644 --- a/src/lib/features/user-subscriptions/user-subscriptions-read-model.ts +++ b/src/lib/features/user-subscriptions/user-subscriptions-read-model.ts @@ -39,6 +39,7 @@ export class UserSubscriptionsReadModel implements IUserSubscriptionsReadModel { .whereNotIn('id', unsubscribedUserIdsQuery) .andWhere('is_service', false) .andWhere('deleted_at', null) + .andWhereNot('seen_at', null) .andWhereNot('email', null); return users.map(mapRowToSubscriber); diff --git a/src/lib/features/user-subscriptions/user-subscriptions-service.e2e.test.ts b/src/lib/features/user-subscriptions/user-subscriptions-service.e2e.test.ts index 76db783444..0452f7dc0d 100644 --- a/src/lib/features/user-subscriptions/user-subscriptions-service.e2e.test.ts +++ b/src/lib/features/user-subscriptions/user-subscriptions-service.e2e.test.ts @@ -46,6 +46,7 @@ test('Subscribe and unsubscribe', async () => { email: 'test@getunleash.io', name: 'Sample Name', }); + await userStore.successfullyLogin(user); const subscribers = await userSubscriptionsReadModel.getSubscribedUsers( 'productivity-report', @@ -79,6 +80,7 @@ test('Event log for subscription actions', async () => { email: 'test@getunleash.io', name: 'Sample Name', }); + await userStore.successfullyLogin(user); await userSubscriptionService.unsubscribe( user.id,