Skip to content
Snippets Groups Projects

Draft:Generic api v1

7 files
+ 56
35
Compare changes
  • Side-by-side
  • Inline

Files

@@ -4,14 +4,60 @@ from Mirador_backend.tests.tester import TestCase
class MiradorResourceTest(TestCase):
base = '/mirador_resource'
headers = {"Content-Type": "application/json"}
def testGet(self):
# TODO payload
payload = json.dumps({})
response = self.client.get(self.base + '/1', headers={"Content-Type": "application/json"}, data=payload)
def getData(self):
return self.getFixtureRecordsByModel(self.fixtures[0], 'Mirador_backend.models.MiradorResource')
self.assertEqual(200, response.status_code)
# TODO test actual behavior with fixture data
self.assertEqual('get', response.json['method'])
self.assertEqual(int, type(response.json['id']))
def get(self, id, inFixtures=True, raw=None):
response = self.client.get(f'{self.base}/{id}', headers=self.headers)
if inFixtures:
self.assertGoodResponse(response, next(x for x in self.getData() if x['id'] == 1))
elif raw is not None:
self.assertGoodResponse(response, raw)
else:
self.assertBadResponse(response, 404)
def testGetOne(self):
self.get(1)
def testGetAll(self):
response = self.client.get(self.base, headers=self.headers)
self.assertGoodResponse(response, {str(x['id']): x for x in self.getData()})
def testPut(self):
id = 3
self.get(id, False)
data = {'content': '{"a":"b"}'}
payload = json.dumps(data)
response = self.client.put(f'{self.base}/{id}', headers=self.headers, data=payload)
data['id'] = id
self.assertGoodResponse(response, data)
self.get(id, False, data)
def testPost(self):
id = 2
self.get(id, False)
data = {'content': '{"a":"b"}'}
payload = json.dumps(data)
response = self.client.post(f'{self.base}', headers=self.headers, data=payload)
data['id'] = id
self.assertGoodResponse(response, data)
self.get(id, False, data)
def testPatch(self):
id = 1
self.get(id)
data = {'content': '{"a":"b"}'}
payload = json.dumps(data)
response = self.client.patch(f'{self.base}/{id}', headers=self.headers, data=payload)
data['id'] = id
self.assertGoodResponse(response, data)
self.get(id, False, data)
def testDelete(self):
id = 1
self.get(id)
response = self.client.delete(f'{self.base}/{id}', headers=self.headers)
self.assertGoodResponse(response, {'success': True})
self.get(id, False)
Loading