public async Task IntegrationTestWorkflowDbStoreLoadFromStore() { var workflowId = Guid.NewGuid(); var workflowType = typeof(UpdateArgumentWorkflow); var dbStore = new WorkflowDbStore(); using (var engine = new DbStoreWorkflowEngine(dbStore, true)) { // manually add the create event engine.Store.Context.WorkflowSyncEvents.Add( new WorkflowSyncEventEntity { WorkflowId = workflowId, StoreEvent = StoreEvents.CreateEvent, WorkflowType = workflowType.AssemblyQualifiedName, State = JsonHelper.Serialize(new WorkflowStoreState()), DateCreated = DateTime.UtcNow }); // manually add the start event engine.Store.Context.WorkflowSyncEvents.Add( new WorkflowSyncEventEntity { WorkflowId = workflowId, StoreEvent = StoreEvents.StartEvent, WorkflowType = workflowType.AssemblyQualifiedName, State = JsonHelper.Serialize( new WorkflowStoreState { Arguments = new Dictionary <string, object> { { "TestArg", string.Empty } } }), DateCreated = DateTime.UtcNow }); await engine.Store.Context.SaveChangesAsync(); // the manually added events shouldn't be loaded yet var instance = engine.GetWorkflow(workflowId); Assert.IsNull(instance); } // restart the engine without resetting the context so it will load the workflow using (var engine = new DbStoreWorkflowEngine(dbStore)) { await dbStore.LoadFromStore(); var instance = engine.GetWorkflow(workflowId); Assert.IsNotNull(instance); Assert.IsTrue(instance.IsStarted); await instance.Wait(); Assert.AreEqual("Updated argument", instance.GetArgument <string>("TestArg").Value); } dbStore.Dispose(); }
public async Task IntegrationTestWorkflowDbStoreSyncState() { using (var engine = new DbStoreWorkflowEngine(true)) { await TestWorkflowStoreInterfaceSyncState(engine); } }