# -*- encoding: utf-8 -*- import responses from bson import ObjectId import pillarsdk import pillar.tests import pillar.auth import pillar.tests.common_test_data as ctd from abstract_attract_test import AbstractAttractTest class TaskWorkflowTest(AbstractAttractTest): def setUp(self, **kwargs): AbstractAttractTest.setUp(self, **kwargs) self.mngr = self.app.pillar_extensions['attract'].task_manager self.proj_id, self.project = self.ensure_project_exists() self.sdk_project = pillarsdk.Project(pillar.tests.mongo_to_sdk(self.project)) def create_task(self, task_type=None): with self.app.test_request_context(): # Log in as project admin user pillar.auth.login_user(ctd.EXAMPLE_PROJECT_OWNER_ID) self.mock_blenderid_validate_happy() task = self.mngr.create_task(self.sdk_project, task_type=task_type) self.assertIsInstance(task, pillarsdk.Node) return task @responses.activate def test_create_task(self): task = self.create_task(task_type=u'Just düüüh it') self.assertIsNotNone(task) # Test directly with MongoDB with self.app.test_request_context(): nodes_coll = self.app.data.driver.db['nodes'] found = nodes_coll.find_one(ObjectId(task['_id'])) self.assertIsNotNone(found) self.assertEqual(u'Just düüüh it', found['properties']['task_type']) # Test it through the API resp = self.get('/api/nodes/%s' % task['_id']) found = resp.json() self.assertEqual(u'Just düüüh it', found['properties']['task_type']) @responses.activate def test_edit_task(self): task = self.create_task() with self.app.test_request_context(): # Log in as project admin user pillar.auth.login_user(ctd.EXAMPLE_PROJECT_OWNER_ID) self.mock_blenderid_validate_happy() self.mngr.edit_task(task._id, task_type=u'je møder', name=u'nööw name', description=u'€ ≠ ¥', status='todo') # Test directly with MongoDB with self.app.test_request_context(): nodes_coll = self.app.data.driver.db['nodes'] found = nodes_coll.find_one(ObjectId(task['_id'])) self.assertEqual(u'je møder', found['properties']['task_type']) self.assertEqual(u'todo', found['properties']['status']) self.assertEqual(u'nööw name', found['name']) self.assertEqual(u'€ ≠ ¥', found['description'])