public async Task AnnouncementComponent_Returns_LatestAlbum()
        {
            // Arrange
            var today = new DateTime(year: 2002, month: 10, day: 30);

            var dbContext = _serviceProvider.GetRequiredService <MusicStoreContext>();
            var cache     = _serviceProvider.GetRequiredService <IMemoryCache>();
            var clock     = new TestSystemClock()
            {
                UtcNow = today
            };

            var announcementComponent = new AnnouncementComponent(dbContext, cache, clock);

            PopulateData(dbContext, latestAlbumDate: today);

            // Action
            var result = await announcementComponent.InvokeAsync();

            // Assert
            Assert.NotNull(result);
            var viewResult = Assert.IsType <ViewViewComponentResult>(result);

            Assert.Null(viewResult.ViewName);
            var albumResult = Assert.IsType <Album>(viewResult.ViewData.Model);

            Assert.Equal(today, albumResult.Created.Date);
        }
        public async Task AnnouncementComponent_Returns_LatestAlbum()
        {
            // Arrange
            var today = new DateTime(year: 2002, month: 10, day: 30);

            var dbContext = _serviceProvider.GetRequiredService<MusicStoreContext>();
            var cache = _serviceProvider.GetRequiredService<IMemoryCache>();
            var clock = new TestSystemClock() { UtcNow = today };

            var announcementComponent = new AnnouncementComponent(dbContext, cache, clock);

            PopulateData(dbContext, latestAlbumDate: today);

            // Action
            var result = await announcementComponent.InvokeAsync();

            // Assert
            Assert.NotNull(result);
            var viewResult = Assert.IsType<ViewViewComponentResult>(result);
            Assert.Null(viewResult.ViewName);
            var albumResult = Assert.IsType<Album>(viewResult.ViewData.Model);
            Assert.Equal(today, albumResult.Created.Date);
        }