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