* 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
90 lines
2.4 KiB
TypeScript
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'));
|
|
});
|
|
});
|
|
});
|