public async Task <IHttpActionResult> GetBookDetail(int id) { BookDetailDto book = await db.Books.Include(x => x.Author).Where(x => x.BookId == id).Select(AsBookDetailDto).FirstOrDefaultAsync(); if (book == null) { return(NotFound()); } return(Ok(book)); }
public async Task PutBook_ShouldUpdateBook_IfBookExistsInDatabase() { var book = new BookDetailDto { Id = 103, Author = "Ralls, Kim", Title = "New testing", Price = 100.1m, PublishDate = DateTime.Now }; using (var client = NewHttpClient()) { var resp = await client.PutAsJsonAsync("api/books/103", book); resp.EnsureSuccessStatusCode(); } }
public async Task <IHttpActionResult> GetBook(int id) { Book book = await db.Books.Include(b => b.Author).SingleOrDefaultAsync(b => b.Id == id); if (book == null) { return(NotFound()); } BookDetailDto bd = Mapper.Map <Book, BookDetailDto>(book); return(Ok(bd)); }
public IHttpActionResult PostBook(BookDetailDto book) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var bookModel = book.ToModel(); db.Books.Add(bookModel); db.SaveChanges(); var res = CreatedAtRoute("DefaultApi", new { controller = "Books", id = bookModel.BookId }, book); return(res); }
public async Task GetBook_ShouldReturnBook_IfProvidedValidBookId() { BookDetailDto expectedBook = db.AddNewBookWithAllFields(DateTime.Now); int expectedBookId = expectedBook.Id; using (var client = NewHttpClient()) { var resp = await client.GetAsync("books/" + expectedBookId); resp.EnsureSuccessStatusCode(); var book = await resp.Content.ReadAsAsync <BookDto>(); Assert.AreEqual <BookDto>(BooksConverter.BookDetailToBook(expectedBook), book); } }
public async Task PostBook_ShouldCreateNewBookAndRetutnItsDto() { var book = new BookDetailDto { Id = 105, Author = "Ralls, Kim", Title = "Integration testing", Price = 100.1m, PublishDate = DateTime.Now }; using (var client = NewHttpClient()) { var resp = await client.PostAsJsonAsync("api/books", book); resp.EnsureSuccessStatusCode(); var result = await resp.Content.ReadAsAsync <BookDetailDto>(); Assert.AreEqual(result.Title, book.Title); } }
public async Task <IHttpActionResult> PutBook(int id, BookDetailDto bookDto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != bookDto.Id) { return(BadRequest()); } if (bookDto.AuthorId == 0) { Author newAu = new Author { Name = bookDto.AuthorName }; IHttpActionResult result = await new AuthorsController().PostAuthor(newAu); bookDto.AuthorId = newAu.Id; } Book book = Mapper.Map <BookDetailDto, Book>(bookDto); book.Id = bookDto.Id; db.Entry(book).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!BookExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
private BookDetailDto addNewBookWithAllFields() { int bookId = GetMaxBookExternalId() + 1; BookDetailDto newBook = new BookDetailDto { Id = bookId, Author = "Ralls, Kim", Title = "Integration testing", Price = 100.1m, Genre = "Genre", Description = "Description", PublishDate = DateTime.Now }; db.Books.Add(newBook.ToModel()); db.SaveChanges(); return(newBook); }
public async Task PutBook_ShouldReturnError_IfProvidedInvalidBookId() { int bookId = db.NextBookExternalId(); BookDetailDto updatedBook = new BookDetailDto { Id = bookId, Author = "Ralls, Kim", Title = "Testing title", Price = 99.9m, Description = "abcde", Genre = "new genre", PublishDate = new DateTime(2016, 9, 20, 10, 10, 10) }; using (var client = NewHttpClient()) { var resp = await client.PutAsJsonAsync("books/" + bookId.ToString(), updatedBook); //Not sure this is the best Assertion Assert.AreEqual(System.Net.HttpStatusCode.InternalServerError, resp.StatusCode); } }
public async Task <IHttpActionResult> GetBookDetail(int id) { BookDetailDto bookDetailDto = await db.Books. Where(x => x.BookId == id). Include(x => x.Author). Select(x => new BookDetailDto() { Author = x.Author.Name, Description = x.Description, Genre = x.Genre, Price = x.Price, PublishDate = x.PublishDate, Title = x.Title }).FirstOrDefaultAsync(); if (bookDetailDto == null) { return(NotFound()); } return(Ok(bookDetailDto)); }
public IHttpActionResult PutBook(int id, [FromBody] BookDetailDto bookDeatil) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != bookDeatil.Id) { return(BadRequest()); } var originalBook = db.Books.Single(b => b.ExternalId == bookDeatil.Id); var updatedBook = bookDeatil.ToModel(); updatedBook.BookId = originalBook.BookId; db.Entry(originalBook).CurrentValues.SetValues(updatedBook); try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!BookExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public async Task PutBook_ShouldUpdateBook_IfBookExistsInDatabase() { int bookId = db.AddNewBookWithAllFields(DateTime.Now).Id; BookDetailDto bookToUpdate = new BookDetailDto { Id = bookId, Author = "Ralls, Kim", Title = "Testing title", Price = 99.9m, Description = "abcde", Genre = "new genre", PublishDate = new DateTime(2016, 9, 20, 10, 10, 10) }; using (var client = NewHttpClient()) { var resp = await client.PutAsJsonAsync("books/" + bookId.ToString(), bookToUpdate); resp.EnsureSuccessStatusCode(); var updatedBook = db.GetDetailBookByExternalId(bookId); Assert.AreEqual <BookDetailDto>(bookToUpdate, updatedBook); } }
private BookDto BookDetailToBook(BookDetailDto book) { return(new BookDto { Id = book.Id, Author = book.Author, Genre = book.Genre, Title = book.Title }); }