public void DateTimeField_HasValue_WhenTrue()
        {
            using (var item = new TestItemContext())
            {
                item.SetField(TestFields.DATETIME, DateUtil.IsoNow);

                var field = new DateTimeField(new LazyField(() => item[TestFields.DATETIME], "TEST", TestFields.DATETIME), null);

                Assert.IsTrue(field.HasValue);
            }
        }
        public void BooleanField_GetValue_WhenTrue()
        {
            using (var item = new TestItemContext())
            {
                item.SetField(TestFields.BOOLEAN, "1");

                var field = new BooleanField(new LazyField(() => item[TestFields.BOOLEAN], "TEST", TestFields.BOOLEAN), null);

                Assert.IsTrue(field.Value);
            }
        }
        public void DateTimeField_HasValue_WhenFalse()
        {
            using (var item = new TestItemContext())
            {
                item.SetField(TestFields.DATETIME, string.Empty);

                var field = new DateTimeField(new LazyField(() => item[TestFields.DATETIME], "TEST", TestFields.DATETIME), null);

                Assert.IsFalse(field.HasValue);
            }
        }
        public void DateTimeField_GetValue_ReturnsDateMinWhenEmpty()
        {
            using (var item = new TestItemContext())
            {
                item.SetField(TestFields.DATETIME, string.Empty);

                var field = new DateTimeField(new LazyField(() => item[TestFields.DATETIME], "TEST", TestFields.DATETIME), null);

                Assert.AreEqual(field.Value, DateTime.MinValue);
            }
        }
        public void DateTimeField_GetValue_ReturnsValidValue()
        {
            using (var item = new TestItemContext())
            {
                var dateSet = DateUtil.IsoDateToDateTime(DateUtil.ToIsoDate(DateTime.Now)); // convert now to sitecore format and back to make sure the rounding is correct - sitecore doesn't have quite the same precision (no msec) as DateTime.Now
                item.SetField(TestFields.DATETIME, DateUtil.ToIsoDate(dateSet));

                var field = new DateTimeField(new LazyField(() => item[TestFields.DATETIME], "TEST", TestFields.DATETIME), null);

                Assert.AreEqual(field.Value, dateSet);
            }
        }
        public void BooleanField_SetValue_SavesWhenSetTrue()
        {
            using (var item = new TestItemContext())
            {
                var field = new BooleanField(new LazyField(() => item[TestFields.BOOLEAN], "TEST", TestFields.BOOLEAN), null);

                using (new SecurityDisabler())
                {
                    field.Value = true;
                }

                CheckboxField sitecoreField = item[TestFields.BOOLEAN];

                Assert.IsTrue(sitecoreField.Checked);
            }
        }
        public void DateTimeField_SetValue_SavesDate()
        {
            using (var item = new TestItemContext())
            {
                var field = new DateTimeField(new LazyField(() => item[TestFields.DATETIME], "TEST", TestFields.DATETIME), null);
                var dateSet = DateUtil.IsoDateToDateTime(DateUtil.ToIsoDate(DateTime.Now)); // convert now to sitecore format and back to make sure the rounding is correct - sitecore doesn't have quite the same precision (no msec) as DateTime.Now

                using (new SecurityDisabler())
                {
                    field.Value = dateSet;
                }

                DateField sitecoreField = item[TestFields.DATETIME];

                Assert.AreEqual(dateSet, sitecoreField.DateTime);
            }
        }
        public void DateTimeField_SetValue_SavesMinDate()
        {
            using (var item = new TestItemContext())
            {
                var field = new DateTimeField(new LazyField(() => item[TestFields.DATETIME], "TEST", TestFields.DATETIME), null);

                using (new SecurityDisabler())
                {
                    field.Value = DateTime.MinValue;
                }

                DateField sitecoreField = item[TestFields.DATETIME];

                Assert.AreEqual(DateTime.MinValue, sitecoreField.DateTime);
            }
        }