public async Task DeleteEpisodeAsyncWorksCorrectly()
        {
            var episodes = new List <Episode>();
            var episode  = new Episode()
            {
                Webtoon = new Webtoon()
                {
                    AuthorId = "test"
                }
            };

            episodes.Add(episode);
            var mockEpisodesRepo = new Mock <IEpisodesRepository>();

            mockEpisodesRepo.Setup(x => x.GetEpisodeByWebtoonTitleNumberAndEpisodeNumber("smt", "smtelse")).Returns(episodes.FirstOrDefault());
            mockEpisodesRepo.Setup(x => x.Delete(It.IsAny <Episode>())).Callback((Episode episode) => episode.IsDeleted = true);
            var mockWebtoonsRepo = new Mock <IWebtoonsRepository>();
            var webtoon          = new Webtoon()
            {
                TitleNumber = "123",
                AuthorId    = "test"
            };

            mockWebtoonsRepo.Setup(x => x.GetWebtoonByTitleNumber("smt")).Returns(webtoon);

            var service = new EpisodesService(mockWebtoonsRepo.Object, mockEpisodesRepo.Object, null, null, null, null, null, null);

            await service.DeleteEpisodeAsync("smt", "smtelse", "test");

            Assert.Single(episodes);
            Assert.True(episode.IsDeleted);
        }
        public async Task DeleteEpisodeAsyncThrowsNullExceptionWhenAuthorIdIsInvalid()
        {
            var episodes = new List <Episode>();
            var episode  = new Episode()
            {
                Webtoon = new Webtoon()
                {
                    AuthorId = "test"
                }
            };

            episodes.Add(episode);
            var mockEpisodesRepo = new Mock <IEpisodesRepository>();

            mockEpisodesRepo.Setup(x => x.GetEpisodeByWebtoonTitleNumberAndEpisodeNumber("smt", "smtelse")).Returns(episodes.FirstOrDefault());
            var mockWebtoonsRepo = new Mock <IWebtoonsRepository>();
            var webtoon          = new Webtoon()
            {
                TitleNumber = "123",
                AuthorId    = "test"
            };

            mockWebtoonsRepo.Setup(x => x.GetWebtoonByTitleNumber("smt")).Returns(webtoon);

            var service = new EpisodesService(mockWebtoonsRepo.Object, mockEpisodesRepo.Object, null, null, null, null, null, null);

            await Assert.ThrowsAsync <ArgumentNullException>(() => service.DeleteEpisodeAsync("smt", "smtelse", "user"));
        }
Пример #3
0
        /// <summary>
        /// Creates a new instance with the provided api configuration
        /// </summary>
        /// <param name="apiConfiguration">The API configuration</param>
        private TVDBManager(TVDBConfiguration apiConfiguration)
        {
            if (apiConfiguration == null)
            {
                throw new ArgumentNullException(nameof(apiConfiguration));
            }

            // Init Services
            Authentication        = new AuthenticationService(apiConfiguration);
            Series                = new SeriesService(apiConfiguration);
            Episodes              = new EpisodesService(apiConfiguration);
            Updates               = new UpdateService(apiConfiguration);
            Actors                = new ActorService(apiConfiguration);
            this.apiConfiguration = apiConfiguration;
        }
        public async Task AddEpisodeAsyncWorksCorrectly()
        {
            var mockWebtoonsRepo = new Mock <IWebtoonsRepository>();
            var webtoon          = new Webtoon()
            {
                Title       = "test",
                Id          = "gosho",
                TitleNumber = "123",
                AuthorId    = "test",
                Episodes    = new List <Episode>()
            };

            mockWebtoonsRepo.Setup(x => x.GetWebtoonByTitleNumber("123")).Returns(webtoon);
            var episodes         = new List <Episode>();
            var mockEpisodesRepo = new Mock <IEpisodesRepository>();

            mockEpisodesRepo.Setup(x => x.GetEpisodesByWebtoonId("gosho")).Returns(episodes);
            mockEpisodesRepo.Setup(x => x.AddAsync(It.IsAny <Episode>())).Callback((Episode episode) => episodes.Add(episode));
            var pages             = new List <Page>();
            var mockPageService   = new Mock <IPagesService>();
            var episodeInputModel = new AddEpisodeInputModel()
            {
                Pages       = new List <IFormFile>(),
                TitleNumber = "123"
            };
            var pathToTestResults = $@"C:\MyWebtoonWebProject\MyWebtoonWebProject\TestResults";

            var service = new EpisodesService(mockWebtoonsRepo.Object, mockEpisodesRepo.Object, null, mockPageService.Object, null, null, null, null);

            await service.AddEpisodeAsync(episodeInputModel, pathToTestResults);

            Assert.Single(episodes);
            Assert.Equal(0, episodes.First().Comments.Count);
            Assert.Equal(0, episodes.First().EpisodeLikes.Count);
            Assert.Equal("1", episodes.First().EpisodeNumber);
            Assert.False(episodes.First().IsDeleted);
            Assert.Equal("Episode1", episodes.First().Name);
            Assert.Equal("gosho", episodes.First().WebtoonId);
        }
        public void GetEpisodeIdWorksCorrectly()
        {
            var episodes = new List <Episode>();
            var episode  = new Episode()
            {
                Id      = "test",
                Webtoon = new Webtoon()
                {
                    TitleNumber = "123"
                },
                EpisodeNumber = "456"
            };

            episodes.Add(episode);
            var mockEpisodesRepo = new Mock <IEpisodesRepository>();

            mockEpisodesRepo.Setup(x => x.All()).Returns(episodes.AsQueryable());

            var service = new EpisodesService(null, mockEpisodesRepo.Object, null, null, null, null, null, null);

            var result = service.GetEpisodeId("123", "456");

            Assert.Equal("test", result);
        }
        public void LatestEpisodesWorksCorrectly()
        {
            var firstEpisode = new Episode()
            {
                Webtoon = new Webtoon()
                {
                    Title       = "test",
                    TitleNumber = "123",
                    Genre       = new Genre()
                    {
                        Name = "action"
                    },
                },
                EpisodeNumber = "456",
                Name          = "works",
                CreatedOn     = new DateTime(1994, 01, 01),
            };
            var secondEpisode = new Episode()
            {
                Webtoon = new Webtoon()
                {
                    Title       = "pesho",
                    TitleNumber = "012",
                    Genre       = new Genre()
                    {
                        Name = "gosho"
                    },
                },
                EpisodeNumber = "789",
                Name          = "ivan",
                CreatedOn     = new DateTime(1998, 01, 01),
            };

            var episodes = new List <Episode>();

            episodes.Add(firstEpisode);
            episodes.Add(secondEpisode);
            var mockEpisodesRepo = new Mock <IEpisodesRepository>();

            mockEpisodesRepo.Setup(x => x.All()).Returns(episodes.AsQueryable());

            var service = new EpisodesService(null, mockEpisodesRepo.Object, null, null, null, null, null, null);

            var result       = service.LatestEpisodes();
            var firstResult  = result.ToArray()[0];
            var secondResult = result.ToArray()[1];

            Assert.Equal("789", firstResult.EpisodeNumber);
            Assert.Equal("ivan", firstResult.EpisodeTitle);
            Assert.Equal(new DateTime(1998, 01, 01), firstResult.EpisodeCreatedOn);
            Assert.Equal("pesho", firstResult.WebtoonTitle);
            Assert.Equal("012", firstResult.WebtoonTitleNumber);
            Assert.Equal("gosho", firstResult.WebtoonGenreName);

            Assert.Equal("456", secondResult.EpisodeNumber);
            Assert.Equal("works", secondResult.EpisodeTitle);
            Assert.Equal(new DateTime(1994, 01, 01), secondResult.EpisodeCreatedOn);
            Assert.Equal("test", secondResult.WebtoonTitle);
            Assert.Equal("123", secondResult.WebtoonTitleNumber);
            Assert.Equal("action", secondResult.WebtoonGenreName);
        }
        public void GetEpisodeReturnsCorrectInfo()
        {
            var mockWebtoonsRepo = new Mock <IWebtoonsRepository>();
            var webtoon          = new Webtoon()
            {
                Title       = "test",
                Id          = "gosho",
                TitleNumber = "123",
                AuthorId    = "test",
                Episodes    = new List <Episode>()
            };
            var firstEpisode = new Episode()
            {
                Webtoon = new Webtoon()
                {
                    Title       = "test",
                    TitleNumber = "123",
                    Genre       = new Genre()
                    {
                        Name = "action"
                    },
                },
                EpisodeNumber = "456",
                Name          = "works",
                CreatedOn     = new DateTime(1994, 01, 01),
            };
            var secondEpisode = new Episode()
            {
                Webtoon = new Webtoon()
                {
                    Title       = "pesho",
                    TitleNumber = "012",
                    Genre       = new Genre()
                    {
                        Name = "gosho"
                    },
                },
                EpisodeNumber = "789",
                Name          = "ivan",
                CreatedOn     = new DateTime(1998, 01, 01),
                Comments      = new List <Comment>(),
            };

            secondEpisode.Comments.Add(new Comment()
            {
                CommentAuthorId = "hello",
                CommentNumber   = "12345",
                CommentAuthor   = new ApplicationUser()
                {
                    UserName = "******"
                },
                CommentInfo  = "this should work",
                Id           = "67890",
                CreatedOn    = new DateTime(1999, 01, 01),
                Comments     = new List <Comment>(),
                CommentVotes = new List <CommentVote>(),
            });
            var episodes = new List <Episode>();

            episodes.Add(secondEpisode);
            episodes.Add(firstEpisode);
            mockWebtoonsRepo.Setup(x => x.GetWebtoonByTitleNumber("123")).Returns(webtoon);
            var mockEpisodesRepo = new Mock <IEpisodesRepository>();

            mockEpisodesRepo.Setup(x => x.GetEpisodesByWebtoonId("gosho")).Returns(episodes);
            mockEpisodesRepo.Setup(x => x.GetEpisodeByWebtoonTitleNumberAndEpisodeNumber("123", "456")).Returns(episodes.FirstOrDefault());
            var mockApplicationUsersRepo = new Mock <IApplicationUserRepository>();
            var mockPagesService         = new Mock <IPagesService>();
            var mockPagesRepo            = new Mock <IPagesRepository>();
            var mockEpisodeLikesService  = new Mock <IEpisodesLikesService>();
            var mockCommentsRepo         = new Mock <ICommentsRepository>();

            mockCommentsRepo.Setup(x => x.GetEpisodeComments(It.IsAny <string>())).Returns(secondEpisode.Comments);
            var mockCommentsVotesRepo = new Mock <ICommentsVotesRepository>();

            mockCommentsVotesRepo.Setup(x => x.GetCommentVotesByCommentId(It.IsAny <string>())).Returns(secondEpisode.Comments.First().CommentVotes);

            var service = new EpisodesService(
                mockWebtoonsRepo.Object,
                mockEpisodesRepo.Object,
                mockPagesRepo.Object, mockPagesService.Object,
                mockEpisodeLikesService.Object, mockCommentsRepo.Object,
                mockApplicationUsersRepo.Object, mockCommentsVotesRepo.Object);

            var result = service.GetEpisode("123", "456");

            Assert.Single(result.Comments);

            Assert.Equal("test", result.EpisodeAuthorId);
            Assert.Equal("hello", result.Comments.First().CommentAuthorId);
            Assert.Null(result.Comments.First().CommentAuthorUsername);
            Assert.Equal("this should work", result.Comments.First().CommentInfo);
            Assert.Equal("12345", result.Comments.First().CommentNumber);
            Assert.Empty(result.Comments.First().CommentReplies);
            Assert.Equal(new DateTime(1999, 01, 01), result.Comments.First().CreatedOn);
            Assert.Equal(0, result.Comments.First().Likes);
            Assert.Equal(0, result.Comments.First().Dislikes);
            Assert.Null(result.Comments.First().ParentId);
            Assert.Equal("67890", result.Comments.First().Id);
            Assert.Equal("789", result.EpisodeNumber);
            Assert.Equal("ivan", result.EpisodeTitle);
            Assert.False(result.HasNextEpisode);
            Assert.False(result.HasPreviousEpisode);
            Assert.Equal("457", result.NextEpisodeNumber);
            Assert.Equal(0, result.Likes);
            Assert.Null(result.PagesPaths);
            Assert.Equal("455", result.PreviousEpisodeNumber);
            Assert.Equal("test", result.WebtoonTitle);
            Assert.Equal("123", result.WebtoonTitleNumber);
        }