예제 #1
0
        public async Task UpdateChannelsSavesEpisodes()
        {
            // channel
            var channel = new Channel("dummyLink");

            var newEpisode = new Episode
            {
                Title = "new episode"
            };
            var channels = new List <Channel>
            {
                channel
            };

            ChannelStore.GetAllAsync().Returns(channels);
            ChannelStore.GetChannelInfos().Returns(channels.Select(_ => new ChannelInfo
            {
                Id           = _.Id,
                FeedUrl      = _.Link,
                ImageUrl     = _.ImageUrl,
                EpisodeInfos = _.Episodes.Select(x => new EpisodeInfo
                {
                    Id   = x.Guid,
                    Date = x.Date
                })
            }));

            await PodcastViewModel.InitChannels();

            PodcastViewModel.FeedParser.LoadFeed(Arg.Any <string>()).Returns(new ItunesFeed());
            PodcastViewModel.FeedParser.ParseItems(Arg.Any <IEnumerable <ItunesItem> >(), Arg.Any <ChannelInfo>())
            .Returns(new[]
            {
                newEpisode
            });

            PodcastViewModel.UpdateCancelToken = new CancellationTokenSource();
            await PodcastViewModel.UpdateChannelsCommand.Execute();

            // assert
            await ChannelStore.Received(1).SaveEpisodes(Arg.Is <IEnumerable <Episode> >(_ => _.Contains(newEpisode)));

            //Repository.All<Episode>().Should().Contain(newEpisode);

            //await DbContext.Received(1).SaveChangesAsync();
        }