Exemplo n.º 1
0
        public async Task HappyPathSendEpisodeWithExistingSeriesToSonarr()
        {
            var seriesResult = new SonarrAddSeries {
                monitored = true, title = "TitleReturned"
            };
            var selectedSeries = F.Build <Series>().With(x => x.tvdbId, 1).CreateMany();

            SonarrMock.Setup(x => x.GetSeries(It.IsAny <string>(), It.IsAny <Uri>())).Returns(selectedSeries.ToList());
            SonarrMock.Setup(x => x.AddSeries(
                                 It.IsAny <int>(),
                                 It.IsAny <string>(),
                                 It.IsAny <int>(),
                                 It.IsAny <bool>(),
                                 It.IsAny <string>(),
                                 It.IsAny <int>(),
                                 It.IsAny <int[]>(),
                                 It.IsAny <string>(),
                                 It.IsAny <Uri>(),
                                 It.IsAny <bool>(), It.IsAny <bool>())).Returns(seriesResult);
            var sonarrEpisodes = new SonarrEpisodes()
            {
                title         = "abc",
                seasonNumber  = 2,
                episodeNumber = 1,
                monitored     = false
            };
            var episodesList = F.CreateMany <SonarrEpisodes>().ToList();

            episodesList.Add(sonarrEpisodes);

            SonarrMock.Setup(x => x.GetEpisodes(It.IsAny <string>(), It.IsAny <string>(),
                                                It.IsAny <Uri>())).Returns(F.CreateMany <SonarrEpisodes>());

            Sender = new TvSender(SonarrMock.Object, SickrageMock.Object, Cache.Object);
            var episodes = new List <EpisodesModel>
            {
                new EpisodesModel
                {
                    EpisodeNumber = 1,
                    SeasonNumber  = 2
                }
            };
            var model = F.Build <RequestedModel>().With(x => x.ProviderId, 1)
                        .With(x => x.Episodes, episodes).Create();

            var result = await Sender.SendToSonarr(GetSonarrSettings(), model, "2");

            Assert.That(result, Is.EqualTo(seriesResult));
            SonarrMock.Verify(x => x.AddSeries(It.IsAny <int>(),
                                               It.IsAny <string>(),
                                               It.IsAny <int>(),
                                               It.IsAny <bool>(),
                                               It.IsAny <string>(),
                                               It.IsAny <int>(),
                                               It.IsAny <int[]>(),
                                               It.IsAny <string>(),
                                               It.IsAny <Uri>(),
                                               true, It.IsAny <bool>()), Times.Once);
        }
Exemplo n.º 2
0
        public SonarrEpisodes UpdateEpisode(SonarrEpisodes episodeInfo, string apiKey, Uri baseUrl)
        {
            var request = new RestRequest {
                Resource = "/api/Episode", Method = Method.PUT
            };

            request.AddHeader("X-Api-Key", apiKey);
            request.AddJsonBody(episodeInfo);
            try
            {
                var policy = RetryHandler.RetryAndWaitPolicy((exception, timespan) =>
                                                             Log.Error(exception, "Exception when calling UpdateEpisode for Sonarr, Retrying {0}", timespan));

                return(policy.Execute(() => Api.ExecuteJson <SonarrEpisodes>(request, baseUrl)));
            }
            catch (Exception e)
            {
                Log.Error(e, "There has been an API exception when put the Sonarr UpdateEpisode");
                return(null);
            }
        }