From 7d9224db6344c6b2b985728a3b24649b41dc0556 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 1 Jun 2014 11:25:30 +0200 Subject: [PATCH] implement tests for TaskResult - implement TaskResultTest and TaskResultManagerTest --- gnuviechadmin/osusers/tests/test_models.py | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/gnuviechadmin/osusers/tests/test_models.py b/gnuviechadmin/osusers/tests/test_models.py index c6dcf5e..0d0019e 100644 --- a/gnuviechadmin/osusers/tests/test_models.py +++ b/gnuviechadmin/osusers/tests/test_models.py @@ -2,9 +2,12 @@ from django.core.exceptions import ValidationError from django.test import TestCase from django.test.utils import override_settings +from mock import patch, MagicMock + from osusers.models import ( CANNOT_USE_PRIMARY_GROUP_AS_ADDITIONAL, AdditionalGroup, + DeleteTaskResult, Group, Shadow, User, @@ -56,5 +59,69 @@ class ShadowTest(TestCaseWithCeleryTasks): self.assertEqual(str(shadow), 'for user test (1000)') +TEST_TASK_UUID = '3120f6a8-2665-4fa3-a785-79efd28bfe92' +TEST_TASK_NAME = 'test.task' +TEST_TASK_RESULT = '4ll y0ur b453 4r3 b3l0ng t0 u5' + + +class TaskResultTest(TestCase): + def test__set_result_fields_not_ready(self): + mock = MagicMock(task_id=TEST_TASK_UUID, task_name=TEST_TASK_NAME) + mock.ready.return_value = False + tr = DeleteTaskResult.objects.create(mock, TEST_TASK_NAME) + self.assertFalse(tr.is_finished) + self.assertFalse(tr.is_success) + self.assertEqual(tr.state, '') + self.assertEqual(tr.result_body, '') + + def test__set_result_fields_ready(self): + mock = MagicMock(task_id=TEST_TASK_UUID, task_name=TEST_TASK_NAME, + state='SUCCESS', result=TEST_TASK_RESULT) + mock.ready.return_value = True + tr = DeleteTaskResult.objects.create(mock, TEST_TASK_NAME) + self.assertTrue(tr.is_finished) + self.assertTrue(tr.is_success) + self.assertEqual(tr.state, 'SUCCESS') + self.assertEqual(tr.result_body, TEST_TASK_RESULT) + + def test__set_result_fields_exception(self): + mock = MagicMock(task_id=TEST_TASK_UUID, task_name=TEST_TASK_NAME, + state='FAILURE', result=Exception('Fail')) + mock.ready.return_value = True + tr = DeleteTaskResult.objects.create(mock, TEST_TASK_NAME) + self.assertTrue(tr.is_finished) + self.assertFalse(tr.is_success) + self.assertEqual(tr.state, 'FAILURE') + self.assertEqual(tr.result_body, 'Fail') + + @patch('osusers.models.AsyncResult') + def test_update_taskstatus_unfinished(self, asyncres): + mock = MagicMock(task_id=TEST_TASK_UUID, task_name=TEST_TASK_NAME) + mock.ready.return_value = False + tr = DeleteTaskResult.objects.create(mock, TEST_TASK_NAME) + self.assertFalse(tr.is_finished) + mymock = asyncres(TEST_TASK_UUID) + mymock.ready.return_value = True + mymock.state = 'SUCCESS' + mymock.result = TEST_RESULT + tr.update_taskstatus() + mymock.ready.assert_called_with() + self.assertTrue(tr.is_finished) + + +TEST_RESULT = MagicMock() +TEST_RESULT.task_id = TEST_TASK_UUID +TEST_RESULT.task_name = TEST_TASK_NAME +TEST_RESULT.ready.return_value = False + + +class TaskResultManagerTest(TestCase): + def test_create(self): + tr = DeleteTaskResult.objects.create(TEST_RESULT, TEST_TASK_NAME) + self.assertIsInstance(tr, DeleteTaskResult) + self.assertEqual(tr.task_uuid, TEST_TASK_UUID) + self.assertEqual(tr.task_name, TEST_TASK_NAME) + + class UserTest(TestCaseWithCeleryTasks): pass