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.session.remove() 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 = {"name": "Only name"} response = self.client.post( "/designers/", data=json.dumps(data), content_type="application/json" ) self.assert400(response)