fix Collection rest api (#205)
* test: collections rest api * test: add more test cases * fix: test case * fix: Error: src/schema-component/antd/array-table/TableRecordActionDesigner.tsx(3,38): error TS2307: Cannot find module '@nocobase/client' or its corresponding type declarations. * fix: belongsToMany create with empty value * fix: relation query test * test: appends + sort * fix: belongsToMany find error * fix: add cleanDb to fix database test * fix: mysql test Co-authored-by: chenos <chenlinxh@gmail.com>
This commit is contained in:
parent
2caec7a271
commit
9dd590c459
@ -7,8 +7,11 @@ describe('belongs to many with target key', function () {
|
|||||||
let db: Database;
|
let db: Database;
|
||||||
let Tag: Collection;
|
let Tag: Collection;
|
||||||
let Post: Collection;
|
let Post: Collection;
|
||||||
|
let Color: Collection;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
db = mockDatabase();
|
db = mockDatabase();
|
||||||
|
|
||||||
Post = db.collection({
|
Post = db.collection({
|
||||||
name: 'posts',
|
name: 'posts',
|
||||||
filterTargetKey: 'title',
|
filterTargetKey: 'title',
|
||||||
@ -114,6 +117,7 @@ describe('belongs to many', () => {
|
|||||||
let Post;
|
let Post;
|
||||||
let Tag;
|
let Tag;
|
||||||
let PostTag;
|
let PostTag;
|
||||||
|
let Color;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
db = mockDatabase();
|
db = mockDatabase();
|
||||||
@ -154,6 +158,15 @@ describe('belongs to many', () => {
|
|||||||
{ type: 'belongsToMany', name: 'posts', through: 'posts_tags' },
|
{ type: 'belongsToMany', name: 'posts', through: 'posts_tags' },
|
||||||
{ type: 'string', name: 'name' },
|
{ type: 'string', name: 'name' },
|
||||||
{ type: 'string', name: 'status' },
|
{ type: 'string', name: 'status' },
|
||||||
|
{ type: 'hasMany', name: 'colors' },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
Color = db.collection({
|
||||||
|
name: 'colors',
|
||||||
|
fields: [
|
||||||
|
{ type: 'string', name: 'name' },
|
||||||
|
{ type: 'belongsTo', name: 'tag' },
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -269,6 +282,35 @@ describe('belongs to many', () => {
|
|||||||
expect(t1).toBeNull();
|
expect(t1).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('find with sort & appends', async () => {
|
||||||
|
const p1 = await Post.repository.create({
|
||||||
|
values: {
|
||||||
|
title: 'p1',
|
||||||
|
tags: [
|
||||||
|
{
|
||||||
|
name: 't1',
|
||||||
|
colors: [
|
||||||
|
{
|
||||||
|
name: 'red',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{ name: 't2', colors: [{ name: 'green' }] },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const PostTagsRepository = new BelongsToManyRepository(Post, 'tags', p1.id);
|
||||||
|
const tags = await PostTagsRepository.find({
|
||||||
|
appends: ['colors'],
|
||||||
|
sort: ['name'],
|
||||||
|
limit: 20,
|
||||||
|
offset: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(tags);
|
||||||
|
});
|
||||||
|
|
||||||
test('update raw attribute', async () => {
|
test('update raw attribute', async () => {
|
||||||
const otherTag = await Tag.repository.create({
|
const otherTag = await Tag.repository.create({
|
||||||
values: { name: 'other_tag' },
|
values: { name: 'other_tag' },
|
||||||
|
@ -33,7 +33,8 @@ export class BelongsToManyRepository extends MultipleRelationRepository implemen
|
|||||||
const transaction = await this.getTransaction(options);
|
const transaction = await this.getTransaction(options);
|
||||||
|
|
||||||
const createAccessor = this.accessors().create;
|
const createAccessor = this.accessors().create;
|
||||||
const values = options.values;
|
|
||||||
|
const values = options.values || {};
|
||||||
|
|
||||||
const sourceModel = await this.getSourceModel(transaction);
|
const sourceModel = await this.getSourceModel(transaction);
|
||||||
|
|
||||||
|
@ -32,11 +32,14 @@ export abstract class MultipleRelationRepository extends RelationRepository {
|
|||||||
async find(options?: FindOptions): Promise<any> {
|
async find(options?: FindOptions): Promise<any> {
|
||||||
const transaction = await this.getTransaction(options);
|
const transaction = await this.getTransaction(options);
|
||||||
|
|
||||||
const findOptions = this.extendFindOptions(
|
const findOptions = {
|
||||||
this.buildQueryOptions({
|
...this.extendFindOptions(
|
||||||
...options,
|
this.buildQueryOptions({
|
||||||
}),
|
...options,
|
||||||
);
|
}),
|
||||||
|
),
|
||||||
|
subQuery: false,
|
||||||
|
};
|
||||||
|
|
||||||
const getAccessor = this.accessors().get;
|
const getAccessor = this.accessors().get;
|
||||||
const sourceModel = await this.getSourceModel(transaction);
|
const sourceModel = await this.getSourceModel(transaction);
|
||||||
@ -44,7 +47,7 @@ export abstract class MultipleRelationRepository extends RelationRepository {
|
|||||||
if (findOptions.include && findOptions.include.length > 0) {
|
if (findOptions.include && findOptions.include.length > 0) {
|
||||||
const ids = (
|
const ids = (
|
||||||
await sourceModel[getAccessor]({
|
await sourceModel[getAccessor]({
|
||||||
...omit(findOptions, 'order'),
|
...findOptions,
|
||||||
includeIgnoreAttributes: false,
|
includeIgnoreAttributes: false,
|
||||||
attributes: [this.targetKey()],
|
attributes: [this.targetKey()],
|
||||||
group: `${this.targetModel.name}.${this.targetKey()}`,
|
group: `${this.targetModel.name}.${this.targetKey()}`,
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
import { flatten } from 'flat';
|
import lodash from 'lodash';
|
||||||
import lodash, { keys } from 'lodash';
|
import { Model, ModelCtor } from 'sequelize';
|
||||||
|
|
||||||
import { Collection } from './collection';
|
|
||||||
import { BelongsTo, HasOne, Model, ModelCtor } from 'sequelize';
|
|
||||||
import { AssociationKeysToBeUpdate, BlackList, WhiteList } from './repository';
|
import { AssociationKeysToBeUpdate, BlackList, WhiteList } from './repository';
|
||||||
|
|
||||||
|
|
||||||
type UpdateValueItem = string | number | UpdateValues;
|
type UpdateValueItem = string | number | UpdateValues;
|
||||||
|
|
||||||
type UpdateValues = {
|
type UpdateValues = {
|
||||||
@ -130,7 +128,7 @@ export class UpdateGuard {
|
|||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
let valuesKeys = Object.keys(values);
|
let valuesKeys = Object.keys(values || {});
|
||||||
|
|
||||||
// handle whitelist
|
// handle whitelist
|
||||||
if (this.whiteList) {
|
if (this.whiteList) {
|
||||||
|
@ -19,6 +19,8 @@ export async function prepareApp() {
|
|||||||
registerActions: true,
|
registerActions: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await app.cleanDb();
|
||||||
|
|
||||||
app.plugin(PluginUiSchema);
|
app.plugin(PluginUiSchema);
|
||||||
app.plugin(PluginCollectionManager);
|
app.plugin(PluginCollectionManager);
|
||||||
|
|
||||||
|
@ -0,0 +1,462 @@
|
|||||||
|
import { MockServer } from '@nocobase/test';
|
||||||
|
import { createApp } from '..';
|
||||||
|
|
||||||
|
describe('collections repository', () => {
|
||||||
|
let app: MockServer;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
app = await createApp();
|
||||||
|
await app.install({ clean: true });
|
||||||
|
await app.start();
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('collections')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
name: 'tags',
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
type: 'string',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('collections')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
name: 'foos',
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
type: 'string',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('collections.fields', 'tags')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
name: 'foos',
|
||||||
|
target: 'foos',
|
||||||
|
type: 'belongsToMany',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('collections')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
name: 'comments',
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
type: 'string',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('collections')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
name: 'posts',
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
name: 'title',
|
||||||
|
type: 'string',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'comments',
|
||||||
|
target: 'comments',
|
||||||
|
type: 'hasMany',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'tags',
|
||||||
|
target: 'tags',
|
||||||
|
type: 'belongsToMany',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await app.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 1', async () => {
|
||||||
|
const response1 = await app.agent().resource('posts').create();
|
||||||
|
const postId = response1.body.data.id;
|
||||||
|
const response2 = await app.agent().resource('posts.comments', postId).create();
|
||||||
|
expect(response2.statusCode).toBe(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 2', async () => {
|
||||||
|
const response = await app.agent().resource('posts').create();
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 1',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 2',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const response2 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.list({
|
||||||
|
filter: {
|
||||||
|
'comments.title': 'comment 1',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(response2.body.data[0].id).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 3', async () => {
|
||||||
|
const response = await app.agent().resource('posts').create();
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 1',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const response2 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.list({
|
||||||
|
filter: {
|
||||||
|
'comments.id': 3,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(response2.body.data.length).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 4', async () => {
|
||||||
|
const response = await app.agent().resource('posts').create();
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 1',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const response2 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.list({
|
||||||
|
filter: {
|
||||||
|
$and: [
|
||||||
|
{
|
||||||
|
'comments.title': 'comment 1',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(response2.body.data[0].id).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 5', async () => {
|
||||||
|
const response = await app.agent().resource('posts').create();
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
await app.agent().resource('posts.tags', postId).create({
|
||||||
|
values: {},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(await app.db.getRepository('tags').count()).toEqual(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 6', async () => {
|
||||||
|
const response = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
tags: [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
title: 'Tag1',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
const response1 = await app.agent().resource('posts.tags', postId).list();
|
||||||
|
expect(response1.body.data.length).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 7', async () => {
|
||||||
|
const response = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
tags: [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
title: 'Tag1',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
const response1 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.tags', postId)
|
||||||
|
.list({
|
||||||
|
filter: {
|
||||||
|
title: 'Tag1',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(response1.body.data.length).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 8', async () => {
|
||||||
|
const response = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
tags: [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
title: 'Tag1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Tag2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
const response1 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.tags', postId)
|
||||||
|
.list({
|
||||||
|
filter: {
|
||||||
|
$or: [{ title: 'Tag1' }, { title: 'Tag2' }],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(response1.body.data.length).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 9', async () => {
|
||||||
|
const response = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
tags: [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
title: 'Tag1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Tag2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
const response1 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.tags', postId)
|
||||||
|
.list({
|
||||||
|
filter: {
|
||||||
|
$or: [{ title: 'Tag1' }, { title: 'Tag2' }],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(response1.body.data.length).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 10', async () => {
|
||||||
|
const response = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
tags: [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
title: 'Tag1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Tag2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
const response1 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.tags', postId)
|
||||||
|
.list({
|
||||||
|
appends: ['foos'],
|
||||||
|
page: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
sort: ['-createdAt', '-id'],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(response1.body.data[0]['id']).toEqual(3);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 11', async () => {
|
||||||
|
const response = await app.agent().resource('posts').create();
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 1',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 2',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const response2 = await app.agent().resource('posts').create();
|
||||||
|
const postId2 = response2.body.data.id;
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId2)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 2',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId2)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 2',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const response3 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.list({
|
||||||
|
filter: {
|
||||||
|
$or: [
|
||||||
|
{
|
||||||
|
'comments.title': 'comment 1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'comments.title': 'comment 2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(response3.body.data.length).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 12', async () => {
|
||||||
|
const response = await app.agent().resource('posts').create();
|
||||||
|
const postId = response.body.data.id;
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 1',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 2',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
title: 'comment 3',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const response2 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts.comments', postId)
|
||||||
|
.list({
|
||||||
|
filter: {
|
||||||
|
$or: [
|
||||||
|
{
|
||||||
|
title: 'comment 1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'comment 2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(response2.body.data.length).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('case 13', async () => {
|
||||||
|
const tagRepository = app.db.getRepository('tags');
|
||||||
|
const tag1 = await tagRepository.create({ values: { title: 'tag1' } });
|
||||||
|
const tag2 = await tagRepository.create({ values: { title: 'tag2' } });
|
||||||
|
const tag3 = await tagRepository.create({ values: { title: 'tag3' } });
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
tags: [tag1.get('id'), tag3.get('id')],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
tags: [tag2.get('id')],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.create({
|
||||||
|
values: {
|
||||||
|
tags: [tag2.get('id'), tag3.get('id')],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const response1 = await app
|
||||||
|
.agent()
|
||||||
|
.resource('posts')
|
||||||
|
.list({
|
||||||
|
filter: {
|
||||||
|
$or: [{ 'tags.title': 'tag1' }, { 'tags.title': 'tag3' }],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(response1.body.data.length).toBe(2);
|
||||||
|
});
|
||||||
|
});
|
@ -3,6 +3,7 @@ import CollectionManagerPlugin from '..';
|
|||||||
|
|
||||||
export async function createApp() {
|
export async function createApp() {
|
||||||
const app = mockServer();
|
const app = mockServer();
|
||||||
|
await app.cleanDb();
|
||||||
app.plugin(CollectionManagerPlugin);
|
app.plugin(CollectionManagerPlugin);
|
||||||
await app.load();
|
await app.load();
|
||||||
return app;
|
return app;
|
||||||
|
@ -19,6 +19,7 @@ describe('server hooks', () => {
|
|||||||
registerActions: true,
|
registerActions: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await app.cleanDb();
|
||||||
db = app.db;
|
db = app.db;
|
||||||
|
|
||||||
app.plugin(UiSchemaStoragePlugin);
|
app.plugin(UiSchemaStoragePlugin);
|
||||||
|
@ -58,6 +58,7 @@ describe('server hooks', () => {
|
|||||||
registerActions: true,
|
registerActions: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await app.cleanDb();
|
||||||
db = app.db;
|
db = app.db;
|
||||||
|
|
||||||
app.plugin(UiSchemaStoragePlugin);
|
app.plugin(UiSchemaStoragePlugin);
|
||||||
|
Loading…
Reference in New Issue
Block a user