public bool Equals(NotificationMessage other)
        {
            if (ReferenceEquals(null, other)) return false;
            if (ReferenceEquals(this, other)) return true;

            return _template.Equals(other._template) && Accessors.IsEqualTo(other.Accessors);
        }
        public void get_message_with_substitutions()
        {
            var message = new NotificationMessage(NotificationMessageKeys.SUBSTITUTE_NAME_AND_AGE)
                .AddSubstitution("Name", "Max")
                .AddSubstitution("Age", "7");

            message.GetMessage().ShouldBe("Max is 7 years old");
        }
        public void equality_check_negative()
        {
            var token = StringToken.FromKeyString("Test", "1...2...3");
            var v1 = TemplateValue.For("FirstName", "Joel");
            var v2 = TemplateValue.For("LastName", "Arnold");

            var message1 = new NotificationMessage(token, v1, v2);
            var message2 = new NotificationMessage(token, v1);

            message1.ShouldNotBe(message2);
        }
            public void Validate(Accessor accessor, ValidationContext context)
            {
                var username = context.GetFieldValue<string>(accessor);
                var userService = context.Service<IUserService>();

                if (userService.ExistsByUsername(username))
                {
                    var token = new ValidationKeys("Username {0} is already in use.".ToFormat(FIELD.AsTemplateField()));
                    var msg = new NotificationMessage(token);
                    msg.AddSubstitution(FIELD, username);

                    context.Notification.RegisterMessage(accessor, msg);
                }
            }
        public void prepend_property()
        {
            var message = new NotificationMessage(ValidationKeys.Required);
            message.AddAccessor(ReflectionHelper.GetAccessor<ContinuationRuleTester.ContactModel>(x => x.FirstName));
            message.AddAccessor(ReflectionHelper.GetAccessor<ContinuationRuleTester.ContactModel>(x => x.LastName));

            var property = ReflectionHelper.GetAccessor<CompositeModel>(x => x.Contact);

            var prepended = message.Prepend(property);

            prepended.ShouldNotBeTheSameAs(message);
            prepended.Accessors.Select(x => x.Name).ShouldHaveTheSameElementsAs("ContactFirstName", "ContactLastName");
            prepended.StringToken.ShouldBe(ValidationKeys.Required);
        }
 public void get_message_without_subsitutions()
 {
     var message = new NotificationMessage(NotificationMessageKeys.NO_SUBSTITUTION);
     message.GetMessage().ShouldBe(NotificationMessageKeys.NO_SUBSTITUTION.ToString());
 }
 public void create_by_string()
 {
     var message = new NotificationMessage("Some message");
     message.GetMessage().ShouldBe("Some message");
 }
        public NotificationMessage Prepend(Accessor accessor)
        {
            var prependedAccessors = _accessors.Select(x => x.Prepend(accessor)).ToList();
            var message = new NotificationMessage(StringToken, _template.Values.ToArray());
            message._accessors.AddRange(prependedAccessors);

            return message;
        }