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);
        }
Exemple #2
0
        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);
        }