mirror of
https://github.com/Unleash/unleash.git
synced 2025-04-29 01:15:48 +02:00
68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import {
|
|
type IUnleashConfig,
|
|
type IUnleashStores,
|
|
type IUser,
|
|
TEST_AUDIT_USER,
|
|
} from '../../types';
|
|
import type { UserSubscriptionsService } from './user-subscriptions-service';
|
|
import dbInit, { type ITestDb } from '../../../test/e2e/helpers/database-init';
|
|
import { createTestConfig } from '../../../test/config/test-config';
|
|
import getLogger from '../../../test/fixtures/no-logger';
|
|
import { createUserSubscriptionsService } from './createUserSubscriptionsService';
|
|
import type { IUserSubscriptionsReadModel } from './user-subscriptions-read-model-type';
|
|
|
|
let stores: IUnleashStores;
|
|
let db: ITestDb;
|
|
let userSubscriptionService: UserSubscriptionsService;
|
|
let userSubscriptionsReadModel: IUserSubscriptionsReadModel;
|
|
let config: IUnleashConfig;
|
|
let user: IUser;
|
|
|
|
beforeAll(async () => {
|
|
db = await dbInit('user_subscriptions', getLogger);
|
|
stores = db.stores;
|
|
config = createTestConfig({});
|
|
|
|
userSubscriptionService = createUserSubscriptionsService(config)(
|
|
db.rawDatabase,
|
|
);
|
|
userSubscriptionsReadModel = db.stores.userSubscriptionsReadModel;
|
|
|
|
user = await stores.userStore.insert({
|
|
email: 'test@getunleash.io',
|
|
name: 'Sample Name',
|
|
});
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await db.destroy();
|
|
});
|
|
|
|
test('Subscribe and unsubscribe', async () => {
|
|
const subscribers = await userSubscriptionsReadModel.getSubscribedUsers(
|
|
'productivity-report',
|
|
);
|
|
expect(subscribers).toMatchObject([
|
|
{ email: 'test@getunleash.io', name: 'Sample Name' },
|
|
]);
|
|
|
|
const userSubscriptions =
|
|
await userSubscriptionsReadModel.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 userSubscriptionsReadModel.getUserSubscriptions(user.id);
|
|
expect(noUserSubscriptions).toMatchObject([]);
|
|
});
|