public async Task Create_ReturnsACreatedAtActionResultAndAddsEpisode_WhenModelStateIsValid() { var mapper = CreateAutoMapper(); var episodeServiceMock = new Mock <IEpisodeService>(); episodeServiceMock.Setup(s => s.CreateAsync(It.IsAny <Episode>())) .Returns(Task.FromResult(new Episode())) .Verifiable(); var controller = new EpisodeController(mapper, episodeServiceMock.Object); var episode = new CreateEpisodeViewModel { Title = "Episode 1", VideoId = "aljklasf" }; var result = await controller.Create(episode); var createdAtActionResult = Assert.IsType <CreatedAtActionResult>(result); Assert.Equal("GetById", createdAtActionResult.ActionName); Assert.IsType <EpisodeViewModel>(createdAtActionResult.Value); episodeServiceMock.Verify(); }
public async Task <Episode> CreateEpisodeFromCreateViewModelAsync(CreateEpisodeViewModel model) { var episode = _mapper.Map <Episode>(model); var season = await _seasonService.GetSeasonAsync(model.SeasonId); episode.Season = season; var videoInfo = new VideoInfo(); var videos = model.VideoPaths.Select(path => new EpisodeVideo() { Id = Path.GetFileNameWithoutExtension(path), Location = path, VideoInfo = videoInfo }).ToList(); episode.Location = Path.GetDirectoryName(videos.First().Location); var filesCount = Directory.GetFiles(Path.Combine(wwwRoot, episode.Location, "Thumbnails"), "*", SearchOption.TopDirectoryOnly).Length; episode.ThumbnailsAmount = filesCount; episode.Videos = videos; if (await CreateEpisodeAsync(episode)) { return(episode); } return(null); }
public async Task <IActionResult> Create([FromBody] CreateEpisodeViewModel episode) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var episodeToCreate = _mapper.Map <Episode>(episode); episodeToCreate = await _episodeService.CreateAsync(episodeToCreate); return(CreatedAtAction("GetById", new { id = episodeToCreate.Id }, _mapper.Map <EpisodeViewModel>(episodeToCreate))); }
public async Task Create_ReturnsBadRequestResult_WhenModelStateIsInvalid() { var mapper = CreateAutoMapper(); var episodeServiceMock = new Mock <IEpisodeService>(); episodeServiceMock.Setup(s => s.CreateAsync(It.IsAny <Episode>())) .Returns(Task.FromResult(new Episode())); var controller = new EpisodeController(mapper, episodeServiceMock.Object); controller.ModelState.AddModelError("Title", "A title is required"); var newEpisode = new CreateEpisodeViewModel(); var result = await controller.Create(newEpisode); var badRequestResult = Assert.IsType <BadRequestObjectResult>(result); Assert.IsType <SerializableError>(badRequestResult.Value); }
public async Task <IActionResult> CreateEpisode(CreateEpisodeViewModel model) { var episode = await _episodeService.CreateEpisodeFromCreateViewModelAsync(model); return(Created($"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}/Episode/{episode.Id}", _mapper.Map <EpisodeViewModel>(episode))); }