public void Can_Clear_Start_Invariant()
        {
            DateTime now      = DateTime.Now;
            var      schedule = new ContentScheduleCollection();

            schedule.Add(now, now.AddDays(1));

            schedule.Clear(ContentScheduleAction.Release);

            Assert.AreEqual(0, schedule.GetSchedule(ContentScheduleAction.Release).Count());
            Assert.AreEqual(1, schedule.GetSchedule(ContentScheduleAction.Expire).Count());
            Assert.AreEqual(1, schedule.FullSchedule.Count());
        }
        public void Can_Remove_Variant()
        {
            DateTime now      = DateTime.Now;
            var      schedule = new ContentScheduleCollection();

            schedule.Add(now, null);
            schedule.Add("en-US", now, null);
            IEnumerable <ContentSchedule> invariantSched = schedule.GetSchedule(string.Empty);

            schedule.Remove(invariantSched.First());
            Assert.AreEqual(0, schedule.GetSchedule(string.Empty).Count());
            Assert.AreEqual(1, schedule.FullSchedule.Count());
            IEnumerable <ContentSchedule> variantSched = schedule.GetSchedule("en-US");

            schedule.Remove(variantSched.First());
            Assert.AreEqual(0, schedule.GetSchedule("en-US").Count());
            Assert.AreEqual(0, schedule.FullSchedule.Count());
        }
예제 #3
0
        private ContentSchedule FindSchedule(ContentScheduleCollection currentSchedules, ContentSchedule newSchedule)
        {
            var schedule = currentSchedules.GetSchedule(newSchedule.Culture, newSchedule.Action);

            if (schedule != null && schedule.Any())
            {
                return(schedule.FirstOrDefault());
            }

            return(null);
        }
        public void Can_Remove_Invariant()
        {
            var now      = DateTime.Now;
            var schedule = new ContentScheduleCollection();

            schedule.Add(now, null);
            var invariantSched = schedule.GetSchedule(string.Empty);

            schedule.Remove(invariantSched.First());
            Assert.AreEqual(0, schedule.FullSchedule.Count());
        }
예제 #5
0
        /// <summary>
        /// Gets the current status of the Content
        /// </summary>
        public static ContentStatus GetStatus(this IContent content, ContentScheduleCollection contentSchedule, string culture = null)
        {
            if (content.Trashed)
            {
                return(ContentStatus.Trashed);
            }

            if (!content.ContentType.VariesByCulture())
            {
                culture = string.Empty;
            }
            else if (culture.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException($"{nameof(culture)} cannot be null or empty");
            }

            var expires = contentSchedule.GetSchedule(culture, ContentScheduleAction.Expire);

            if (expires != null && expires.Any(x => x.Date > DateTime.MinValue && DateTime.Now > x.Date))
            {
                return(ContentStatus.Expired);
            }

            var release = contentSchedule.GetSchedule(culture, ContentScheduleAction.Release);

            if (release != null && release.Any(x => x.Date > DateTime.MinValue && x.Date > DateTime.Now))
            {
                return(ContentStatus.AwaitingRelease);
            }

            if (content.Published)
            {
                return(ContentStatus.Published);
            }

            return(ContentStatus.Unpublished);
        }
        public void Can_Clear_End_Variant()
        {
            var now      = DateTime.Now;
            var schedule = new ContentScheduleCollection();

            schedule.Add(now, now.AddDays(1));
            schedule.Add("en-US", now, now.AddDays(1));

            schedule.Clear(ContentScheduleAction.Expire);

            Assert.AreEqual(0, schedule.GetSchedule(ContentScheduleAction.Expire).Count());
            Assert.AreEqual(1, schedule.GetSchedule(ContentScheduleAction.Release).Count());
            Assert.AreEqual(1, schedule.GetSchedule("en-US", ContentScheduleAction.Expire).Count());
            Assert.AreEqual(1, schedule.GetSchedule("en-US", ContentScheduleAction.Release).Count());
            Assert.AreEqual(3, schedule.FullSchedule.Count());

            schedule.Clear("en-US", ContentScheduleAction.Expire);

            Assert.AreEqual(0, schedule.GetSchedule(ContentScheduleAction.Expire).Count());
            Assert.AreEqual(1, schedule.GetSchedule(ContentScheduleAction.Release).Count());
            Assert.AreEqual(0, schedule.GetSchedule("en-US", ContentScheduleAction.Expire).Count());
            Assert.AreEqual(1, schedule.GetSchedule("en-US", ContentScheduleAction.Release).Count());
            Assert.AreEqual(2, schedule.FullSchedule.Count());
        }