def post(self):
        data = self.parser.parse_args()
        if Book.query.filter(Book.isbn == data.get('isbn')).first():
            return dict(message='ISBN already exists'), 409

        authors = data.pop('authors', [])
        categories = data.pop('categories', [])

        book = Book(**data)
        append_authors_to_book(book, authors)
        append_categories_to_book(book, categories)
        book.save()

        return book.json(), 201
Example #2
0
def test_json_representation_of_book():
    """
    GIVEN a Book model
    WHEN a new Book is created
    THEN check the json representation of the new Book
    """
    book_data = dict(
        isbn='978-1-449-34284-5',
        title='The Art of War',
        num_of_pages=60,
        publisher='East India Publishing Company',
        publication_date='2018-12-17',
        about='Lorem ipsum dolor sit amet.',
    )
    book = Book(**book_data)
    book_json = book.json()

    assert_that(book_json).contains_value(60, 'The Art of War')
    assert_that(book_json).contains_key('id', 'isbn', 'title', 'num_of_pages',
                                        'publisher', 'publication_date',
                                        'about')