def delete_book_request(id_): ''' delete a book request by id ''' try: book_req = BookRequests.get(id_) if book_req is None: raise error.BookReqFoundError('Book request not found') BookRequests.delete(id_) except sqlalchemy.exc.SQLAlchemyError as ex: log.error(f'Error while deleting book request {ex}') raise error.StorageError('Error while deleting book request') log.info(f'book request with id {id_} deleted')
def create_book_request(email, title): ''' validate and add a book request to db ''' _check_email_address_format(email) title = get_book_title(title) timestamp = _get_timestamp_now() new_book_request = BookRequests(email=email, timestamp=timestamp, book_title=title) try: db.session.add(new_book_request) db.session.commit() except sqlalchemy.exc.SQLAlchemyError as ex: db.session.rollback() log.error(f'Could not add book request: {ex}') raise error.StorageError('Could not add book request!') ret_value = new_book_request.to_dict() ret_value['title'] = title.title log.info(f'new book request {ret_value} successfully added') return ret_value
def test_create_book_request_invalid_email3(self): book_title = "Book Title" email = "*****@*****.**" response = self.client.open('/api/v1/request', method='POST', content_type='application/json', headers={'accept': 'application/json'}, query_string=[('email', email), ('title', book_title)]) self.assertStatus(response, 400) all_books_requests = BookRequests.get_all() self.assertEqual(len(all_books_requests), 0)
def test_add_book_request(self): book_title = "Book Title 1" email = "*****@*****.**" response = self.client.open('/api/v1/request', method='POST', content_type='application/json', headers={'accept': 'application/json'}, query_string=[('email', email), ('title', book_title)]) self.assertStatus(response, 200) data = response.json self.assertEqual(len(data), 4) self.assertIn('id', data) self.assertIn('timestamp', data) self.assertEqual(data['title'], book_title) self.assertEqual(data['email'], email) all_books_requests = BookRequests.get_all() self.assertEqual(len(all_books_requests), 1)