コード例 #1
0
        public IActionResult CreateWebtoon()
        {
            var viewModel = new CreateWebtoonInputModel();

            viewModel.Genres = this.genresService.GetAllAsKeyValuePairs();
            return(this.View(viewModel));
        }
コード例 #2
0
        public async Task <IActionResult> CreateWebtoon(CreateWebtoonInputModel input)
        {
            if (!this.ModelState.IsValid)
            {
                input.Genres = this.genresService.GetAllAsKeyValuePairs();
                return(this.View(input));
            }

            var webRootPath = this.webHostEnvironment.WebRootPath;

            input.AuthorId = this.User.FindFirstValue(ClaimTypes.NameIdentifier);

            await this.webtoonsService.CreateWebtoonAsync(input, webRootPath);

            return(this.Redirect("/"));
        }
コード例 #3
0
        public async Task CreateWebtoonAsyncWorksCorrectly()
        {
            var webtoons         = new List <Webtoon>();
            var mockWebtoonsRepo = new Mock <IWebtoonsRepository>();

            mockWebtoonsRepo.Setup(x => x.WebtoonExists(It.IsAny <string>())).Returns(false);
            mockWebtoonsRepo.Setup(x => x.GetWebtoonsCount()).Returns(0);
            mockWebtoonsRepo.Setup(x => x.AddAsync(It.IsAny <Webtoon>())).Callback((Webtoon webtoon) => webtoons.Add(webtoon));
            var mockIFormFile = new Mock <IFormFile>();
            var content       = "Fake content";
            var fileName      = "test.pdf";
            var contentType   = ".exe";
            var ms            = new MemoryStream();
            var writer        = new StreamWriter(ms);

            writer.Write(content);
            writer.Flush();
            ms.Position = 0;
            mockIFormFile.Setup(x => x.OpenReadStream()).Returns(ms);
            mockIFormFile.Setup(x => x.ContentType).Returns(contentType);
            mockIFormFile.Setup(x => x.FileName).Returns(fileName);
            mockIFormFile.Setup(x => x.Length).Returns(ms.Length);
            var input = new CreateWebtoonInputModel()
            {
                AuthorId  = "pesho",
                Cover     = mockIFormFile.Object,
                GenreId   = "action",
                Synopsis  = "this should work",
                Title     = "Darkness",
                UploadDay = MyWebtoonWebProject.Data.Models.Enums.DayOfWeek.Friday,
            };
            var webRootPath = $@"C:\MyWebtoonWebProject\MyWebtoonWebProject\TestResults";

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

            await service.CreateWebtoonAsync(input, webRootPath);

            Assert.Single(webtoons);
            Assert.Equal("pesho", webtoons.First().AuthorId);
            Assert.Equal("action", webtoons.First().GenreId);
            Assert.Equal("this should work", webtoons.First().Synopsis);
            Assert.Equal("Darkness", webtoons.First().Title);
            Assert.Equal("Friday", webtoons.First().UploadDay.ToString());
            Assert.Equal("Darkness/cover.pdf", webtoons.First().CoverPhoto);
        }
コード例 #4
0
        public async Task CreateWebtoonAsync(CreateWebtoonInputModel input, string webRootPath)
        {
            if (this.webtoonsRepository.WebtoonExists(input.Title))
            {
                throw new ArgumentException("Webtoon already exists!");
            }

            string topFolder     = $@"{webRootPath}\Webtoons";
            string webtoonFolder = Path.Combine(topFolder, input.Title);

            Directory.CreateDirectory(webtoonFolder);

            var extention = Path.GetExtension(input.Cover.FileName).TrimStart('.');

            string coverPhotoPath = webtoonFolder + $"/cover.{extention}";

            using (FileStream fs = new FileStream(coverPhotoPath, FileMode.Create))
            {
                await input.Cover.CopyToAsync(fs);
            }

            var webtoon = new Webtoon
            {
                Title       = input.Title,
                Synopsis    = input.Synopsis,
                CoverPhoto  = input.Title + $"/cover.{extention}",
                GenreId     = input.GenreId,
                UploadDay   = input.UploadDay,
                AuthorId    = input.AuthorId,
                CreatedOn   = DateTime.UtcNow,
                Completed   = false,
                TitleNumber = (this.webtoonsRepository.GetWebtoonsCount() + 1).ToString(),
            };

            await this.webtoonsRepository.AddAsync(webtoon);

            await this.webtoonsRepository.SaveChangesAsync();
        }