public static TMsg Message <TMsg>(this IWaitResult res, Predicate <TMsg> selector = null) where TMsg : class
        {
            var sel = selector ?? (m => true);
            var msg = res.All.OfType <TMsg>().FirstOrDefault(t => sel(t));

            return(msg ?? MessageWithMetadata(res, selector)?.Message);
        }
        public static IMessageMetadataEnvelop <TMsg> MessageWithMetadata <TMsg>(this IWaitResult res,
                                                                                Predicate <TMsg> selector = null)
        {
            var sel = selector ?? (m => true);
            var loosyTypedEnvelop = res.All.OfType <IMessageMetadataEnvelop>().First(t => t.Message is TMsg && sel((TMsg)t.Message));

            return(new MessageMetadataEnvelop <TMsg>((TMsg)loosyTypedEnvelop.Message, loosyTypedEnvelop.Metadata));
        }
        public async Task When_expect_more_than_one_messages()
        {
            var cmd = new InflateCopyCommand(100, Guid.NewGuid().ToString());

            _result = await Node.Prepare(cmd)
                      .Expect <BalloonTitleChanged>(e => e.SourceId == cmd.AggregateId)
                      .And <BalloonCreated>(e => e.SourceId == cmd.AggregateId)
                      .Execute();

            await Task.Delay(1000); //waiting for logs

            //Then_recieve_something()
            Assert.NotNull(_result);
            //Then_recieve_non_empty_collection()
            Assert.NotEmpty(_result.All);
            //Then_recieved_collection_of_expected_messages()
            Assert.True(_result.Message <BalloonTitleChanged>() != null &&
                        _result.Message <BalloonCreated>() != null);
            //Then_recieve_only_expected_messages()
            Assert.True(_result.All.Count == 2);
        }
예제 #4
0
 public WaitEndInfo(IWaitResult result, object lastMessage)
 {
     Result      = result;
     LastMessage = lastMessage;
 }