public async Task <Result> Create(NewChapterDto data) { var result = new Result(); if (string.IsNullOrWhiteSpace(data.Title)) { result.IsSuccess = false; result.Message = "Chapter title is required"; } else if (string.IsNullOrWhiteSpace(data.Contents)) { result.IsSuccess = false; result.Message = "Chapter content is required"; } else if (data.ChapterNumber == 0) { result.IsSuccess = false; result.Message = "Chapter number is required"; } else if (data.NovelId == 0) { result.IsSuccess = false; result.Message = "Novel ID is required"; } else { int novelId = data.NovelId; int chapterNumber = data.ChapterNumber; var novel = await _dbContext.Novel.GetSingleFilteredByAsync(m => m.NovelId == novelId); var existingChapter = await _dbContext.NovelChapter.GetSingleFilteredByAsync(m => m.ChapterNumber == chapterNumber && m.NovelId == novelId); if (existingChapter != null) { result.IsSuccess = false; result.Message = $"Chapter number {data.ChapterNumber} already exist in novel"; } else if (novel == null) { result.IsSuccess = false; result.Message = $"Novel with ID ${data.NovelId} does not exist"; } else { var chapter = _mapper.Map <NovelChapter>(data); result = await _dbContext.NovelChapter.Insert(chapter); if (result.IsSuccess) { result.Message = "Chapter added successfully!"; } } } return(result); }
public async Task CreateNew_InvalidData_ShouldReturnFalse() { var chapter = new NewChapterDto { ChapterNumber = 6, Contents = "", IsPublished = false, NovelId = 1, Title = "" }; var result = await _chapterService.Create(chapter); Assert.IsFalse(result.IsSuccess); }
public async Task CreateNew_ValidData_ShouldReturnTrue() { var chapter = new NewChapterDto { ChapterNumber = 6, Contents = "CreateNew_ValidData_ShouldReturnTrue", IsPublished = false, NovelId = 1, Title = "CreateNew_ValidData_ShouldReturnTrue" }; var result = await _chapterService.Create(chapter); var novelChapters = await _chapterService.ByNovelId(1); var chapterFromDb = novelChapters.FirstOrDefault(m => m.Title == "CreateNew_ValidData_ShouldReturnTrue"); Assert.IsTrue(result.IsSuccess); Assert.IsNotNull(chapterFromDb); }
public async Task <IActionResult> Post([FromBody] NewChapterDto data) { var result = await _chapterService.Create(data); return(new JsonResult(result)); }