Esempio n. 1
0
        public async Task ThrowsAsync(Func <Task> func, MessageItemCollection messages)
        {
            if (func == null)
            {
                throw new ArgumentNullException(nameof(func));
            }

            if (messages == null)
            {
                throw new ArgumentNullException(nameof(messages));
            }

            try
            {
                await func().ConfigureAwait(false);

                Assert.Fail("A ValidationException is expected.");
            }
            catch (AggregateException aex)
            {
                if (aex.InnerException is ValidationException vex)
                {
                    CompareExpectedVsActual(messages, vex.Messages);
                }
                else
                {
                    throw;
                }
            }
            catch (ValidationException vex)
            {
                CompareExpectedVsActual(messages, vex);
            }
        }
Esempio n. 2
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>
        static public void CompareExpectedVsActual(MessageItemCollection expectedMessages, MessageItemCollection actualMessages)
        {
            var exp = (from e in expectedMessages ?? new MessageItemCollection()
                       where !actualMessages.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.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.ToString()}");
            }
        }
Esempio n. 3
0
        public static void Throws(Func <Task> func, MessageItemCollection messages)
        {
            if (func == null)
            {
                throw new ArgumentNullException(nameof(func));
            }

            if (messages == null)
            {
                throw new ArgumentNullException(nameof(messages));
            }

            try
            {
                func().Wait();
                Assert.Fail("A ValidationException is expected.");
            }
            catch (AggregateException aex)
            {
                if (aex.InnerException is ValidationException vex)
                {
                    CompareExpectedVsActual(messages, vex.Messages);
                }
                else
                {
                    throw;
                }
            }
            catch (ValidationException vex)
            {
                CompareExpectedVsActual(messages, vex);
            }
        }
        /// <summary>
        /// Runs the <paramref name="func"/> asynchonously expecting it to fail with a <see cref="ValidationException"/> containing the passed <paramref name="messages"/>.
        /// </summary>
        /// <param name="func">The function to execute.</param>
        /// <param name="messages">The <see cref="MessageItemCollection"/> collection.</param>
        /// <returns>The corresponding <see cref="Task"/>.</returns>
        /// <remarks>Will only check the <see cref="MessageItem.Property"/> where specified (not <c>null</c>).</remarks>
        public static void Run(Func <Task> func, MessageItemCollection messages)
        {
            Check.NotNull(func, nameof(func));
            Check.NotNull(messages, nameof(messages));

            try
            {
                func().Wait();
                Assert.Fail("A ValidationException is expected.");
            }
            catch (AggregateException aex)
            {
                if (aex.InnerException is ValidationException vex)
                {
                    CompareExpectedVsActual(messages, vex.Messages);
                }
                else
                {
                    throw;
                }
            }
            catch (ValidationException vex)
            {
                CompareExpectedVsActual(messages, vex);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Compares the expected vs. actual messages and reports the differences.
        /// </summary>
        /// <param name="expectedMessages">The expected messages.</param>
        /// <param name="vex">The validation exception.</param>
        static public void CompareExpectedVsActual(MessageItemCollection expectedMessages, ValidationException vex)
        {
            if (vex == null)
            {
                throw new ArgumentNullException(nameof(vex));
            }

            CompareExpectedVsActual(expectedMessages, vex.Messages);
        }
Esempio n. 6
0
        /// <summary>
        /// Expect a response with the specified messages.
        /// </summary>
        /// <param name="messages">The <see cref="MessageItemCollection"/> collection.</param>
        /// <returns>The <see cref="AgentTester"/> instance to support fluent/chaining usage.</returns>
        /// <remarks>Will only check the <see cref="MessageItem.Property"/> where specified (not <c>null</c>).</remarks>
        protected void SetExpectMessages(MessageItemCollection messages)
        {
            Check.NotNull(messages, nameof(messages));
            if (_expectedMessages == null)
            {
                _expectedMessages = new MessageItemCollection();
            }

            _expectedMessages.AddRange(messages);
        }
        /// <summary>
        /// Runs the <paramref name="func"/> asynchonously expecting it to fail with a <see cref="ValidationException"/> containing the passed <paramref name="messages"/>.
        /// </summary>
        /// <param name="func">The function to execute.</param>
        /// <param name="messages">The expected <see cref="MessageType.Error">error</see> message texts.</param>
        /// <returns>The corresponding <see cref="Task"/>.</returns>
        public static Task RunAsync(Func <Task> func, params string[] messages)
        {
            var mic = new MessageItemCollection();

            foreach (var text in messages)
            {
                mic.AddError(text);
            }

            return(RunAsync(func, mic));
        }
Esempio n. 8
0
        /// <summary>
        /// Creates a deep copy of the <see cref="MessageItemCollection"/>.
        /// </summary>
        /// <returns>A deep copy of the <see cref="MessageItemCollection"/>.</returns>
        public override object Clone()
        {
            MessageItemCollection clone = new MessageItemCollection();

            foreach (MessageItem item in this)
            {
                clone.Add((MessageItem)item.Clone());
            }

            return(clone);
        }
Esempio n. 9
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);
        }
Esempio n. 10
0
        /// <summary>
        /// Expect a response with the specified <see cref="MessageType.Error"/> messages.
        /// </summary>
        /// <param name="messages">An array of expected <see cref="MessageType.Error"/> message texts.</param>
        /// <returns>The <see cref="AgentTester"/> instance to support fluent/chaining usage.</returns>
        protected void SetExpectMessages(params string[] messages)
        {
            var mic = new MessageItemCollection();

            foreach (var text in messages)
            {
                mic.AddError(text);
            }

            SetExpectMessages(mic);
        }
Esempio n. 11
0
        public static void Throws(Func <Task> func, params string[] messages)
        {
            var mic = new MessageItemCollection();

            foreach (var text in messages)
            {
                mic.AddError(text);
            }

            Throws(func, mic);
        }
Esempio n. 12
0
        public static void Throws(Action action, params string[] messages)
        {
            var mic = new MessageItemCollection();

            foreach (var text in messages)
            {
                mic.AddError(text);
            }

            Throws(action, mic);
        }
Esempio n. 13
0
        /// <summary>
        /// Sets the <see cref="HttpResponse.Headers"/> for the <see cref="MessageItemCollection"/>.
        /// </summary>
        /// <param name="response">The <see cref="HttpResponse"/>.</param>
        /// <param name="messages">The <see cref="MessageItemCollection"/>.</param>
        public static void SetMessages(HttpResponse response, MessageItemCollection messages)
        {
            if (response == null)
            {
                throw new ArgumentNullException(nameof(response));
            }

            if (messages != null && messages.Count > 0)
            {
                response.Headers[WebApiConsts.MessagesHeaderName] = JsonConvert.SerializeObject(messages);
            }
        }
Esempio n. 14
0
        /// <summary>
        /// Expect the specified <see cref="MessageType.Error"/> messages.
        /// </summary>
        /// <param name="messages">An array of expected <see cref="MessageType.Error"/> message texts.</param>
        /// <returns>The <see cref="ValidationTester"/> instance to support fluent/chaining usage.</returns>
        public ValidationTester ExpectMessages(params string[] messages)
        {
            var mic = new MessageItemCollection();

            foreach (var text in messages)
            {
                mic.AddError(text);
            }

            ExpectMessages(mic);
            return(this);
        }
Esempio n. 15
0
        /// <summary>
        /// Gets a new <see cref="MessageItemCollection"/> for a selected <see cref="MessageItem.Property"/>.
        /// </summary>
        /// <param name="property">The name of the property that the message relates to.</param>
        /// <returns>A new <see cref="MessageItemCollection"/>.</returns>
        public MessageItemCollection GetMessagesForProperty(string property)
        {
            MessageItemCollection msgs = new MessageItemCollection();

            foreach (MessageItem item in this)
            {
                if (item.Property == property)
                {
                    msgs.Add(item);
                }
            }

            return(msgs);
        }
Esempio n. 16
0
        /// <summary>
        /// Gets a new <see cref="MessageItemCollection"/> for a selected <see cref="MessageType"/>.
        /// </summary>
        /// <param name="type">Message validatorType.</param>
        /// <returns>A new <see cref="MessageItemCollection"/>.</returns>
        public MessageItemCollection GetMessagesForType(MessageType type)
        {
            MessageItemCollection msgs = new MessageItemCollection();

            foreach (MessageItem item in this)
            {
                if (item.Type == type)
                {
                    msgs.Add(item);
                }
            }

            return(msgs);
        }
Esempio n. 17
0
        public static void Throws(Action action, MessageItemCollection messages)
        {
            Check.NotNull(action, nameof(action));
            Check.NotNull(messages, nameof(messages));

            try
            {
                action?.Invoke();
                Assert.Fail("A ValidationException is expected.");
            }
            catch (ValidationException vex)
            {
                CompareExpectedVsActual(messages, vex);
            }
        }
Esempio n. 18
0
File: Basic.cs Progetto: radtek/EMIP
        public virtual void SaveServerNotifyMessageCat(HttpContext context)
        {
            YZRequest  request    = new YZRequest(context);
            MessageCat messageCat = request.GetEnum <MessageCat>("messageCat");

            JArray post = request.GetPostData <JArray>();
            MessageItemCollection messageItems = post.ToObject <MessageItemCollection>();

            using (BPMConnection cn = new BPMConnection())
            {
                cn.WebOpen();

                MessageGroupCollection messageGroups = NotifyManager.GetDefaultNotifyMessages(cn);
                messageGroups[messageCat.ToString()].MessageItems = messageItems;
                NotifyManager.SaveDefaultNotifyMessages(cn, messageGroups);
            }
        }
Esempio n. 19
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);
            }
        }
Esempio n. 20
0
        public static Task ThrowsAsync(Func <Task> func, params string[] messages)
        {
            if (func == null)
            {
                throw new ArgumentNullException(nameof(func));
            }

            if (messages == null)
            {
                throw new ArgumentNullException(nameof(messages));
            }

            var mic = new MessageItemCollection();

            foreach (var text in messages)
            {
                mic.AddError(text);
            }

            return(ThrowsAsync(func, mic));
        }
Esempio n. 21
0
 public static Task ThrowsAsync(Func <Task> func, MessageItemCollection messages) => _test.ThrowsAsync(func, messages);
Esempio n. 22
0
 public static void Throws(Action action, MessageItemCollection messages) => _test.Throws(action, messages);
Esempio n. 23
0
 /// <summary>
 /// Compares the expected vs. actual messages and reports the differences.
 /// </summary>
 /// <param name="expectedMessages">The expected messages.</param>
 /// <param name="vex">The validation exception.</param>
 static internal void CompareExpectedVsActual(MessageItemCollection expectedMessages, ValidationException vex)
 {
     Check.NotNull(vex, nameof(vex));
     CompareExpectedVsActual(expectedMessages, vex.Messages);
 }
Esempio n. 24
0
 public static void Throws(Func <Task> func, MessageItemCollection messages) => _test.Throws(func, messages);
Esempio n. 25
0
 /// <summary>
 /// Expect a response with the specified messages.
 /// </summary>
 /// <param name="messages">The <see cref="MessageItemCollection"/> collection.</param>
 /// <returns>The <see cref="GrpcAgentTest{TStartup, TAgent, TValue}"/> instance to support fluent/chaining usage.</returns>
 /// <remarks>Will only check the <see cref="MessageItem.Property"/> where specified (not <c>null</c>).</remarks>
 public GrpcAgentTest <TStartup, TAgent, TValue> ExpectMessages(MessageItemCollection messages)
 {
     SetExpectMessages(messages);
     return(this);
 }
Esempio n. 26
0
 public static void CompareExpectedVsActual(MessageItemCollection expectedMessages, ValidationException vex) => _test.CompareExpectedVsActual(expectedMessages, vex);
Esempio n. 27
0
 /// <summary>
 /// Creates a <see cref="SubscriberStatus.InvalidData"/> <see cref="Result"/> from a set of <paramref name="messages"/>.
 /// </summary>
 /// <param name="messages">The <see cref="MessageItemCollection"/>.</param>
 /// <param name="resultHandlingOverride">The <see cref="ResultHandling"/> where overridding the default behaviour.</param>
 /// <returns>The <see cref="SubscriberStatus.InvalidData"/> <see cref="Result"/>.</returns>
 public static Result InvalidData(MessageItemCollection messages, ResultHandling?resultHandlingOverride = null)
 => new Result
 {
     Status = SubscriberStatus.InvalidData, Reason = Check.NotNull(messages, nameof(messages)).ToString(), ResultHandling = resultHandlingOverride
 };