1+ # -*- coding: utf-8 -*-
2+ """API unit tests."""
3+
4+ import pytest
5+ from flask import Flask
6+ from api .extensions import cache
7+ from unittest .mock import patch , MagicMock
8+ from api .views import blueprint
9+
10+
11+
12+ @pytest .fixture
13+ def app ():
14+ app = Flask (__name__ )
15+ app .register_blueprint (blueprint )
16+ app .config ['TESTING' ] = True
17+ app .config ['CACHE_TYPE' ] = 'SimpleCache' # Use simple cache for testing
18+ cache .init_app (app )
19+ return app
20+
21+ @pytest .fixture
22+ def client (app ):
23+ return app .test_client ()
24+
25+ def test_index (client ):
26+ resp = client .get ("/" )
27+ assert resp .status_code == 200
28+ assert b"Template-flask-app is Running" in resp .data
29+
30+ def test_cached_time (client ):
31+ resp = client .get ("/time" )
32+ assert resp .status_code == 200
33+ data = resp .get_json ()
34+ assert "current_time" in data
35+
36+ def test_uncached_time (client ):
37+ resp = client .get ("/uncached-time" )
38+ assert resp .status_code == 200
39+ data = resp .get_json ()
40+ assert "current_time" in data
41+
42+ @patch ("api.views.create_task" )
43+ def test_run_task_with_time_param (mock_create_task , client ):
44+ mock_task = MagicMock ()
45+ mock_task .id = "fake-task-id"
46+ mock_create_task .delay .return_value = mock_task
47+
48+ resp = client .get ("/run-task?time=5" )
49+ assert resp .status_code == 200
50+ data = resp .get_json ()
51+ assert data ["task_id" ] == "fake-task-id"
52+ assert data ["status" ] == "Task submitted!"
53+ mock_create_task .delay .assert_called_with ("5" )
54+
55+ @patch ("api.views.create_task" )
56+ def test_run_task_without_time_param (mock_create_task , client ):
57+ mock_task = MagicMock ()
58+ mock_task .id = "fake-task-id"
59+ mock_create_task .delay .return_value = mock_task
60+
61+ resp = client .get ("/run-task" )
62+ assert resp .status_code == 200
63+ data = resp .get_json ()
64+ assert data ["task_id" ] == "fake-task-id"
65+ assert data ["status" ] == "Task submitted!"
66+ mock_create_task .delay .assert_called_with (10 )
0 commit comments