Example #1
0
    def test_construct_relationship_embedded(self):
        """An embedded relationship"""

        class MyResource(ResourceBase):
            _relationships = (Relationship("related", relation="RelatedResource", embedded=True),)

        class RelatedResource(ResourceBase):
            pks = ("id",)

        res = MyResource(properties=dict(related=dict(id=1, value=2)))
        adapter = JSONAPIAdapter(res, base_url="/blah")
        resp = adapter._construct_relationships(res)
        self.assertIn("related", resp)
        self.assertIn("data", resp["related"])
        data = resp["related"]["data"]
        self.assertEqual(len(data), 1)
        data = data[0]
        self.assertIn("attributes", data)
        self.assertDictEqual(
            dict(
                type="related_resource",
                id="1",
                links=dict(self="/blah/related_resource/1"),
                relationships={},
                attributes=dict(id=1, value=2),
            ),
            data,
        )
Example #2
0
    def test_construct_relationship(self):
        """Single relationship"""

        class MyResource(ResourceBase):
            _relationships = (Relationship("related", relation="RelatedResource"),)

        class RelatedResource(ResourceBase):
            pks = ("id",)

        res = MyResource(properties=dict(related=dict(id=1)))
        adapter = JSONAPIAdapter(res, base_url="/blah")
        resp = adapter._construct_relationships(res)
        self.assertIn("related", resp)
        self.assertIn("data", resp["related"])
        data = resp["related"]["data"]
        self.assertEqual(len(data), 1)
        data = data[0]
        self.assertDictEqual(dict(type="related_resource", id="1", links=dict(self="/blah/related_resource/1")), data)
Example #3
0
    def test_construct_relationship_list(self):
        """A ListRelationship instance"""
        class MyResource(ResourceBase):
            _relationships = ListRelationship('related', relation='RelatedResource'),

        class RelatedResource(ResourceBase):
            pks = 'id',

        res = MyResource(properties=dict(related=[dict(id=2), dict(id=1)]))
        adapter = JSONAPIAdapter(res, base_url='/blah')
        resp = adapter._construct_relationships(res)
        self.assertIn('related', resp)
        self.assertIn('data', resp['related'])
        data = resp['related']['data']
        self.assertEqual(len(data), 2)
        for related in data:
            self.assertEqual(related['type'], 'related_resource')
            self.assertTrue(related['links']['self'].startswith('/blah/related_resource'))
Example #4
0
    def test_construct_relationship(self):
        """Single relationship"""
        class MyResource(ResourceBase):
            _relationships = Relationship('related', relation='RelatedResource'),

        class RelatedResource(ResourceBase):
            pks = 'id',

        res = MyResource(properties=dict(related=dict(id=1)))
        adapter = JSONAPIAdapter(res, base_url='/blah')
        resp = adapter._construct_relationships(res)
        self.assertIn('related', resp)
        self.assertIn('data', resp['related'])
        data = resp['related']['data']
        self.assertEqual(len(data), 1)
        data = data[0]
        self.assertDictEqual(dict(type='related_resource', id='1',
                                  links=dict(self='/blah/related_resource/1')), data)
Example #5
0
    def test_construct_relationship_list(self):
        """A ListRelationship instance"""

        class MyResource(ResourceBase):
            _relationships = (ListRelationship("related", relation="RelatedResource"),)

        class RelatedResource(ResourceBase):
            pks = ("id",)

        res = MyResource(properties=dict(related=[dict(id=2), dict(id=1)]))
        adapter = JSONAPIAdapter(res, base_url="/blah")
        resp = adapter._construct_relationships(res)
        self.assertIn("related", resp)
        self.assertIn("data", resp["related"])
        data = resp["related"]["data"]
        self.assertEqual(len(data), 2)
        for related in data:
            self.assertEqual(related["type"], "related_resource")
            self.assertTrue(related["links"]["self"].startswith("/blah/related_resource"))
Example #6
0
    def test_construct_relationship_list(self):
        """A ListRelationship instance"""
        class MyResource(ResourceBase):
            _relationships = ListRelationship('related',
                                              relation='RelatedResource'),

        class RelatedResource(ResourceBase):
            pks = 'id',

        res = MyResource(properties=dict(related=[dict(id=2), dict(id=1)]))
        adapter = JSONAPIAdapter(res, base_url='/blah')
        resp = adapter._construct_relationships(res)
        self.assertIn('related', resp)
        self.assertIn('data', resp['related'])
        data = resp['related']['data']
        self.assertEqual(len(data), 2)
        for related in data:
            self.assertEqual(related['type'], 'related_resource')
            self.assertTrue(
                related['links']['self'].startswith('/blah/related_resource'))
Example #7
0
    def test_construct_relationship(self):
        """Single relationship"""
        class MyResource(ResourceBase):
            _relationships = Relationship('related',
                                          relation='RelatedResource'),

        class RelatedResource(ResourceBase):
            pks = 'id',

        res = MyResource(properties=dict(related=dict(id=1)))
        adapter = JSONAPIAdapter(res, base_url='/blah')
        resp = adapter._construct_relationships(res)
        self.assertIn('related', resp)
        self.assertIn('data', resp['related'])
        data = resp['related']['data']
        self.assertEqual(len(data), 1)
        data = data[0]
        self.assertDictEqual(
            dict(type='related_resource',
                 id='1',
                 links=dict(self='/blah/related_resource/1')), data)