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('data'))) 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)