public async Task AddOwnedBookAsync(IOwnedBook ownedBook, GoogleBooks googleBooks) { if (googleBooks is null) { throw new ArgumentNullException(nameof(googleBooks)); } var user = await _context.Users.SingleAsync(u => u.Id == ownedBook.OwnerId); var book = await _context.Books.SingleOrDefaultAsync(b => b.Isbn == ownedBook.Isbn.IsbnValue); if (book is null) { IBook bookObj = await googleBooks.GetBookFromIsbn(ownedBook.Isbn.IsbnValue); if (bookObj is null) { throw new AggregateException("Unable to retrieve book from Google Books."); } book = await AddBook(bookObj); } var ownedBookData = new OwnedBook() { User = user, Book = book, ConditionId = (int)ownedBook.Condition, AvailabilityStatusId = (int)ownedBook.Availability }; await _context.OwnedBooks.AddAsync(ownedBookData); }
public async Task GoogleBooks_GetBookByIsbn_GetIBook(long isbn, string expectedTitle) { // arrange HttpClient client = new HttpClient(); GoogleBooks googleBooks = new GoogleBooks(client, null); // act IBook data = await googleBooks.GetBookFromIsbn(isbn); // assert Assert.Equal(expectedTitle, data.Title); }