public async Task <ActionResult <AuthorOutputViewModel> > CreateAuthorAsync([FromBody] AuthorInputViewModel authorToCreate) { var a = _catalogContext.Authors.Add(new Author()); a.CurrentValues.SetValues(authorToCreate); await _catalogContext.SaveChangesAsync(); return(CreatedAtAction(nameof(GetAuthorById), new { id = a.Entity.Id }, MapAuthorToAuthorOutputViewModel(a.Entity))); }
public async Task <ActionResult> Create(AuthorInputViewModel vm) { if (ModelState.IsValid) { var addedA = await _authorService.AddAuthorAsync(vm); TempData["message"] = $"Author \"{addedA.Name}\" was added."; return(RedirectToAction(nameof(Create))); } return(View(vm)); }
public async Task Put_Author_NotFound404() { // Arrange. var ctx = new CatalogDbContext(_dbOptions); var controller = new AuthorsController(ctx); var id = 200; var upd = new AuthorInputViewModel(); // Act. var result = await controller.UpdateAuthorAsync(id, upd); // Assert. Assert.IsType <NotFoundResult>(result); }
public async Task <AuthorOutputViewModel> AddAuthorAsync(AuthorInputViewModel vm) { var cnt = new StringContent(JsonSerializer.Serialize(vm), Encoding.UTF8, _mediaType); var uri = ApiUri.Catalog.AddAuthor(_remoteServiceBaseUrl); var resp = await _apiClient.PostAsync(uri, cnt); var strCnt = await resp.Content.ReadAsStringAsync(); if (resp.IsSuccessStatusCode) { return(JsonSerializer.Deserialize <AuthorOutputViewModel>(strCnt, _jsonSerializationOptions)); } else { throw new ApiException(strCnt); } }
public async Task Put_Author_Success204() { // Arrange. var ctx = new CatalogDbContext(_dbOptions); var controller = new AuthorsController(ctx); var id = 1; var name = "TestS204"; var upd = new AuthorInputViewModel { Name = name }; // Act. var result = await controller.UpdateAuthorAsync(id, upd); // Assert. Assert.IsType <NoContentResult>(result); var updatedA = ctx.Authors.Find(id); Assert.Equal(name, updatedA.Name); }
public async Task <ActionResult> EditPostAction(int id, AuthorInputViewModel vm) { if (id <= 0) { return(BadRequest()); } if (ModelState.IsValid) { if (await _authorService.UpdateAuthorAsync(id, vm)) { TempData["message"] = $"Author {vm.Name} was successfully updated."; return(RedirectToAction(nameof(Index))); } else { return(NotFound()); } } return(View(vm)); }
public async Task <IActionResult> UpdateAuthorAsync(int id, [FromBody] AuthorInputViewModel authorToUpdate) { if (id <= 0) { return(BadRequest()); } var author = await _catalogContext.Authors.SingleOrDefaultAsync( a => a.Id == id); if (author == null) { return(NotFound()); } _catalogContext.Entry(author).CurrentValues.SetValues(authorToUpdate); _catalogContext.Authors.Update(author); await _catalogContext.SaveChangesAsync(); return(NoContent()); }
public async Task Post_CreateAuthor_Success201() { // Arrange. var name = "Test name"; var a = new AuthorInputViewModel { Name = name }; var ctx = new CatalogDbContext(_dbOptions); var controller = new AuthorsController(ctx); // Act. var result = await controller.CreateAuthorAsync(a); // Assert. var ar = Assert.IsType <CreatedAtActionResult>(result.Result); var returnedA = Assert.IsType <AuthorOutputViewModel>(ar.Value); Assert.Equal(name, returnedA.Name); var createdA = ctx.Authors.Find(returnedA.Id); Assert.Equal(name, createdA.Name); }