mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-07-02 03:02:19 +08:00
Merge branch 'main' into next
This commit is contained in:
commit
bc63f281ed
@ -10,6 +10,7 @@
|
|||||||
import { MockServer } from '@nocobase/test';
|
import { MockServer } from '@nocobase/test';
|
||||||
import Database from '@nocobase/database';
|
import Database from '@nocobase/database';
|
||||||
import { getApp, sleep } from '@nocobase/plugin-workflow-test';
|
import { getApp, sleep } from '@nocobase/plugin-workflow-test';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
async function sleepToEvenSecond() {
|
async function sleepToEvenSecond() {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
@ -122,6 +123,40 @@ describe('workflow > triggers > schedule > date field mode', () => {
|
|||||||
expect(executions.length).toBe(0);
|
expect(executions.length).toBe(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('starts on date field without timezone', async () => {
|
||||||
|
const postsCollection = db.getCollection('posts');
|
||||||
|
postsCollection.addField('date', {
|
||||||
|
type: 'datetimeNoTz',
|
||||||
|
});
|
||||||
|
await db.sync();
|
||||||
|
const workflow = await WorkflowModel.create({
|
||||||
|
enabled: true,
|
||||||
|
type: 'schedule',
|
||||||
|
config: {
|
||||||
|
mode: 1,
|
||||||
|
collection: 'posts',
|
||||||
|
startsOn: {
|
||||||
|
field: 'date',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await sleepToEvenSecond();
|
||||||
|
const startTime = new Date();
|
||||||
|
startTime.setMilliseconds(0);
|
||||||
|
|
||||||
|
const post = await PostRepo.create({
|
||||||
|
values: { title: 't1', date: dayjs(startTime).format('YYYY-MM-DD HH:mm:ss') },
|
||||||
|
});
|
||||||
|
|
||||||
|
await sleep(2000);
|
||||||
|
|
||||||
|
const executions = await workflow.getExecutions();
|
||||||
|
expect(executions.length).toBe(1);
|
||||||
|
const d0 = Date.parse(executions[0].context.date);
|
||||||
|
expect(d0).toBe(startTime.getTime());
|
||||||
|
});
|
||||||
|
|
||||||
it('starts on post.createdAt and repeat by cron', async () => {
|
it('starts on post.createdAt and repeat by cron', async () => {
|
||||||
const workflow = await WorkflowModel.create({
|
const workflow = await WorkflowModel.create({
|
||||||
enabled: true,
|
enabled: true,
|
||||||
|
@ -57,7 +57,7 @@ function getDataOptionTime(record, on, dir = 1) {
|
|||||||
if (!field || !record.get(field)) {
|
if (!field || !record.get(field)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const second = new Date(record.get(field).getTime());
|
const second = new Date(record.get(field));
|
||||||
second.setMilliseconds(0);
|
second.setMilliseconds(0);
|
||||||
return second.getTime() + offset * unit * dir;
|
return second.getTime() + offset * unit * dir;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user