65 lines
2.2 KiB
TypeScript
65 lines
2.2 KiB
TypeScript
import { Test, TestingModule } from '@nestjs/testing';
|
|
import { GroupsController } from './groups.controller';
|
|
import { GroupsService } from './groups.service';
|
|
import type { TenantContext } from '../../common/tenant-context';
|
|
|
|
const ctx: TenantContext = { tenantId: 'tnt-A', adminId: 'adm_1', role: 'OWNER' };
|
|
|
|
const mockGroups = [
|
|
{ id: 'grp_1', name: 'Alpha', platform: 'whatsapp', platformId: '111@g.us', isActive: true, accountId: 'acc_1', tenantId: 'tnt-A' },
|
|
];
|
|
|
|
const mockService = {
|
|
list: jest.fn().mockResolvedValue(mockGroups),
|
|
listShared: jest.fn().mockResolvedValue([]),
|
|
listSharedByMe: jest.fn().mockResolvedValue([]),
|
|
getClaimTokenInfo: jest.fn(),
|
|
claimWithToken: jest.fn(),
|
|
share: jest.fn(),
|
|
unshare: jest.fn(),
|
|
regenerateToken: jest.fn(),
|
|
listUnclaimed: jest.fn().mockResolvedValue([]),
|
|
};
|
|
|
|
describe('GroupsController', () => {
|
|
let controller: GroupsController;
|
|
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
controllers: [GroupsController],
|
|
providers: [{ provide: GroupsService, useValue: mockService }],
|
|
}).compile();
|
|
controller = module.get<GroupsController>(GroupsController);
|
|
});
|
|
|
|
it('list() delegates to service', async () => {
|
|
const result = await controller.list(ctx);
|
|
expect(result).toEqual(mockGroups);
|
|
expect(mockService.list).toHaveBeenCalledWith('tnt-A');
|
|
});
|
|
|
|
it('listShared() delegates to service', async () => {
|
|
await controller.listShared(ctx);
|
|
expect(mockService.listShared).toHaveBeenCalledWith('tnt-A');
|
|
});
|
|
|
|
it('claimWithToken() delegates to service', async () => {
|
|
await controller.claimWithToken(ctx, { token: 'abc123' });
|
|
expect(mockService.claimWithToken).toHaveBeenCalledWith('abc123', 'adm_1');
|
|
});
|
|
|
|
it('share() delegates to service', async () => {
|
|
await controller.share(ctx, 'grp_1', { targetTenantId: 'tnt-B' });
|
|
expect(mockService.share).toHaveBeenCalledWith('tnt-A', 'adm_1', 'grp_1', 'tnt-B');
|
|
});
|
|
|
|
it('listUnclaimed() delegates to service', async () => {
|
|
await controller.listUnclaimed();
|
|
expect(mockService.listUnclaimed).toHaveBeenCalledWith();
|
|
});
|
|
});
|