UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

71 lines 2.97 kB
import { TEST_AUDIT_USER, } from '../../types/index.js'; import dbInit from '../../../test/e2e/helpers/database-init.js'; import { createTestConfig } from '../../../test/config/test-config.js'; import getLogger from '../../../test/fixtures/no-logger.js'; import { createUserSubscriptionsService } from './createUserSubscriptionsService.js'; let stores; let db; let userStore; let userSubscriptionService; let userSubscriptionsReadModel; let eventsStore; let config; beforeAll(async () => { db = await dbInit('user_subscriptions', getLogger); stores = db.stores; config = createTestConfig({}); userStore = stores.userStore; userSubscriptionService = createUserSubscriptionsService(config)(db.rawDatabase); userSubscriptionsReadModel = db.stores.userSubscriptionsReadModel; eventsStore = db.stores.eventStore; }); beforeEach(async () => { await userStore.deleteAll(); }); afterAll(async () => { await db.destroy(); }); test('Subscribe and unsubscribe', async () => { const user = await userStore.insert({ email: 'test@getunleash.io', name: 'Sample Name', }); await userStore.successfullyLogin(user); const subscribers = await userSubscriptionsReadModel.getSubscribedUsers('productivity-report'); expect(subscribers).toMatchObject([ { email: 'test@getunleash.io', name: 'Sample Name' }, ]); const userSubscriptions = await userSubscriptionService.getUserSubscriptions(user.id); expect(userSubscriptions).toMatchObject(['productivity-report']); await userSubscriptionService.unsubscribe(user.id, 'productivity-report', TEST_AUDIT_USER); const noSubscribers = await userSubscriptionsReadModel.getSubscribedUsers('productivity-report'); expect(noSubscribers).toMatchObject([]); const noUserSubscriptions = await userSubscriptionService.getUserSubscriptions(user.id); expect(noUserSubscriptions).toMatchObject([]); }); test('Event log for subscription actions', async () => { const user = await userStore.insert({ email: 'test@getunleash.io', name: 'Sample Name', }); await userStore.successfullyLogin(user); await userSubscriptionService.unsubscribe(user.id, 'productivity-report', TEST_AUDIT_USER); const unsubscribeEvent = (await eventsStore.getAll())[0]; expect(unsubscribeEvent).toEqual(expect.objectContaining({ type: 'user-preference-updated', data: { subscription: 'productivity-report', action: 'unsubscribed', }, })); await userSubscriptionService.subscribe(user.id, 'productivity-report', TEST_AUDIT_USER); const subscribeEvent = (await eventsStore.getAll())[0]; expect(subscribeEvent).toEqual(expect.objectContaining({ type: 'user-preference-updated', data: { subscription: 'productivity-report', action: 'subscribed', }, })); }); //# sourceMappingURL=user-subscriptions-service.e2e.test.js.map