def test_fetch_instance(self): responses.add( responses.GET, "http://example.com/api/schema", json={"properties": {"user": {"$ref": "/api/user/schema#"}}} ) responses.add( responses.GET, "http://example.com/api/user/schema", json={ "type": "object", "properties": {"name": {"type": "string"}}, "links": [{"rel": "self", "href": "/api/user/{id}", "method": "GET"}], }, ) responses.add(responses.GET, "http://example.com/api/user/123", json={"$uri": "/api/user/123", "name": "foo"}) client = Client("http://example.com/api") user = client.User.fetch(123) self.assertEqual({"$uri": "/api/user/123", "name": "foo"}, dict(user)) self.assertEqual(client.instance("/api/user/123"), user) self.assertEqual("foo", user.name) self.assertEqual(123, user.id) self.assertEqual(user, client.User(123)._self())
def test_decode_instance(self): client = Client('http://example.com', fetch_schema=False) User = client.resource_factory( 'user', { "type": "object", "properties": { "$uri": { "type": "string", "readOnly": True }, "name": { "type": "string" } }, "links": [{ "rel": "instances", "method": "GET", "href": "/user" }] }) result = json.loads(json.dumps({ "$uri": "/user/123", "name": "foo" }), cls=PotionJSONDecoder, client=client) self.assertEqual(client.instance('/user/123'), result) self.assertEqual("foo", result.name) self.assertEqual(123, result.id)
def test_decode_instance(self): client = Client('http://example.com', fetch_schema=False) User = client.resource_factory('user', { "type": "object", "properties": { "$uri": { "type": "string", "readOnly": True }, "name": { "type": "string" } }, "links": [ { "rel": "instances", "method": "GET", "href": "/user" } ] }) result = json.loads(json.dumps({ "$uri": "/user/123", "name": "foo" }), cls=PotionJSONDecoder, client=client) self.assertEqual(client.instance('/user/123'), result) self.assertEqual("foo", result.name) self.assertEqual(123, result.id)
def test_instance_cache(self): responses.add(responses.GET, "http://example.com/schema", json={"properties": {}}) client = Client("http://example.com") foo_a = client.instance("/foo") foo_b = client.instance("/foo") self.assertIs(foo_a, foo_b)
def test_instance_cache(self): responses.add(responses.GET, 'http://example.com/schema', json={"properties": {}}) client = Client('http://example.com') foo_a = client.instance('/foo') foo_b = client.instance('/foo') self.assertIs(foo_a, foo_b)
def test_instance_cache(self): responses.add(responses.GET, 'http://example.com/schema', json={ "properties": {} }) client = Client('http://example.com') foo_a = client.instance('/foo') foo_b = client.instance('/foo') self.assertIs(foo_a, foo_b)
def test_fetch_instance(self): responses.add(responses.GET, 'http://example.com/api/schema', json={ "properties": { "user": {"$ref": "/api/user/schema#"} } }) responses.add(responses.GET, 'http://example.com/api/user/schema', json={ "type": "object", "properties": { "name": {"type": "string"} }, "links": [ { "rel": "self", "href": "/api/user/{id}", "method": "GET" } ] }) responses.add(responses.GET, 'http://example.com/api/user/123', json={ "$uri": "/api/user/123", "name": "foo" }) client = Client('http://example.com/api') user = client.User.fetch(123) self.assertEqual({ "$uri": "/api/user/123", "name": "foo" }, dict(user)) self.assertEqual(client.instance('/api/user/123'), user) self.assertEqual("foo", user.name) self.assertEqual(123, user.id) self.assertEqual(user, client.User(123)._self())