tachybase_todo/packages/plugins/users/src/__tests__/fields.test.ts
chenos 249dff16d3
refactor: plugin manager (#965)
* feat: improve code

* chore: update version

* feat: api service

* fix: api services

* feat: improve code

* feat: improve code

* feat: improve code

* feat: pm socket

* fix: test errors

* feat: add built-in plugins before upgrade

* feat: update docs

* feat: improve code

* fix: after load
2022-10-27 13:00:16 +08:00

90 lines
2.4 KiB
TypeScript

import Database from '@nocobase/database';
import PluginACL from '@nocobase/plugin-acl';
import UsersPlugin from '@nocobase/plugin-users';
import { mockServer, MockServer } from '@nocobase/test';
import { userPluginConfig } from './utils';
describe('createdBy/updatedBy', () => {
let api: MockServer;
let db: Database;
beforeEach(async () => {
api = mockServer();
api.plugin(UsersPlugin, userPluginConfig);
api.plugin(PluginACL, { name: 'acl' });
await api.loadAndInstall({ clean: true });
db = api.db;
});
afterEach(async () => {
await db.close();
});
describe('collection definition', () => {
it('case 1', async () => {
const Post = db.collection({
name: 'posts',
createdBy: true,
updatedBy: true,
});
expect(Post.hasField('createdBy')).toBeTruthy();
expect(Post.hasField('updatedBy')).toBeTruthy();
});
it('case 2', async () => {
const Post = db.collection({
name: 'posts',
createdBy: true,
updatedBy: true,
});
await db.sync();
const currentUser = await db.getCollection('users').model.create();
await Post.repository.create({
context: {
state: {
currentUser,
},
},
});
const p2 = await Post.repository.findOne({
appends: ['createdBy', 'updatedBy'],
});
const data = p2.toJSON();
expect(data.createdBy.id).toBe(currentUser.get('id'));
expect(data.updatedBy.id).toBe(currentUser.get('id'));
});
it('case 3', async () => {
const Post = db.collection({
name: 'posts',
createdBy: true,
updatedBy: true,
});
await db.sync();
const user1 = await db.getCollection('users').model.create();
const user2 = await db.getCollection('users').model.create();
const p1 = await Post.repository.create({
context: {
state: {
currentUser: user1,
},
},
});
await Post.repository.update({
values: {},
filterByTk: p1.id,
context: {
state: {
currentUser: user2,
},
},
});
const p2 = await Post.repository.findOne({
appends: ['createdBy', 'updatedBy'],
});
const data = p2.toJSON();
expect(data.createdBy.id).toBe(user1.get('id'));
expect(data.updatedBy.id).toBe(user2.get('id'));
});
});
});