示例#1
0
        public async Task ShouldExecuteWorkflow()
        {
            // Arrange
            var aCalled  = false;
            var bCalled  = false;
            var workflow = new AutocompleteTasksWorkflow(ctx => { aCalled = true; }, ctx => { bCalled = true; });
            var observer = new SingleWorkflowObserver <EmptyContext>(workflow, context => true);

            var bus = Bus.Factory.CreateUsingInMemory(sbc =>
            {
                sbc.ReceiveEndpoint("auto_complete_task_workflow", ep => { ep.Workflow(workflow); });
            });

            // Act
            bus.Start();

            await bus.Publish(new StartWorkflowMessage());

            var workflowFinished = observer.WorkflowFinishedHandle.Wait(TimeSpan.FromSeconds(5));

            bus.Stop();

            // Assert
            Assert.True(workflowFinished);
            Assert.Equal("@WF-@A-$A-@B-$B-$WF", observer.EventSequence);
            Assert.True(aCalled);
            Assert.True(bCalled);
        }
        public async Task ShouldExecuteWorkflow()
        {
            // Arrange
            var result = 0;

            var workflow = new ContextProcessingWorkflow(Multiply, number => result = number);
            var observer = new SingleWorkflowObserver <Context>(workflow, context => true);

            _bus = Bus.Factory.CreateUsingInMemory(sbc =>
            {
                sbc.ReceiveEndpoint("context_processing_workflow", ep => { ep.Workflow(workflow); });
            });

            // Act
            _bus.Start();

            await _bus.Publish(new StartWorkflowMessage(InitialNumber));

            var workflowFinished = observer.WorkflowFinishedHandle.Wait(TimeSpan.FromSeconds(5));

            _bus.Stop();

            // Assert
            Assert.True(workflowFinished);
            Assert.Equal(InitialNumber * Multiplier, result);
        }
        public MessageDrivenTasksWorkflowTests()
        {
            var workflow = new MessageDrivenTasksWorkflow();

            _observer = new SingleWorkflowObserver <EmptyContext>(workflow);
            _bus      = Bus.Factory.CreateUsingInMemory(sbc =>
            {
                sbc.ReceiveEndpoint("message_driven_task_workflow", ep => { ep.Workflow(workflow); });
            });
        }
        public MultipleRunsWorkflowTests()
        {
            var workflow = new MultipleRunsWorkflow();

            _observerX = new SingleWorkflowObserver <MultipleRunsWorkflowContext>(workflow,
                                                                                  ctx => ctx.SomeProp == "X");
            _observerY = new SingleWorkflowObserver <MultipleRunsWorkflowContext>(workflow,
                                                                                  ctx => ctx.SomeProp == "Y");

            _bus = Bus.Factory.CreateUsingInMemory(sbc =>
            {
                sbc.ReceiveEndpoint("multiple_runs_workflow", ep => { ep.Workflow(workflow); });
            });
        }
        public async Task ShouldExecuteWorkflow()
        {
            // Arrange
            var workflow = new EmptyWorkflow();
            var observer = new SingleWorkflowObserver <EmptyContext>(workflow);

            var bus = Bus.Factory.CreateUsingInMemory(sbc =>
            {
                sbc.ReceiveEndpoint("empty_workflow", ep => { ep.Workflow(workflow); });
            });

            // Act
            bus.Start();

            await bus.Publish(new StartWorkflowMessage());

            var workflowFinished = observer.WorkflowFinishedHandle.Wait(TimeSpan.FromSeconds(5));

            bus.Stop();

            // Assert
            Assert.True(workflowFinished);
        }