fix: updateAt on move scope change (#251)

This commit is contained in:
ChengLei Shao 2022-03-26 11:34:54 +08:00 committed by GitHub
parent 9e6579c4e2
commit e2616aa927
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 2 deletions

View File

@ -1,5 +1,7 @@
import { mockServer, MockServer } from './index';
import { registerActions } from '@nocobase/actions';
import { Database } from '@nocobase/database';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
describe('sort action', () => {
describe('same scope', () => {
@ -171,9 +173,12 @@ describe('sort action', () => {
describe('different scope', () => {
let api: MockServer;
let db: Database;
beforeEach(async () => {
api = mockServer();
db = api.db;
registerActions(api);
api.db.collection({
name: 'tests',
@ -245,7 +250,6 @@ describe('sort action', () => {
const beforeUpdatedAts = await getUpdatedAts();
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
await sleep(1000);
await api.agent().resource('tests').move({
@ -260,6 +264,64 @@ describe('sort action', () => {
expect(beforeMoveItem.get('updatedAt')).not.toEqual(afterMoveItem.get('updatedAt'));
});
it('should touch updatedAt when no item at target scope', async () => {
db.collection({
name: 'tasks',
fields: [
{
name: 'title',
type: 'string',
},
{
name: 'state',
type: 'string',
},
{
type: 'sort',
name: 'sort',
scopeKey: 'state',
},
],
});
await db.sync();
const t1 = await db.getRepository('tasks').create({
values: {
title: 't1',
state: '1',
},
});
const t2 = await db.getRepository('tasks').create({
values: {
title: 't2',
state: '1',
},
});
const beforeUpdated = t1.get('updatedAt');
await sleep(1000);
await api
.agent()
.resource('tasks')
.move({
sourceId: t1.get('id'),
targetScope: {
state: '2',
},
});
const afterT1 = await db.getRepository('tasks').findOne({
filter: {
id: t1.get('id'),
},
});
expect(beforeUpdated).not.toEqual(afterT1.get('updatedAt'));
});
it('targetId/1->6', async () => {
await api.agent().resource('tests').move({
sourceId: 1,

View File

@ -80,7 +80,7 @@ export class SortAbleCollection {
[this.scopeKey]: targetScopeValue,
},
{
silent: true,
silent: false,
},
);