Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
 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));
 }
Exemplo n.º 7
0
        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());
        }
Exemplo n.º 8
0
        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);
        }