-
Notifications
You must be signed in to change notification settings - Fork 3
/
test_daos_home.py
41 lines (30 loc) · 1.5 KB
/
test_daos_home.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from __future__ import annotations
import unittest
from unittest.mock import patch
from app.daos.home import external_service_call
from app.exceptions import ExternalServiceException
class TestExternalServiceCall(unittest.TestCase):
@patch("app.daos.home.random")
@patch("app.daos.home.asyncio.sleep")
async def test_external_service_call_success(self, mock_sleep, mock_random):
# Mocking the random delay
mock_random.uniform.return_value = 0.5 # Mocking a fixed delay for simplicity
# Call the function
result = await external_service_call()
# Assertions
mock_sleep.assert_called_once_with(0.5) # Check if sleep is called with the correct delay
self.assertEqual(result, "Success from external service")
@patch("app.daos.home.random")
@patch("app.daos.home.asyncio.sleep")
async def test_external_service_call_failure(self, mock_sleep, mock_random):
# Mocking the random delay
mock_random.uniform.return_value = 0.5 # Mocking a fixed delay for simplicity
# Mocking random.random to always trigger failure
mock_random.random.return_value = 0.1 # Mocking a value lower than 0.2 for failure
# Call the function and expect an exception
with self.assertRaises(ExternalServiceException):
await external_service_call()
# Assertions
mock_sleep.assert_called_once_with(0.5) # Check if sleep is called with the correct delay
if __name__ == "__main__":
unittest.main()