def mockrequest(*args, **kwargs): self.failUnlessEqual(args[0], 'http://api.simplegeo.com:80/%s/places' % (API_VERSION,)) self.failUnlessEqual(args[1], 'POST') bodyobj = json.loads(kwargs['body']) self.failUnlessEqual(bodyobj['properties'].get('record_id'), record_id) methods_called.append(('request', args, kwargs)) mockhttp.request = mockrequest2 return ({'status': '202', 'content-type': 'application/json', 'location': newloc}, json.dumps({'id': handle}))
def test_update_feature(self): handle = 'SG_abcdefghijklmnopqrstuv' rec = Feature((D('11.03'), D('10.04')), simplegeohandle=handle) mockhttp = mock.Mock() mockhttp.request.return_value = ({'status': '200', 'content-type': 'application/json', }, {'token': "this is your polling token"}) self.client.places.http = mockhttp res = self.client.places.update_feature(rec) self.failUnless(isinstance(res, dict), res) self.failUnless(res.has_key('token'), res) self.assertEqual(mockhttp.method_calls[0][0], 'request') self.assertEqual(mockhttp.method_calls[0][1][0], 'http://api.simplegeo.com:80/%s/features/%s.json' % (API_VERSION, handle)) self.assertEqual(mockhttp.method_calls[0][1][1], 'POST') bodyjson = mockhttp.method_calls[0][2]['body'] self.failUnless(isinstance(bodyjson, basestring), (repr(bodyjson), type(bodyjson))) # If it decoded as valid json then check for some expected fields bodyobj = json.loads(bodyjson) self.failUnless(bodyobj.get('geometry').has_key('coordinates'), bodyobj) self.failUnless(bodyobj.get('geometry').has_key('type'), bodyobj) self.failUnlessEqual(bodyobj.get('geometry')['type'], 'Point')
def test_repr(self): body = 'this is not json' try: json.loads('this is not json') except ValueError, le: e = DecodeError(body, le)
def json_decode(jsonstr): try: return json.loads(jsonstr) except (ValueError, TypeError), le: raise DecodeError(jsonstr, le)