public void Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithWorkflow_WhenExists(string schema) { var queryService = new QueryService(new SqlServerStorageOptions() { SchemaName = schema }); UseConnection((conn) => { var job1 = WorkflowJob.MakeJob(() => Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithWorkflow_WhenExists(""), "dflt2", Guid.NewGuid(), 4, "new"); var job2 = WorkflowJob.MakeJob(() => Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithWorkflow_WhenExists("asd"), "dfldasdt2", Guid.NewGuid(), 2, "new2"); job1.ContinueWith(job2); var sc = new Core.Common.ScheduledTask() { Cron = "0 0 0 0", Workflow = new Workflow(job1), Name = "recurring_name", OnlyIfLastFinishedOrFailed = true, LastInvocation = DateTime.Today, NextInvocation = DateTime.Today }; var result = queryService.CreateOrUpdateRecurringJob(sc, conn); Assert.Equal(1, result); var recurring = conn.Query <ScheduleEntity>($"SELECT * FROM [{schema}].Schedule").FirstOrDefault(); Assert.Equal(sc.Cron, recurring.Cron); Assert.Equal(sc.OnlyIfLastFinishedOrFailed, recurring.OnlyIfLastFinishedOrFailed); Assert.Equal(sc.LastInvocation, recurring.LastInvocation); Assert.Equal(sc.Name, recurring.Name); Assert.Equal(sc.NextInvocation, recurring.NextInvocation); Assert.Equal(JobHelper.ToJson(sc.Workflow), recurring.WorkflowInvocationData); Assert.Equal(JobHelper.ToJson(ScheduledJobInvocationData.FromScheduledJob(sc)), recurring.JobInvocationData); }); }
public void Run_CreateOrUpdateRecurringJob_UpdatesExistingRecurringJob(string schema) { var queryService = new QueryService(new SqlServerStorageOptions() { SchemaName = schema }); UseConnection((conn) => { var sc = new Core.Common.ScheduledTask() { Cron = "0 0 0 0", Job = new Core.Common.QueueJob() { Description = "test", Job = Job.FromExpression(() => Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithJob_WhenExists("")), ContextId = Guid.NewGuid(), MaxRetries = 10, QueueName = "dflt" }, Name = "recurring_name", OnlyIfLastFinishedOrFailed = true, LastInvocation = DateTime.Today, NextInvocation = DateTime.Today }; var result = queryService.CreateOrUpdateRecurringJob(sc, conn); var sc2 = new Core.Common.ScheduledTask() { Cron = "0 0 0 0 0", Job = new Core.Common.QueueJob() { Description = "test 2", Job = Job.FromExpression(() => Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithJob_WhenExists("")), ContextId = Guid.NewGuid(), MaxRetries = 2, QueueName = "dfdsasdlt" }, Name = "recurring_name", OnlyIfLastFinishedOrFailed = false, LastInvocation = DateTime.Today, NextInvocation = DateTime.Today }; var result2 = queryService.CreateOrUpdateRecurringJob(sc2, conn); Assert.Equal(1, result2); var recurring = conn.Query <ScheduleEntity>($"SELECT * FROM [{schema}].Schedule").FirstOrDefault(); Assert.Equal(sc2.Cron, recurring.Cron); Assert.Equal(sc2.OnlyIfLastFinishedOrFailed, recurring.OnlyIfLastFinishedOrFailed); Assert.Equal(sc2.LastInvocation, recurring.LastInvocation); Assert.Equal(sc2.Name, recurring.Name); Assert.Equal(sc2.NextInvocation, recurring.NextInvocation); Assert.Equal(JobHelper.ToJson(sc2.Workflow), recurring.WorkflowInvocationData); Assert.Equal(JobHelper.ToJson(ScheduledJobInvocationData.FromScheduledJob(sc2)), recurring.JobInvocationData); }); }