def test_hyperlink_related_field_errors(self, extma, models, db, extapp): class BookSchema(extma.ModelSchema): class Meta: model = models.Book author = HyperlinkRelated('author') book_schema = BookSchema() author = models.Author(name='Chuck Paluhniuk') book = models.Book(title='Fight Club', author=author) db.session.add(author) db.session.add(book) db.session.flush() # Deserialization fails on bad endpoint book_result = get_dump_data(book_schema, book) book_result['author'] = book.url deserialized, errors = get_load_data(book_schema, book_result) print(errors) assert 'expected "author"' in errors['author'][0] # Deserialization fails on bad URL key book_result = get_dump_data(book_schema, book) book_schema.fields['author'].url_key = 'pk' deserialized, errors = get_load_data(book_schema, book_result) assert 'URL pattern "pk" not found' in errors['author'][0]
def test_hyperlink_related_field_list(self, extma, models, db, extapp): class AuthorSchema(extma.ModelSchema): class Meta: model = models.Author books = extma.List(HyperlinkRelated('book')) author_schema = AuthorSchema() author = models.Author(name='Chuck Paluhniuk') book = models.Book(title='Fight Club', author=author) db.session.add(author) db.session.add(book) db.session.flush() author_result = get_dump_data(author_schema, author) assert author_result['books'][0] == book.url deserialized, errors = get_load_data(author_schema, author_result) assert deserialized.books[0] == book
def test_hyperlink_related_field_external(self, extma, models, db, extapp): class BookSchema(extma.ModelSchema): class Meta: model = models.Book author = HyperlinkRelated('author', external=True) book_schema = BookSchema() author = models.Author(name='Chuck Paluhniuk') book = models.Book(title='Fight Club', author=author) db.session.add(author) db.session.add(book) db.session.flush() book_result = get_dump_data(book_schema, book) assert book_result['author'] == author.absolute_url deserialized, errors = get_load_data(book_schema, book_result) assert deserialized.author == author
def test_hyperlink_related_field(self, extma, models, db, extapp): class BookSchema(extma.ModelSchema): class Meta: model = models.Book author = extma.HyperlinkRelated("author") book_schema = BookSchema() author = models.Author(name="Chuck Paluhniuk") book = models.Book(title="Fight Club", author=author) db.session.add(author) db.session.add(book) db.session.flush() book_result = get_dump_data(book_schema, book) assert book_result["author"] == author.url deserialized, errors = get_load_data(book_schema, book_result) assert deserialized.author == author