private static WorkflowRunTrigger CreateWorkflowRunTrigger()
        {
            var trigger = new WorkflowRunTrigger(
                name: BogusGenerator.Internet.DomainName(),
                inputs: BogusGenerator.Random.Word().OrNull(BogusGenerator),
                outputs: BogusGenerator.Random.Word().OrNull(BogusGenerator),
                startTime: BogusGenerator.Date.Past(),
                endTime: BogusGenerator.Date.Recent(),
                status: GenerateStatus(),
                error: BogusGenerator.Random.Bytes(10).OrNull(BogusGenerator));

            return(trigger);
        }
        private static WorkflowRun CreateWorkflowRun(WorkflowRunTrigger trigger)
        {
            var correlation = new Correlation(BogusGenerator.Random.String().OrNull(BogusGenerator)).OrNull(BogusGenerator);
            var workflowRun = new WorkflowRun(
                name: BogusGenerator.Internet.DomainWord(),
                startTime: BogusGenerator.Date.Recent(),
                status: GenerateStatus(),
                error: BogusGenerator.Random.Bytes(10).OrNull(BogusGenerator),
                correlation: correlation,
                trigger: trigger);

            return(workflowRun);
        }
        private static LogicAppTrigger CreateLogicAppTriggerFrom(WorkflowRunTrigger workflowRunTrigger)
        {
            Enum.TryParse(workflowRunTrigger.Status, out LogicAppActionStatus status);

            return(new LogicAppTrigger(
                       workflowRunTrigger.Name,
                       status,
                       workflowRunTrigger.Inputs,
                       workflowRunTrigger.Outputs,
                       workflowRunTrigger.Error,
                       workflowRunTrigger.StartTime,
                       workflowRunTrigger.EndTime));
        }
        public void ToLogicAppRun_WithWorkflowRunAndActions_CreatesCombinedModel()
        {
            // Arrange
            WorkflowRunTrigger           trigger     = CreateWorkflowRunTrigger();
            WorkflowRun                  workflowRun = CreateWorkflowRun(trigger);
            IEnumerable <LogicAppAction> actions     = CreateLogicAppActions();

            // Act
            var actual = LogicAppConverter.ToLogicAppRun(workflowRun, actions);

            // Assert
            Assert.NotNull(actual);
            Assert.Equal(workflowRun.Name, actual.Id);
            Assert.Equal(workflowRun.Status, actual.Status.ToString());
            Assert.Equal(workflowRun.StartTime, actual.StartTime);
            Assert.Equal(workflowRun.EndTime, actual.EndTime);
            Assert.Equal(workflowRun.Error, actual.Error);
            Assert.Equal(workflowRun.Correlation?.ClientTrackingId, actual.CorrelationId);
            Assert.Equal(actions, actual.Actions);

            Assert.Equal(trigger.Name, actual.Trigger.Name);
            Assert.Equal(trigger.Inputs, actual.Trigger.Inputs);
            Assert.Equal(trigger.Outputs, actual.Trigger.Outputs);
            Assert.Equal(trigger.StartTime, actual.Trigger.StartTime);
            Assert.Equal(trigger.EndTime, actual.Trigger.EndTime);
            Assert.Equal(trigger.Status, actual.Trigger.Status.ToString());
            Assert.Equal(trigger.Error, actual.Trigger.Error);

            Assert.All(actions.Where(action => action.TrackedProperties != null), action =>
            {
                Assert.All(action.TrackedProperties, prop =>
                {
                    Assert.Contains(prop, actual.TrackedProperties);
                });
            });
        }