You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/server/test/integration/user/dmlist.spec.ts

178 lines
3.9 KiB
TypeScript

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>(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]);
});
});