/// <summary> /// Returns archive information. /// </summary> /// <returns></returns> public async Task <Dictionary <int, List <MonthItem> > > GetArchivesAsync() { return(await distributedCache.GetAsync(BlogCache.KEY_ALL_ARCHIVES, BlogCache.Time_Archives, async() => { var months = new Dictionary <DateTime, int>(); var years = new Dictionary <int, List <MonthItem> >(); var dates = await postRepository.GetPostDateTimesAsync(); foreach (var month in dates) { months.TryGetValue(month, out int count); ++count; months[month] = count; } foreach (var month in months) { int year = month.Key.Year; if (!years.Keys.Contains(year)) { years.Add(year, new List <MonthItem>()); } years[year].Add(new MonthItem { Title = month.Key.ToString("MMMM"), Url = BlogRoutes.GetArchiveRelativeLink(year, month.Key.Month), Count = month.Value, }); } return years; }));
public void GetArchiveRelativeLink_returns_link_starts_with_slash_and_2digit_month() { var year = 2018; var month = 9; var relativeLink = BlogRoutes.GetArchiveRelativeLink(year, month); Assert.StartsWith("/", relativeLink); Assert.Equal("/posts/2018/09", relativeLink); }