public void Workflow_AddExistingVariable_VariableAdded() { // Arrange var correlationId = 100; var type = EntityOnOffWorkflow.TYPE; var state = "Off"; var assignee = "alice"; var workflow = Workflow.Create(correlationId, type, state, assignee); var variable = new LightSwitcherWorkflowVariable(); workflow.AddVariable(variable); var existingVariable = new LightSwitcherWorkflowVariable { CanSwitch = true }; // Act workflow.AddVariable(existingVariable); // Assert Assert.NotNull(workflow); Assert.Single(workflow.WorkflowVariables); var wv = workflow.WorkflowVariables.First(); var v = (LightSwitcherWorkflowVariable)WorkflowVariable.ConvertContent(wv); Assert.True(v.CanSwitch); }
public void Workflow_AddVariable_VariableAdded() { // Arrange var correlationId = 100; var type = EntityOnOffWorkflow.TYPE; var state = "Off"; var assignee = "alice"; var workflow = Workflow.Create(correlationId, type, state, assignee); var variable = new LightSwitcherWorkflowVariable(); // Act workflow.AddVariable(variable); // Assert Assert.NotNull(workflow); Assert.Single(workflow.WorkflowVariables); }
public async Task WorkflowEngine_TriggerAsyncWithEntityWorkflowInstanceAndSameWorkflowVariable_ReturnsTriggerResult() { // Arrange var instance = new LightSwitcher(); this.Context.Switchers.Add(instance); var workflow = Workflow.Create(instance.Id, instance.Type, instance.State, "tester"); var variable = new LightSwitcherWorkflowVariable { CanSwitch = true }; workflow.AddVariable(variable); this.Context.Workflows.Add(workflow); await this.Context.SaveChangesAsync(); variable.CanSwitch = false; var param = new TriggerParam("SwitchOn", instance) .AddVariableWithKey <LightSwitcherWorkflowVariable>(variable);; // Act var triggerResult = await this.WorkflowEngine.TriggerAsync(param); // Assert Assert.IsNotNull(triggerResult); Assert.IsFalse(triggerResult.HasErrors); Assert.AreEqual(instance.State, triggerResult.CurrentState); Assert.AreEqual("On", triggerResult.CurrentState); Assert.IsTrue(param.HasVariables); Assert.AreEqual(1, workflow.WorkflowHistories.Count()); var workflowVariable = workflow.WorkflowVariables.First(); var type = KeyBuilder.FromKey(workflowVariable.Type); var myDeserializedVariable = JsonConvert.DeserializeObject(workflowVariable.Content, type); Assert.IsInstanceOfType(myDeserializedVariable, typeof(LightSwitcherWorkflowVariable)); var variableInstance = myDeserializedVariable as LightSwitcherWorkflowVariable; Assert.IsFalse(variableInstance.CanSwitch); }
public async Task WorkflowEngine_TriggerAsyncWithEntityWorkflowInstanceAndNewWorkflowVariable_ReturnsTriggerResult() { // Arrange var instance = new LightSwitcher(); var workfowVariable = new LightSwitcherWorkflowVariable { CanSwitch = true }; var param = new TriggerParam("SwitchOn", instance) .AddVariableWithKey <LightSwitcherWorkflowVariable>(workfowVariable); // Act var triggerResult = await this.WorkflowEngine.TriggerAsync(param); // Assert Assert.IsNotNull(triggerResult); Assert.IsFalse(triggerResult.HasErrors); Assert.AreEqual(instance.State, triggerResult.CurrentState); Assert.AreEqual("On", triggerResult.CurrentState); Assert.AreEqual(1, this.Context.Workflows.Count()); Assert.AreEqual(1, this.Context.Workflows.First().WorkflowVariables.Count()); }