1
+ from datetime import date , datetime , timezone
1
2
from unittest .mock import AsyncMock , patch
2
3
3
- from admin . summary_handler import applicant_summary
4
+ from admin import summary_handler
4
5
5
6
6
7
@patch ("services.mongodb_handler.retrieve" , autospec = True )
@@ -12,7 +13,8 @@ async def test_applicant_summary(mock_mongodb_handler_retrieve: AsyncMock) -> No
12
13
+ [{"status" : "WAITLISTED" }, {"status" : "WAIVER_SIGNED" }] * 3
13
14
)
14
15
15
- summary = await applicant_summary ()
16
+ summary = await summary_handler .applicant_summary ()
17
+
16
18
mock_mongodb_handler_retrieve .assert_awaited_once ()
17
19
assert dict (summary ) == {
18
20
"REJECTED" : 20 ,
@@ -21,3 +23,80 @@ async def test_applicant_summary(mock_mongodb_handler_retrieve: AsyncMock) -> No
21
23
"WAIVER_SIGNED" : 3 ,
22
24
"CONFIRMED" : 24 ,
23
25
}
26
+
27
+
28
+ @patch ("services.mongodb_handler.retrieve" , autospec = True )
29
+ async def test_applications_by_school (mock_mongodb_handler_retrieve : AsyncMock ) -> None :
30
+ """Daily number of applications are grouped by school."""
31
+ mock_mongodb_handler_retrieve .return_value = [
32
+ {
33
+ "application_data" : {
34
+ "school" : "UC Irvine" ,
35
+ "submission_time" : datetime (1965 , 10 , 4 , 20 , 2 , 4 , tzinfo = timezone .utc ),
36
+ },
37
+ },
38
+ {
39
+ "application_data" : {
40
+ "school" : "UC Irvine" ,
41
+ "submission_time" : datetime (
42
+ 1965 , 10 , 4 , 20 , 15 , 26 , tzinfo = timezone .utc
43
+ ),
44
+ },
45
+ },
46
+ {
47
+ "application_data" : {
48
+ "school" : "Cal State Long Beach" ,
49
+ "submission_time" : datetime (
50
+ 2024 , 12 , 17 , 18 , 4 , 11 , tzinfo = timezone .utc
51
+ ),
52
+ },
53
+ },
54
+ ]
55
+
56
+ applications = await summary_handler .applications_by_school ()
57
+
58
+ mock_mongodb_handler_retrieve .assert_awaited_once ()
59
+ assert applications == {
60
+ "UC Irvine" : {date (1965 , 10 , 4 ): 2 },
61
+ "Cal State Long Beach" : {date (2024 , 12 , 17 ): 1 },
62
+ }
63
+
64
+
65
+ @patch ("services.mongodb_handler.retrieve" , autospec = True )
66
+ async def test_applications_by_role (mock_mongodb_handler_retrieve : AsyncMock ) -> None :
67
+ """Daily number of applications are grouped by role."""
68
+ mock_mongodb_handler_retrieve .return_value = [
69
+ {
70
+ "roles" : ["Applicant" , "Hacker" ],
71
+ "application_data" : {
72
+ "submission_time" : datetime (
73
+ 2024 , 12 , 12 , 17 , 0 , 0 , tzinfo = timezone .utc
74
+ ),
75
+ },
76
+ },
77
+ {
78
+ "roles" : ["Applicant" , "Hacker" ],
79
+ "application_data" : {
80
+ "submission_time" : datetime (
81
+ 2024 , 12 , 12 , 19 , 0 , 0 , tzinfo = timezone .utc
82
+ ),
83
+ },
84
+ },
85
+ {
86
+ "roles" : ["Applicant" , "Mentor" ],
87
+ "application_data" : {
88
+ "submission_time" : datetime (
89
+ 2024 , 12 , 14 , 18 , 0 , 0 , tzinfo = timezone .utc
90
+ ),
91
+ },
92
+ },
93
+ ]
94
+
95
+ applications = await summary_handler .applications_by_role ()
96
+
97
+ mock_mongodb_handler_retrieve .assert_awaited_once ()
98
+ assert applications == {
99
+ "Hacker" : {date (2024 , 12 , 12 ): 2 },
100
+ "Mentor" : {date (2024 , 12 , 14 ): 1 },
101
+ "Volunteer" : {},
102
+ }
0 commit comments