fix: updateAt on move scope change (#251)
This commit is contained in:
parent
9e6579c4e2
commit
e2616aa927
@ -1,5 +1,7 @@
|
|||||||
import { mockServer, MockServer } from './index';
|
import { mockServer, MockServer } from './index';
|
||||||
import { registerActions } from '@nocobase/actions';
|
import { registerActions } from '@nocobase/actions';
|
||||||
|
import { Database } from '@nocobase/database';
|
||||||
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
||||||
|
|
||||||
describe('sort action', () => {
|
describe('sort action', () => {
|
||||||
describe('same scope', () => {
|
describe('same scope', () => {
|
||||||
@ -171,9 +173,12 @@ describe('sort action', () => {
|
|||||||
|
|
||||||
describe('different scope', () => {
|
describe('different scope', () => {
|
||||||
let api: MockServer;
|
let api: MockServer;
|
||||||
|
let db: Database;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
api = mockServer();
|
api = mockServer();
|
||||||
|
db = api.db;
|
||||||
|
|
||||||
registerActions(api);
|
registerActions(api);
|
||||||
api.db.collection({
|
api.db.collection({
|
||||||
name: 'tests',
|
name: 'tests',
|
||||||
@ -245,7 +250,6 @@ describe('sort action', () => {
|
|||||||
|
|
||||||
const beforeUpdatedAts = await getUpdatedAts();
|
const beforeUpdatedAts = await getUpdatedAts();
|
||||||
|
|
||||||
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
||||||
await sleep(1000);
|
await sleep(1000);
|
||||||
|
|
||||||
await api.agent().resource('tests').move({
|
await api.agent().resource('tests').move({
|
||||||
@ -260,6 +264,64 @@ describe('sort action', () => {
|
|||||||
expect(beforeMoveItem.get('updatedAt')).not.toEqual(afterMoveItem.get('updatedAt'));
|
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 () => {
|
it('targetId/1->6', async () => {
|
||||||
await api.agent().resource('tests').move({
|
await api.agent().resource('tests').move({
|
||||||
sourceId: 1,
|
sourceId: 1,
|
||||||
|
@ -80,7 +80,7 @@ export class SortAbleCollection {
|
|||||||
[this.scopeKey]: targetScopeValue,
|
[this.scopeKey]: targetScopeValue,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
silent: true,
|
silent: false,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user