Пример #1
0
        /// <summary>
        /// Compares the expected versus actual messages and reports the differences.
        /// </summary>
        /// <param name="expectedMessages">The expected messages.</param>
        /// <param name="actualMessages">The actual messages.</param>
        public static void CompareExpectedVsActualMessages(MessageItemCollection?expectedMessages, MessageItemCollection?actualMessages)
        {
            var exp = (from e in expectedMessages ?? new MessageItemCollection()
                       where !(actualMessages ?? new MessageItemCollection()).Any(a => a.Type == e.Type && a.Text == e.Text && (e.Property == null || a.Property == e.Property))
                       select e).ToList();

            var act = (from a in actualMessages ?? new MessageItemCollection()
                       where !(expectedMessages ?? new MessageItemCollection()).Any(e => a.Type == e.Type && a.Text == e.Text && (e.Property == null || a.Property == e.Property))
                       select a).ToList();

            var sb = new StringBuilder();

            if (exp.Count > 0)
            {
                sb.AppendLine(" Expected messages not matched:");
                exp.ForEach(m => sb.AppendLine($"  {m.Type}: {m.Text} {(m.Property != null ? $"[{m.Property}]" : null)}"));
            }

            if (act.Count > 0)
            {
                sb.AppendLine(" Actual messages not matched:");
                act.ForEach(m => sb.AppendLine($"  {m.Type}: {m.Text} {(m.Property != null ? $"[{m.Property}]" : null)}"));
            }

            if (sb.Length > 0)
            {
                Assert.Fail($"Messages mismatch:{System.Environment.NewLine}{sb}");
            }
        }
Пример #2
0
        /// <summary>
        /// Expect the specified messages.
        /// </summary>
        /// <param name="messages">The <see cref="MessageItemCollection"/> collection.</param>
        /// <remarks>Will only check the <see cref="MessageItem.Property"/> where specified (not <c>null</c>).</remarks>
        /// <returns>The <see cref="ValidationTester"/> instance to support fluent/chaining usage.</returns>
        public ValidationTester ExpectMessages(MessageItemCollection messages)
        {
            Check.NotNull(messages, nameof(messages));
            if (_expectedMessages == null)
            {
                _expectedMessages = new MessageItemCollection();
            }

            _expectedMessages.AddRange(messages);
            return(this);
        }
Пример #3
0
        /// <summary>
        /// Adds the messages to response trailers as a binary byte array.
        /// </summary>
        private static void AddMessagesToResponseTrailers(GrpcServiceBase service, MessageItemCollection?messages)
        {
            if (messages == null || messages.Count == 0)
            {
                return;
            }

            using var ms  = new MemoryStream();
            using var bdw = new BsonDataWriter(ms);
            var js = new JsonSerializer();

            js.Serialize(bdw, new GrpcMessages {
                Messages = messages
            });

            service.Context.ResponseTrailers.Add(GrpcConsts.MessagesHeaderName, ms.ToArray());
        }
Пример #4
0
        /// <summary>
        /// Merges a <see cref="MessageItemCollection"/> into this.
        /// </summary>
        /// <param name="messages">The <see cref="MessageItemCollection"/> to merge.</param>
        public void MergeResult(MessageItemCollection?messages)
        {
            if (messages == null || messages.Count == 0)
            {
                return;
            }

            foreach (var mi in messages)
            {
                if (!string.IsNullOrEmpty(mi.Property) && mi.Type == MessageType.Error)
                {
                    if (!HasError(mi.Property))
                    {
                        _propertyErrors.Add(mi.Property, mi);
                    }
                }

                Messages.Add(mi);
            }
        }
Пример #5
0
 public static void CompareExpectedVsActual(MessageItemCollection?expectedMessages, MessageItemCollection?actualMessages) => _test.CompareExpectedVsActual(expectedMessages, actualMessages);