public void UpdateChannel(RssChannelForUpdateDTO rssChannel) { var syndicationEntries = this.syndicationFeedAdapter.Load(rssChannel.Url); var syndicationItemAdapters = syndicationEntries.Where(item => item.PublishDate > rssChannel.RssLastUpdatedTime); var rssEntriesList = this.mapper.Map<IEnumerable<SyndicationItemAdapter>, List<NewRssEntryDTO>>(syndicationItemAdapters); rssEntriesList.ForEach(r => r.RssChannelId = rssChannel.Id); this.rssEntriesRepository.SaveToDatabase(rssEntriesList); this.rssChannelsUpdatedRepository.SaveEvent(rssChannel.Id); }
public void T001_GivenRssChannelWithNoNewRss_WhenUpdating_ThenCannotPassItToMapperForProjection() { // arrange var rssChannelForUpdateDto = new RssChannelForUpdateDTO { RssLastUpdatedTime = new DateTime(2000, 1, 2) }; var syndicationItemAdapter = new SyndicationItemAdapter { Id = "1", Url = "dummy", PublishDate = new DateTime(2000, 1, 1) }; var syndicationItemAdapters = new List<SyndicationItemAdapter> { syndicationItemAdapter }; this.mockMapper.Setup( s => s.Map<IEnumerable<SyndicationItemAdapter>, List<NewRssEntryDTO>>( It.IsAny<IEnumerable<SyndicationItemAdapter>>(), It.IsAny<List<NewRssEntryDTO>>())).Returns(new List<NewRssEntryDTO>()); this.mockSyndicationFeedAdapter .Setup(s => s.Load(It.IsAny<string>())) .Returns(syndicationItemAdapters); // act this.sut.UpdateChannel(rssChannelForUpdateDto); // assert this.mockSyndicationFeedAdapter .Verify(v => v.Load(It.IsAny<string>()), Times.Once); this.mockRssEntriesRepository .Verify(v => v.SaveToDatabase(It.IsAny<List<NewRssEntryDTO>>()), Times.Once); this.mockChannelsUpdateRepository .Verify(v => v.SaveEvent(It.IsAny<long>()), Times.Once); this.mockMapper.Verify(v => v.Map<IEnumerable<SyndicationItemAdapter>, List<NewRssEntryDTO>>( It.Is<IEnumerable<SyndicationItemAdapter>>(p => !p.Any())), Times.Once); }
public void T000_GivenRssChannel_WhenUpdating_ThenMustLoadRssEntriesSaveEntriesAndGenerateEvent() { // arrange var rssChannelForUpdateDto = new RssChannelForUpdateDTO(); var syndicationItemAdapters = new List<SyndicationItemAdapter>(); this.mockSyndicationFeedAdapter .Setup(s => s.Load(It.IsAny<string>())) .Returns(syndicationItemAdapters); // act this.sut.UpdateChannel(rssChannelForUpdateDto); // assert this.mockSyndicationFeedAdapter .Verify(v => v.Load(It.IsAny<string>()), Times.Once); this.mockRssEntriesRepository .Verify(v => v.SaveToDatabase(It.IsAny<List<NewRssEntryDTO>>()), Times.Once); this.mockChannelsUpdateRepository .Verify(v => v.SaveEvent(It.IsAny<long>()), Times.Once); }
public void T002_GivenRssChannelWithNewAndOldRss_WhenUpdating_ThenOnlyNewEntriesMustBeStoredToDatabase() { // arrange var rssChannelForUpdateDto = new RssChannelForUpdateDTO { RssLastUpdatedTime = new DateTime(2000, 1, 2) }; var syndicationItemAdapter1 = new SyndicationItemAdapter { Id = "1", Url = "dummy", PublishDate = new DateTime(2000, 1, 1) }; var syndicationItemAdapter2 = new SyndicationItemAdapter { Id = "2", Url = "dummy", PublishDate = new DateTime(2000, 1, 3) }; var syndicationItemAdapters = new List<SyndicationItemAdapter> { syndicationItemAdapter1, syndicationItemAdapter2 }; this.mockSyndicationFeedAdapter .Setup(s => s.Load(It.IsAny<string>())) .Returns(syndicationItemAdapters); this.mockMapper.Setup( s => s.Map<IEnumerable<SyndicationItemAdapter>, List<NewRssEntryDTO>>( It.IsAny<IEnumerable<SyndicationItemAdapter>>(), It.IsAny<List<NewRssEntryDTO>>())).Returns(new List<NewRssEntryDTO>()); // act this.sut.UpdateChannel(rssChannelForUpdateDto); // assert this.mockSyndicationFeedAdapter .Verify(v => v.Load(It.IsAny<string>()), Times.Once); this.mockRssEntriesRepository .Verify(v => v.SaveToDatabase( It.IsAny<List<NewRssEntryDTO>>()), Times.Once); this.mockChannelsUpdateRepository .Verify(v => v.SaveEvent(It.IsAny<long>()), Times.Once); this.mockMapper.Verify(v => v.Map<IEnumerable<SyndicationItemAdapter>, List<NewRssEntryDTO>>( It.Is<IEnumerable<SyndicationItemAdapter>>(p => p.Count() == 1 && p.Count(i => i.Id == "2") == 1)), Times.Once); }