public TriggersForActivityBlueprintAndWorkflowProvider(
     IBookmarkHasher bookmarkHasher,
     IEnumerable <IBookmarkProvider> bookmarkProviders,
     ICreatesActivityExecutionContextForActivityBlueprint activityExecutionContextFactory)
 {
     _bookmarkHasher    = bookmarkHasher;
     _bookmarkProviders = bookmarkProviders;
     _activityExecutionContextFactory = activityExecutionContextFactory;
 }
Пример #2
0
 public TriggersForActivityBlueprintAndWorkflowProvider(
     IBookmarkHasher bookmarkHasher,
     IEnumerable <IBookmarkProvider> bookmarkProviders,
     ICreatesActivityExecutionContextForActivityBlueprint activityExecutionContextFactory)
 {
     this.bookmarkHasher    = bookmarkHasher ?? throw new System.ArgumentNullException(nameof(bookmarkHasher));
     this.bookmarkProviders = bookmarkProviders ?? throw new System.ArgumentNullException(nameof(bookmarkProviders));
     this.activityExecutionContextFactory = activityExecutionContextFactory ?? throw new System.ArgumentNullException(nameof(activityExecutionContextFactory));
 }
Пример #3
0
    private async Task <HttpEndpointDescriptor> GetHttpEndpointDescriptor(
        WorkflowExecutionContext workflowExecutionContext,
        WorkflowTrigger workflowTrigger,
        ICreatesActivityExecutionContextForActivityBlueprint activityExecutionContextFactory)
    {
        var activityId                   = workflowTrigger.ActivityId;
        var httpEndpointActivity         = workflowExecutionContext.WorkflowBlueprint.GetActivity(activityId) !;
        var httpEndpointBookmark         = (HttpEndpointBookmark)workflowTrigger.Bookmark;
        var activityExecutionContext     = activityExecutionContextFactory.CreateActivityExecutionContext(httpEndpointActivity, workflowExecutionContext, CancellationToken.None);
        var httpEndpointActivityAccessor = new ActivityBlueprintWrapper <HttpEndpoint>(activityExecutionContext);
        var displayName                  = httpEndpointActivity.DisplayName;
        var description                  = httpEndpointActivity.Description;
        var path       = httpEndpointBookmark.Path;
        var method     = httpEndpointBookmark.Method !;
        var targetType = await httpEndpointActivityAccessor.EvaluatePropertyValueAsync(x => x.TargetType);

        var schema = await httpEndpointActivityAccessor.EvaluatePropertyValueAsync(x => x.Schema);

        return(new HttpEndpointDescriptor(activityId, path, method, displayName, description, targetType, schema));
    }
Пример #4
0
        public async Task GetTriggersForActivityBlueprintAsyncReturnsTriggersForEachBookmarkInSupportedBookmarkProviders(IBookmarkHasher bookmarkHasher,
                                                                                                                         IBookmarkProvider bookmarkProvider1,
                                                                                                                         IBookmarkProvider unsupportedBookmarkProvider,
                                                                                                                         IBookmarkProvider bookmarkProvider2,
                                                                                                                         ICreatesActivityExecutionContextForActivityBlueprint activityExecutionContextFactory,
                                                                                                                         [Frozen] IActivityBlueprint activityBlueprint,
                                                                                                                         [WithAutofixtureResolution, Frozen] IServiceProvider serviceProvider,
                                                                                                                         [Frozen] IWorkflowBlueprint workflowBlueprint,
                                                                                                                         [OmitOnRecursion, Frozen] WorkflowInstance workflowInstance,
                                                                                                                         [Frozen] WorkflowExecutionContext workflowExecutionContext,
                                                                                                                         [NoAutoProperties] ActivityExecutionContext activityExecutionContext,
                                                                                                                         ActivityType activityType,
                                                                                                                         IBookmark bookmark1,
                                                                                                                         IBookmark bookmark2,
                                                                                                                         IBookmark bookmark3,
                                                                                                                         IBookmark bookmark4)
        {
            var sut = new TriggersForActivityBlueprintAndWorkflowProvider(bookmarkHasher,
                                                                          new[] { bookmarkProvider1, unsupportedBookmarkProvider, bookmarkProvider2 },
                                                                          activityExecutionContextFactory);

            Mock.Get(activityExecutionContextFactory)
            .Setup(x => x.CreateActivityExecutionContext(activityBlueprint, workflowExecutionContext, default))
            .Returns(activityExecutionContext);
            Mock.Get(activityBlueprint).SetupGet(x => x.Type).Returns(activityType.TypeName);
            Mock.Get(bookmarkProvider1)
            .Setup(x => x.SupportsActivityAsync(It.Is <BookmarkProviderContext>(c => c.ActivityType == activityType), default))
            .Returns(() => ValueTask.FromResult(true));
            Mock.Get(unsupportedBookmarkProvider)
            .Setup(x => x.SupportsActivityAsync(It.Is <BookmarkProviderContext>(c => c.ActivityType == activityType), default))
            .Returns(() => ValueTask.FromResult(false));
            Mock.Get(bookmarkProvider2)
            .Setup(x => x.SupportsActivityAsync(It.Is <BookmarkProviderContext>(c => c.ActivityType == activityType), default))
            .Returns(() => ValueTask.FromResult(true));
            Mock.Get(bookmarkProvider1)
            .Setup(x => x.GetBookmarksAsync(It.IsAny <BookmarkProviderContext>(), default))
            .Returns(() => ValueTask.FromResult <IEnumerable <IBookmark> >(new [] { bookmark1, bookmark2 }));
            Mock.Get(bookmarkProvider2)
            .Setup(x => x.GetBookmarksAsync(It.IsAny <BookmarkProviderContext>(), default))
            .Returns(() => ValueTask.FromResult <IEnumerable <IBookmark> >(new [] { bookmark3, bookmark4 }));

            var result = await sut.GetTriggersForActivityBlueprintAsync(activityBlueprint,
                                                                        workflowExecutionContext,
                                                                        new Dictionary <string, ActivityType> {
                { activityType.TypeName, activityType }
            });

            Assert.True(result.Any(x => x.Bookmark == bookmark1), "Result contains a trigger for bookmark 1");
            Assert.True(result.Any(x => x.Bookmark == bookmark2), "Result contains a trigger for bookmark 2");
            Assert.True(result.Any(x => x.Bookmark == bookmark3), "Result contains a trigger for bookmark 3");
            Assert.True(result.Any(x => x.Bookmark == bookmark4), "Result contains a trigger for bookmark 4");
            Assert.True(result.Count() == 4, "Result has 4 items");
        }