chore: test (#3664)
This commit is contained in:
parent
eae5a87ebd
commit
ca0f1b5c05
@ -0,0 +1,142 @@
|
||||
import Database, { Collection as DBCollection } from '@nocobase/database';
|
||||
import Application from '@nocobase/server';
|
||||
import { createApp } from '..';
|
||||
|
||||
describe('destroy', () => {
|
||||
let db: Database;
|
||||
let app: Application;
|
||||
let Collection: DBCollection;
|
||||
let Field: DBCollection;
|
||||
|
||||
beforeEach(async () => {
|
||||
app = await createApp({
|
||||
database: {
|
||||
tablePrefix: '',
|
||||
},
|
||||
});
|
||||
db = app.db;
|
||||
Collection = db.getCollection('collections');
|
||||
Field = db.getCollection('fields');
|
||||
|
||||
await Collection.repository.create({
|
||||
values: {
|
||||
name: 'a',
|
||||
fields: [
|
||||
{
|
||||
name: 'name',
|
||||
type: 'string',
|
||||
},
|
||||
],
|
||||
},
|
||||
context: {},
|
||||
});
|
||||
|
||||
await Collection.repository.create({
|
||||
values: {
|
||||
name: 'b',
|
||||
fields: [
|
||||
{
|
||||
name: 'name',
|
||||
type: 'string',
|
||||
},
|
||||
],
|
||||
},
|
||||
context: {},
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await app.destroy();
|
||||
});
|
||||
|
||||
describe('destroy field', () => {
|
||||
it('should remove field in model when field destroyed', async () => {
|
||||
const collection = await Collection.repository.create({
|
||||
values: {
|
||||
name: 'test',
|
||||
fields: [
|
||||
{ name: 'f1', type: 'string' },
|
||||
{
|
||||
name: 'name',
|
||||
type: 'string',
|
||||
},
|
||||
],
|
||||
},
|
||||
context: {},
|
||||
});
|
||||
|
||||
expect(db.getCollection('test').model.rawAttributes.name).toBeDefined();
|
||||
|
||||
await Field.repository.destroy({
|
||||
filter: {
|
||||
name: 'name',
|
||||
collectionName: 'test',
|
||||
},
|
||||
context: {},
|
||||
});
|
||||
|
||||
expect(db.getCollection('test').model.rawAttributes.name).toBeUndefined();
|
||||
expect(db.getCollection('test').model.rawAttributes.f1).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe('destroy foreign key', () => {
|
||||
it('should destroy association field when foreign key field destroyed', async () => {
|
||||
await Field.repository.create({
|
||||
values: {
|
||||
name: 'b',
|
||||
type: 'hasOne',
|
||||
target: 'b',
|
||||
collectionName: 'a',
|
||||
foreignKey: 'a_id',
|
||||
interface: 'oho',
|
||||
},
|
||||
context: {},
|
||||
});
|
||||
|
||||
// should create association field
|
||||
expect(
|
||||
await Field.repository.findOne({
|
||||
filter: {
|
||||
collectionName: 'a',
|
||||
name: 'b',
|
||||
},
|
||||
}),
|
||||
).toBeTruthy();
|
||||
|
||||
const foreignKeyField = await Field.repository.findOne({
|
||||
filter: {
|
||||
name: 'a_id',
|
||||
collectionName: 'b',
|
||||
},
|
||||
});
|
||||
|
||||
// should create foreign key
|
||||
expect(foreignKeyField).toBeTruthy();
|
||||
|
||||
expect(db.getCollection('b').model.rawAttributes.a_id).toBeTruthy();
|
||||
|
||||
// destroy foreign key field
|
||||
await Field.repository.destroy({
|
||||
filter: {
|
||||
name: 'a_id',
|
||||
collectionName: 'b',
|
||||
},
|
||||
context: {},
|
||||
});
|
||||
|
||||
// should remove association field
|
||||
expect(
|
||||
await Field.repository.findOne({
|
||||
filter: {
|
||||
collectionName: 'a',
|
||||
name: 'b',
|
||||
},
|
||||
}),
|
||||
).toBeFalsy();
|
||||
|
||||
// should remove foreign key
|
||||
expect(db.getCollection('b').model.rawAttributes.a_id).toBeFalsy();
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user