import { createTestServiceBroker } from '../../utils'; import UserDMListService from '../../../services/core/user/dmlist.service'; import { Types } from 'mongoose'; import type { UserDMList } from '../../../models/user/dmList'; describe('Test "dmlist" service', () => { const { broker, service, insertTestData } = createTestServiceBroker(UserDMListService); describe('Test "user.dmlist.addConverse"', () => { test('addConverse should be ok', async () => { const userId = String(new Types.ObjectId()); const converseId = String(new Types.ObjectId()); await broker.call( 'user.dmlist.addConverse', { converseId, }, { meta: { userId, }, } ); try { const res = await service.adapter.model.findOne({ userId, }); expect(res.converseIds.map((r) => String(r))).toEqual([converseId]); // 应该被成功插入 } finally { await service.adapter.model.deleteOne({ userId, }); } }); test('addConverse should not be repeat', async () => { const userId = String(new Types.ObjectId()); const converseId = String(new Types.ObjectId()); await broker.call( 'user.dmlist.addConverse', { converseId, }, { meta: { userId, }, } ); await broker.call( 'user.dmlist.addConverse', { converseId, }, { meta: { userId, }, } ); try { const res = await service.adapter.model.findOne({ userId, }); expect(res.converseIds.map((r) => String(r))).toEqual([converseId]); // 应该被成功插入 } finally { await service.adapter.model.deleteOne({ userId, }); } }); test('addConverse can be add more', async () => { const userId = String(new Types.ObjectId()); const converseId = String(new Types.ObjectId()); const converseId2 = String(new Types.ObjectId()); await broker.call( 'user.dmlist.addConverse', { converseId, }, { meta: { userId, }, } ); await broker.call( 'user.dmlist.addConverse', { converseId: converseId2, }, { meta: { userId, }, } ); try { const res = await service.adapter.model.findOne({ userId, }); expect(res.converseIds.map((r) => String(r))).toEqual([ converseId, converseId2, ]); } finally { await service.adapter.model.deleteOne({ userId, }); } }); }); test('Test "user.dmlist.removeConverse"', async () => { const userId = String(new Types.ObjectId()); const converseId = new Types.ObjectId(); await insertTestData({ userId, converseIds: [converseId], }); expect( (await service.adapter.model.findOne({ userId })).converseIds.length ).toBe(1); await broker.call( 'user.dmlist.removeConverse', { converseId: String(converseId), }, { meta: { userId, }, } ); expect( (await service.adapter.model.findOne({ userId })).converseIds.length ).toBe(0); }); test('Test "user.dmlist.getAllConverse"', async () => { const userId = String(new Types.ObjectId()); const testData = await insertTestData({ userId, converseIds: [new Types.ObjectId()], }); const converseIds: UserDMList = await broker.call( 'user.dmlist.getAllConverse', {}, { meta: { userId, }, } ); expect(converseIds).toEqual([...testData.converseIds]); }); });