Inheritance: ThreadSafeBehavior
 public void element_for_member_with_no_error_renders_with_no_class()
 {
     var target = new ValidationBehavior(() => stateDictionary);
     expression = x => x.Price;
     var textbox = new TextBox(expression.GetNameFor(), null, new List<IBehaviorMarker> { target });
     var element = textbox.ToString().ShouldHaveHtmlNode("Price");
     element.ShouldNotHaveAttribute(HtmlAttribute.Class);
 }
 public void element_for_member_with_error_renders_with_default_error_class()
 {
     stateDictionary.AddModelError("Price", "Something bad happened");
     var target = new ValidationBehavior(() => stateDictionary);
     expression = x => x.Price;
     var textbox = new TextBox(expression.GetNameFor(), null, new List<IBehaviorMarker> { target });
     var element = textbox.ToString().ShouldHaveHtmlNode("Price");
     element.ShouldHaveAttribute(HtmlAttribute.Class).WithValue("input-validation-error");
 }
        public void element_without_error_renders_with_attempted_value()
        {
            stateDictionary.Add("Price", new ModelState() { Value = new ValueProviderResult("foo", "foo", CultureInfo.CurrentCulture) });

            var target = new ValidationBehavior(() => stateDictionary);
            expression = x => x.Price;
            var textbox = new TextBox(expression.GetNameFor(), expression.GetMemberExpression(), new List<IBehaviorMarker> { target });
            var element = textbox.ToString().ShouldHaveHtmlNode("Price");
            element.ShouldHaveAttribute(HtmlAttribute.Value).WithValue("foo");
        }
        public void does_not_restore_value_for_password_field()
        {
            stateDictionary.Add("Password", new ModelState() { Value = new ValueProviderResult("foo", "foo", CultureInfo.CurrentCulture) });

            var target = new ValidationBehavior(() => stateDictionary);
            expression = x => x.Password;
            var passwordField = new Password(expression.GetNameFor(), expression.GetMemberExpression(), new List<IBehaviorMarker> { target });
            var element = passwordField.ToString().ShouldHaveHtmlNode("Password");
            element.ShouldHaveAttribute(HtmlAttribute.Value).WithValue("");
        }
 public void handles_checkboxes_correctly()
 {
     stateDictionary.AddModelError("Done", "Foo");
     stateDictionary["Done"].Value = new ValueProviderResult(new[] { "true", "false" }, "true", CultureInfo.CurrentCulture);
     var target = new ValidationBehavior(() => stateDictionary);
     expression = x => x.Done;
     var checkbox = new CheckBox(expression.GetNameFor(), expression.GetMemberExpression(), new List<IBehaviorMarker> { target });
     var element = checkbox.ToString().ShouldHaveHtmlNode("Done");
     element.ShouldHaveAttribute("checked").WithValue("checked");
     element.ShouldHaveAttribute("value").WithValue("true");
 }
 public void element_for_member_with_error_renders_with_specified_error_class_and_specified_other_class()
 {
     stateDictionary.AddModelError("Price", "Something bad happened");
     var target = new ValidationBehavior(() => stateDictionary, "my-error-class");
     expression = x => x.Price;
     var textbox = new TextBox(expression.GetNameFor(), null, new List<IBehaviorMarker> { target })
         .Class("another-class");
     var element = textbox.ToString().ShouldHaveHtmlNode("Price");
     element.ShouldHaveAttribute(HtmlAttribute.Class).Value
         .ShouldContain("another-class")
         .ShouldContain("my-error-class");
 }
        public void does_not_add_css_class_when_retrieving_value_from_modelstate_with_no_error()
        {
            stateDictionary.Add("Price", new ModelState() { Value = new ValueProviderResult("foo", "foo", CultureInfo.CurrentCulture) });

            var target = new ValidationBehavior(() => stateDictionary);
            expression = x => x.Price;
            var textbox = new TextBox(expression.GetNameFor(), null, new List<IBehaviorMarker> { target });
            var element = textbox.ToString().ShouldHaveHtmlNode("Price");

            element.ShouldHaveAttribute(HtmlAttribute.Value).WithValue("foo");
            element.ShouldNotHaveAttribute(HtmlAttribute.Class);
        }
        public void restore_checked_from_radio_set()
        {
            stateDictionary.Add("Selection", new ModelState { Value = new ValueProviderResult((int)FakeEnum.Two, "2", CultureInfo.CurrentCulture) });
            var target = new ValidationBehavior(() => stateDictionary);
            expression = x => x.Selection;

            var html = new RadioSet(expression.GetNameFor(), expression.GetMemberExpression(), new List<IBehaviorMarker> { target }).Options<FakeEnum>().ToString();
            var element = html.ShouldHaveHtmlNode("Selection");
            var options = element.ShouldHaveChildNodesCount(8);

            RadioSetTests.VerifyOption("Selection", (int)FakeEnum.Zero, FakeEnum.Zero, options[0], options[1],false);
            RadioSetTests.VerifyOption("Selection", (int)FakeEnum.One, FakeEnum.One, options[2], options[3],false);
            RadioSetTests.VerifyOption("Selection", (int)FakeEnum.Two, FakeEnum.Two, options[4], options[5],true);
            RadioSetTests.VerifyOption("Selection", (int)FakeEnum.Three, FakeEnum.Three, options[6], options[7],false);
        }