Пример #1
0
        public async IAsyncEnumerable <EnrichedEvent> CreateEnrichedEventsAsync(Envelope <AppEvent> @event, RuleContext context,
                                                                                [EnumeratorCancellation] CancellationToken ct)
        {
            var commentCreated = (CommentCreated)@event.Payload;

            if (commentCreated.Mentions?.Length > 0)
            {
                var users = await userResolver.QueryManyAsync(commentCreated.Mentions, ct);

                if (users.Count > 0)
                {
                    foreach (var user in users.Values)
                    {
                        var enrichedEvent = new EnrichedCommentEvent
                        {
                            MentionedUser = user
                        };

                        enrichedEvent.Name = "UserMentioned";

                        SimpleMapper.Map(commentCreated, enrichedEvent);

                        yield return(enrichedEvent);
                    }
                }
            }
        }
Пример #2
0
        public void Should_format_email_and_display_name_from_mentioned_user(string script)
        {
            var @event = new EnrichedCommentEvent {
                MentionedUser = user
            };

            var result = sut.Format(script, @event);

            Assert.Equal("From me ([email protected], 123)", result);
        }
Пример #3
0
        public void Should_not_trigger_check_if_condition_does_not_match()
        {
            TestForCondition("false", ctx =>
            {
                var @event = new EnrichedCommentEvent();

                var result = sut.Trigger(@event, ctx);

                Assert.False(result);
            });
        }
Пример #4
0
        public void Should_trigger_check_if_condition_matchs()
        {
            TestForCondition("true", ctx =>
            {
                var @event = new EnrichedCommentEvent();

                var result = sut.Trigger(new EnrichedCommentEvent(), ctx);

                Assert.True(result);
            });
        }
Пример #5
0
        public void Should_trigger_check_if_condition_is_empty()
        {
            TestForCondition(string.Empty, ctx =>
            {
                var @event = new EnrichedCommentEvent();

                var result = sut.Trigger(@event, ctx);

                Assert.True(result);
            });
        }
Пример #6
0
        public void Should_not_trigger_check_if_text_is_not_urgent()
        {
            TestForRealCondition("event.text.indexOf('urgent') >= 0", (handler, ctx) =>
            {
                var @event = new EnrichedCommentEvent
                {
                    Text = "just_gossip"
                };

                var result = handler.Trigger(@event, ctx);

                Assert.False(result);
            });
        }
Пример #7
0
        public void Should_not_trigger_check_if_email_is_not_correct()
        {
            TestForRealCondition("event.mentionedUser.email == '*****@*****.**'", (handler, ctx) =>
            {
                var @event = new EnrichedCommentEvent
                {
                    MentionedUser = UserMocks.User("1", "*****@*****.**")
                };

                var result = handler.Trigger(@event, ctx);

                Assert.False(result);
            });
        }