From 28af106ecd3330ff9432477e2f503e7470d2147c Mon Sep 17 00:00:00 2001 From: Martin Date: Thu, 30 Jun 2016 16:58:26 +0200 Subject: [PATCH] add tests for the designer resource --- tests/resources/__init__.py | 0 tests/resources/test_designers.py | 58 +++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 tests/resources/__init__.py create mode 100644 tests/resources/test_designers.py diff --git a/tests/resources/__init__.py b/tests/resources/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/resources/test_designers.py b/tests/resources/test_designers.py new file mode 100644 index 0000000..c02acec --- /dev/null +++ b/tests/resources/test_designers.py @@ -0,0 +1,58 @@ +import json +import flask_testing +from api import create_app, db +from api.models import Designer +from unittest.mock import patch + + +class TestEndpoints(flask_testing.TestCase): + + def create_app(self): + return create_app('tests.config') + + def setUp(self): + db.create_all() + + def tearDown(self): + db.drop_all() + + def _add_designer(self, name, username=None, territory='SE', currency='SEK'): + if not username: + username = name.lower() + designer = Designer(name, username, territory, currency) + db.session.add(designer) + db.session.commit() + return designer + + def test_list_designers(self): + self._add_designer('designer1') + self._add_designer('designer2') + response = self.client.get("/designers/") + self.assertEqual(2, len(response.json.get('designers'))) + + def test_get_designer(self): + designer = self._add_designer('designer1') + response = self.client.get('/designers/1') + self.assert200(response) + + def test_create_designer(self): + data = {'name': 'Spider-Man', 'username': 'spiderman', 'territory': 'US', 'currency': 'USD'} + response = self.client.post('/designers/', data=json.dumps(data), content_type='application/json') + self.assertEqual(201, response.status_code) + designer = response.json + self.assertEqual('Spider-Man', designer['name']) + self.assertEqual('spider_man', designer['path']) + + def test_create_designer_missing_data(self): + data = {} + response = self.client.post('/designers/', data=json.dumps(data), content_type='application/json') + self.assert400(response) + + @patch('api.tasks.esales.update_designer') + def test_update_designer(self, esales_update_designer): + designer = self._add_designer('designer1') + data = {'name': 'test'} + response = self.client.put('/designers/1', data=json.dumps(data), content_type='application/json') + self.assertTrue(esales_update_designer.called) + self.assertEqual('test', response.json['name']) + self.assertEqual('test', Designer.query.get(1).name) \ No newline at end of file