def test_execute_operation_calls_timeout_if_not_connected(self):
     # Given an operation with a non-connected context
     task = mock.Mock()
     timeout_task = mock.Mock()
     operations_queue = OperationsQueue(self.mock_service_provider)
     operation = QueuedOperation(self.expected_context_key, task,
                                 timeout_task)
     operation.context = ConnectionContext(self.expected_context_key)
     # When I execute the operation
     operations_queue.execute_operation(operation)
     # Then I expect the timeout task to be called
     timeout_task.assert_called_once()
     # ... and I do not expect the regular task to be called
     task.assert_not_called()
 def test_execute_operation_calls_task_and_timouttask_if_task_fails(self):
     # Given an operation where the task will fail (return false)
     context = ConnectionContext(self.expected_context_key)
     context.is_connected = True
     context.completer = mock.Mock()
     task = mock.MagicMock(return_value=False)
     timeout_task = mock.Mock()
     operations_queue = OperationsQueue(self.mock_service_provider)
     operation = QueuedOperation(self.expected_context_key, task,
                                 timeout_task)
     operation.context = context
     # When I execute the operation
     operations_queue.execute_operation(operation)
     # Then I expect the regular task to be called
     task.assert_called_once()
     actual_context = task.call_args[0][0]
     self.assertEqual(actual_context, context)
     # ... and I also expect the timeout task to be called
     timeout_task.assert_called_once()
 def test_execute_operation_ignores_none_param(self):
     operations_queue = OperationsQueue(self.mock_service_provider)
     try:
         operations_queue.execute_operation(None)
     except Exception as e:
         self.fail(e)