def test_insert_or_ignore_with_conflicts(self): # Insert the first object. values = TASK_EX.copy() values['unique_key'] = 'key' db_api.insert_or_ignore(db_models.TaskExecution, values) task_execs = db_api.get_task_executions() self.assertEqual(1, len(task_execs)) task_ex = task_execs[0] self._assert_dict_contains_subset(TASK_EX, task_ex.to_dict()) # Insert the second object with the same unique key. # We must not get exceptions and new object must not be saved. values = TASK_EX.copy() values['unique_key'] = 'key' db_api.insert_or_ignore(db_models.TaskExecution, values) task_execs = db_api.get_task_executions() self.assertEqual(1, len(task_execs)) task_ex = task_execs[0] self._assert_dict_contains_subset(TASK_EX, task_ex.to_dict())
def test_insert_or_ignore_without_conflicts(self): db_api.insert_or_ignore(db_models.TaskExecution, TASK_EX.copy()) task_execs = db_api.get_task_executions() self.assertEqual(1, len(task_execs)) task_ex = task_execs[0] self._assert_dict_contains_subset(TASK_EX, task_ex.to_dict())
def test_get_task_executions(self): wf_ex = db_api.create_workflow_execution(WF_EXECS[0]) values = copy.copy(TASK_EXECS[0]) values.update({'workflow_execution_id': wf_ex.id}) created0 = db_api.create_task_execution(values) values = copy.copy(TASK_EXECS[1]) values.update({'workflow_execution_id': wf_ex.id}) created1 = db_api.create_task_execution(values) fetched = db_api.get_task_executions( workflow_name=TASK_EXECS[0]['workflow_name']) self.assertEqual(2, len(fetched)) self.assertEqual(created0, fetched[0]) self.assertEqual(created1, fetched[1])
def test_get_task_executions(self): wf_ex = db_api.create_workflow_execution(WF_EXECS[0]) values = copy.deepcopy(TASK_EXECS[0]) values.update({'workflow_execution_id': wf_ex.id}) created0 = db_api.create_task_execution(values) values = copy.deepcopy(TASK_EXECS[1]) values.update({'workflow_execution_id': wf_ex.id}) created1 = db_api.create_task_execution(values) fetched = db_api.get_task_executions( workflow_name=TASK_EXECS[0]['workflow_name'] ) self.assertEqual(2, len(fetched)) self.assertEqual(created0, fetched[0]) self.assertEqual(created1, fetched[1])
def test_task_executions(self): # Add an associated object into collection. with db_api.transaction(): wf_ex = db_api.create_workflow_execution(WF_EXECS[0]) self.assertEqual(0, len(wf_ex.task_executions)) wf_ex.task_executions.append( db_models.TaskExecution(**TASK_EXECS[0]) ) # Make sure task execution has been saved. with db_api.transaction(): wf_ex = db_api.get_workflow_execution(wf_ex.id) self.assertIsNotNone(wf_ex) self.assertEqual(1, len(wf_ex.task_executions)) task_ex = wf_ex.task_executions[0] self.assertEqual(TASK_EXECS[0]['name'], task_ex.name) # Make sure that polymorphic load works correctly. self.assertEqual(2, len(db_api.get_executions())) self.assertEqual(1, len(db_api.get_workflow_executions())) self.assertEqual(1, len(db_api.get_task_executions())) # Remove task execution from collection. with db_api.transaction(): wf_ex = db_api.get_workflow_execution(wf_ex.id) del wf_ex.task_executions[:] # Make sure task execution has been removed. with db_api.transaction(): wf_ex = db_api.get_workflow_execution(wf_ex.id) self.assertEqual(0, len(wf_ex.task_executions)) self.assertIsNone(db_api.load_task_execution(task_ex.id))
def test_task_executions(self): # Add an associated object into collection. with db_api.transaction(): wf_ex = db_api.create_workflow_execution(WF_EXECS[0]) self.assertEqual(0, len(wf_ex.task_executions)) wf_ex.task_executions.append( db_models.TaskExecution(**TASK_EXECS[0])) # Make sure task execution has been saved. with db_api.transaction(): wf_ex = db_api.get_workflow_execution(wf_ex.id) self.assertIsNotNone(wf_ex) self.assertEqual(1, len(wf_ex.task_executions)) task_ex = wf_ex.task_executions[0] self.assertEqual(TASK_EXECS[0]['name'], task_ex.name) # Make sure that polymorphic load works correctly. self.assertEqual(2, len(db_api.get_executions())) self.assertEqual(1, len(db_api.get_workflow_executions())) self.assertEqual(1, len(db_api.get_task_executions())) # Remove task execution from collection. with db_api.transaction(): wf_ex = db_api.get_workflow_execution(wf_ex.id) del wf_ex.task_executions[:] # Make sure task execution has been removed. with db_api.transaction(): wf_ex = db_api.get_workflow_execution(wf_ex.id) self.assertEqual(0, len(wf_ex.task_executions)) self.assertIsNone(db_api.load_task_execution(task_ex.id))