示例#1
0
        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);
        }
示例#2
0
        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());
        }