public void WithModelStateErrorReturnsCorrectly()
        {
            string checkedValue = "CheckedValue";
            string uncheckedValue = "UncheckedValue";

            var viewModel = new CheckBoxViewModel();

            var htmlHelper = HtmlHelperGenerator.CreateHtmlHelper<CheckBoxViewModel>( viewModel );
            ( ( HtmlHelper )htmlHelper ).ViewData.ModelState.AddModelError( "CheckBoxValue", "ErrorMessage" );
            var result = htmlHelper.CheckBoxFor( x => x.CheckBoxValue, checkedValue, uncheckedValue );

            string expectedResult = string.Format( "<input class=\"input-validation-error\" id=\"CheckBoxValue\" name=\"CheckBoxValue\" type=\"checkbox\" value=\"{0}\" /><input name=\"CheckBoxValue\" type=\"hidden\" value=\"{1}\" />", checkedValue, uncheckedValue );
            Assert.AreEqual( expectedResult, result.ToHtmlString() );
        }
        public void WithAttributeExpressionReturnsCorrectly()
        {
            string checkedValue = "CheckedValue";
            string uncheckedValue = "UncheckedValue";
            string attributeName = "attributeName";
            string attributeValue = "attributeValue";

            var viewModel = new CheckBoxViewModel();

            var htmlHelper = HtmlHelperGenerator.CreateHtmlHelper<CheckBoxViewModel>( viewModel );
            var result = htmlHelper.CheckBoxFor( x => x.CheckBoxValue, checkedValue, uncheckedValue, x => x.Attribute( attributeName, attributeValue ) );

            string expectedResult = string.Format( "<input {0}=\"{1}\" id=\"CheckBoxValue\" name=\"CheckBoxValue\" type=\"checkbox\" value=\"{2}\" /><input name=\"CheckBoxValue\" type=\"hidden\" value=\"{3}\" />", attributeName, attributeValue, checkedValue, uncheckedValue );
            Assert.AreEqual( expectedResult, result.ToHtmlString() );
        }
        public void WithModelStateValueEqualsCheckedValueAndModelValueEqualsUncheckedValueReturnsCorrectly()
        {
            string checkedValue = "CheckedValue";
            string uncheckedValue = "UncheckedValue";

            var viewModel = new CheckBoxViewModel()
            {
                CheckBoxValue = uncheckedValue
            };

            ModelState modelState = new ModelState();
            modelState.Value = new ValueProviderResult( checkedValue, checkedValue, CultureInfo.InvariantCulture );

            var htmlHelper = HtmlHelperGenerator.CreateHtmlHelper<CheckBoxViewModel>( viewModel );
            ( ( HtmlHelper )htmlHelper ).ViewData.ModelState.Add( "CheckBoxValue", modelState );

            var result = htmlHelper.CheckBoxFor( x => x.CheckBoxValue, checkedValue, uncheckedValue );

            string expectedResult = string.Format( "<input checked=\"checked\" id=\"CheckBoxValue\" name=\"CheckBoxValue\" type=\"checkbox\" value=\"{0}\" /><input name=\"CheckBoxValue\" type=\"hidden\" value=\"{1}\" />", checkedValue, uncheckedValue );
            Assert.AreEqual( expectedResult, result.ToHtmlString() );
        }
        public void WithViewModelPropertyEqualsUncheckedValueReturnsCorrectly()
        {
            string checkedValue = "CheckedValue";
            string uncheckedValue = "UncheckedValue";

            var viewModel = new CheckBoxViewModel()
            {
                CheckBoxValue = uncheckedValue
            };

            var htmlHelper = HtmlHelperGenerator.CreateHtmlHelper<CheckBoxViewModel>( viewModel );
            var result = htmlHelper.CheckBoxFor( x => x.CheckBoxValue, checkedValue, uncheckedValue );

            string expectedResult = string.Format( "<input id=\"CheckBoxValue\" name=\"CheckBoxValue\" type=\"checkbox\" value=\"{0}\" /><input name=\"CheckBoxValue\" type=\"hidden\" value=\"{1}\" />", checkedValue, uncheckedValue );
            Assert.AreEqual( expectedResult, result.ToHtmlString() );
        }
        public void WithNullUncheckedValueThrowsArgumentNullException()
        {
            string checkedValue = "CheckedValue";
            string uncheckedValue = null;

            var viewModel = new CheckBoxViewModel();

            var htmlHelper = HtmlHelperGenerator.CreateHtmlHelper<CheckBoxViewModel>( viewModel );
            htmlHelper.CheckBoxFor( x => x.CheckBoxValue, checkedValue, uncheckedValue );
        }