예제 #1
0
        public void TransitionContext_SetVariable_ReplacesExistingVariableValue()
        {
            // Arrange
            Switcher switcher = new Switcher
            {
                Type = OnOffWorkflow.TYPE
            };
            var context  = new TransitionContext(switcher);
            var variable = new SwitcherWorkflowVariable(true);

            context.SetVariable <SwitcherWorkflowVariable>(
                SwitcherWorkflowVariable.KEY,
                variable);

            Assert.IsTrue(context
                          .GetVariable <SwitcherWorkflowVariable>(SwitcherWorkflowVariable.KEY)
                          .CanSwitch);

            variable.CanSwitch = false;

            // Act
            context.SetVariable <SwitcherWorkflowVariable>(
                SwitcherWorkflowVariable.KEY,
                variable);

            // Assert
            Assert.IsNotNull(context);
            Assert.IsTrue(context.HasVariables);
            Assert.IsTrue(context.ContainsKey(SwitcherWorkflowVariable.KEY));
            Assert.IsFalse(context
                           .GetVariable <SwitcherWorkflowVariable>(SwitcherWorkflowVariable.KEY)
                           .CanSwitch);
        }
예제 #2
0
 /// <summary>
 /// Returns the workflow variable from the TransitionContext.
 /// </summary>
 /// <typeparam name="TVariable"></typeparam>
 /// <param name="transitionContext"></param>
 /// <returns></returns>
 public static TVariable ReturnVariable <TVariable>(
     this TransitionContext transitionContext
     ) where TVariable : WorkflowVariableBase
 {
     return(transitionContext.GetVariable <TVariable>(
                KeyBuilder.ToKey(typeof(TVariable))
                ));
 }
예제 #3
0
        public void TransitionContext_GetVariable_VariableNotPresent()
        {
            // Arrange
            Switcher switcher = new Switcher
            {
                Type = OnOffWorkflow.TYPE
            };
            var context = new TransitionContext(switcher);

            // Act
            Assert.Throws <Exception>(
                () => context.GetVariable <SwitcherWorkflowVariable>(SwitcherWorkflowVariable.KEY));
        }
예제 #4
0
        private bool CanSwitch(TransitionContext context)
        {
            var switcher = context.GetInstance <Switcher>();

            if (context.ContainsKey(SwitcherWorkflowVariable.KEY))
            {
                var variable = context
                               .GetVariable <SwitcherWorkflowVariable>(SwitcherWorkflowVariable.KEY);

                return(variable.CanSwitch);
            }

            return(true);
        }
예제 #5
0
        private void ReAssignToRequestor(TransitionContext context)
        {
            var holiday = context.GetInstance <Holiday>();

            this._logger.LogInformation($"Reassign Holiday entity to requostor: {holiday.Requester}");

            holiday.Assignee = holiday.Requester;

            if (context.ContainsKey(ApproveHolidayViewModel.KEY))
            {
                var model = context.GetVariable <ApproveHolidayViewModel>(ApproveHolidayViewModel.KEY);
                if (!string.IsNullOrWhiteSpace(model.Message))
                {
                    holiday.AddMessage(this._userContextService.UserName, model.Message);
                }
            }
        }
예제 #6
0
        private bool BossIsApproving(TransitionContext context)
        {
            var holiday = context.GetInstance <Holiday>();

            this._logger.LogInformation($"Holiday entity in BossIsApproving: {holiday.Superior}");

            if (context.ContainsKey(ApproveHolidayViewModel.KEY))
            {
                var model = context.GetVariable <ApproveHolidayViewModel>(ApproveHolidayViewModel.KEY);
                if (!string.IsNullOrWhiteSpace(model.Message))
                {
                    holiday.AddMessage(this._userContextService.UserName, model.Message);
                }

                return(holiday.Superior == this._userContextService.UserName);
            }

            return(false);
        }
예제 #7
0
        private void AssignBoss(TransitionContext context)
        {
            var holiday = context.GetInstance <Holiday>();

            if (context.ContainsKey(ApplyHolidayViewModel.KEY))
            {
                var model = context.GetVariable <ApplyHolidayViewModel>(ApplyHolidayViewModel.KEY);
                holiday.Assignee = holiday.Superior;
                holiday.From     = model.From;
                holiday.To       = model.To;

                if (!string.IsNullOrWhiteSpace(model.Message))
                {
                    holiday.AddMessage(this._userContextService.UserName, model.Message);
                }
            }

            this._logger.LogInformation($"Assignee: {holiday.Assignee}");
        }
예제 #8
0
        public void TransitionContext_GetVariable_VariableReturned()
        {
            // Arrange
            Switcher switcher = new Switcher
            {
                Type = OnOffWorkflow.TYPE
            };
            var context   = new TransitionContext(switcher);
            var canSwitch = new SwitcherWorkflowVariable(true);

            context.SetVariable <SwitcherWorkflowVariable>(
                SwitcherWorkflowVariable.KEY,
                canSwitch);

            // Act
            var variable = context
                           .GetVariable <SwitcherWorkflowVariable>(SwitcherWorkflowVariable.KEY);

            // Assert
            Assert.IsNotNull(variable);
            Assert.IsTrue(variable.CanSwitch);
        }