public void DisplayNameFor_Returns_Display_Name_Based_On_Metadata()
        {
            //Arrange
            ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(Customer));

            ViewDataDictionary viewData = new ViewDataDictionary();

            viewData.ModelMetadata = metadata;
            SViewContext viewContext = new SViewContext();

            viewContext.ViewData = viewData;

            //Create a viewDataContainerMock
            SIViewDataContainer viewDataContainer = new SIViewDataContainer();

            viewDataContainer.ViewDataGet = () => viewData;

            HtmlHelper <Customer> helper = new HtmlHelper <Customer>(viewContext, viewDataContainer);

            //Act
            MvcHtmlString result = helper.DisplayNameFor(x => x.CustomerId);

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("CustomerId", result.ToHtmlString());
        }
        public void Serialized_Hidden_Returns_A_Hidden_Field_With_The_Entity_Serialized()
        {
            //Arrang
            Customer customer = new Customer();


            string serializedCustomer = new SelfTrackingEntityBase64Converter <Customer>().ToBase64(customer);

            ViewDataDictionary viewData = new ViewDataDictionary();

            SViewContext viewContext = new SViewContext();

            viewContext.ViewData = viewData;

            SIViewDataContainer viewDataContainer = new SIViewDataContainer();

            viewDataContainer.ViewDataGet = () => viewData;


            HtmlHelper <Customer> helper = new HtmlHelper <Customer>(viewContext, viewDataContainer);

            //Act
            MvcHtmlString result = helper.SerializedHidden(customer);

            //Assert
            //Parse the result (it creates XML-Compliant HTML)
            XElement element = XElement.Parse(result.ToHtmlString());

            //Ensure it's an input tag.
            Assert.AreEqual("input", element.Name.LocalName);

            //Ensure it's a hidden field.
            Assert.AreEqual("hidden", element.Attribute("type").Value);

            //Ensure it has the correct name
            Assert.AreEqual("CustomerSTE", element.Attribute("name").Value);

            //Ensure it has the correct id
            Assert.AreEqual("CustomerSTE", element.Attribute("id").Value);

            //Ensure the serialized customer is serialized correctly.
            Assert.AreEqual(serializedCustomer, element.Attribute("value").Value);
        }
        public void Serialized_Hidden_Returns_A_Hidden_Field_With_The_Entity_Serialized()
        {
            //Arrang
            Customer customer = new Customer();

            
            string serializedCustomer = new SelfTrackingEntityBase64Converter<Customer>().ToBase64(customer);
            
            ViewDataDictionary viewData = new ViewDataDictionary();
            
            SViewContext viewContext = new SViewContext();
            viewContext.ViewData = viewData;
            
            SIViewDataContainer viewDataContainer = new SIViewDataContainer();
            viewDataContainer.ViewDataGet = () => viewData;
            

            HtmlHelper<Customer> helper = new HtmlHelper<Customer>(viewContext, viewDataContainer);
            
            //Act
            MvcHtmlString result = helper.SerializedHidden(customer);
            
            //Assert
            //Parse the result (it creates XML-Compliant HTML)
            XElement element = XElement.Parse(result.ToHtmlString());

            //Ensure it's an input tag.
            Assert.AreEqual("input", element.Name.LocalName);

            //Ensure it's a hidden field.
            Assert.AreEqual("hidden",element.Attribute("type").Value);

            //Ensure it has the correct name
            Assert.AreEqual("CustomerSTE",element.Attribute("name").Value);

            //Ensure it has the correct id
            Assert.AreEqual("CustomerSTE",element.Attribute("id").Value);

            //Ensure the serialized customer is serialized correctly.
            Assert.AreEqual(serializedCustomer, element.Attribute("value").Value);
        }
        public void Serialized_Hidden_Returns_An_Empty_String_When_Entity_Is_Null()
        {
            //Arrange
            ViewDataDictionary viewData = new ViewDataDictionary();


            SViewContext viewContext = new SViewContext();

            viewContext.ViewData = viewData;


            SIViewDataContainer viewDataContainer = new SIViewDataContainer();

            viewDataContainer.ViewDataGet = () => viewData;


            HtmlHelper <Customer> helper = new HtmlHelper <Customer>(viewContext, viewDataContainer);

            //Act
            MvcHtmlString result = helper.SerializedHidden(null);

            //Assert
            Assert.AreEqual(MvcHtmlString.Empty.ToHtmlString(), result.ToHtmlString());
        }
        public void DisplayNameFor_Returns_Display_Name_Based_On_Metadata()
        {
            //Arrange
            ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(Customer));
            
            ViewDataDictionary viewData = new ViewDataDictionary();
            viewData.ModelMetadata = metadata;
            SViewContext viewContext = new SViewContext();
            viewContext.ViewData = viewData;
            
            //Create a viewDataContainerMock
            SIViewDataContainer viewDataContainer = new SIViewDataContainer();
            
            viewDataContainer.ViewDataGet = () => viewData;
            
            HtmlHelper<Customer> helper = new HtmlHelper<Customer>(viewContext,viewDataContainer);

            //Act
            MvcHtmlString result = helper.DisplayNameFor(x => x.CustomerId);

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("CustomerId", result.ToHtmlString());
        }
        public void Serialized_Hidden_Returns_An_Empty_String_When_Entity_Is_Null()
        {
            //Arrange
            ViewDataDictionary viewData = new ViewDataDictionary();

            
            SViewContext viewContext = new SViewContext();
            viewContext.ViewData = viewData;

            
            SIViewDataContainer viewDataContainer = new SIViewDataContainer();
            viewDataContainer.ViewDataGet = () => viewData;

            
            HtmlHelper<Customer> helper = new HtmlHelper<Customer>(viewContext, viewDataContainer);
            
            //Act
            MvcHtmlString result = helper.SerializedHidden(null);
            
            //Assert
            Assert.AreEqual(MvcHtmlString.Empty.ToHtmlString(), result.ToHtmlString());
        }