Exemplo n.º 1
0
    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]
Exemplo n.º 2
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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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