1- import copy
21import uuid
32
43from django .core .exceptions import ValidationError
1211 BeneficiaryProjectTimeEntry ,
1312 BeneficiaryProjectEnrollment
1413)
15- from social_protection .services import BeneficiaryService , ProjectEnrollmentService
14+ from social_protection .services import (
15+ BeneficiaryService , ProjectEnrollmentService
16+ )
1617from social_protection .tests .data import (
1718 service_beneficiary_add_payload ,
1819 service_beneficiary_update_status_active_payload
@@ -38,27 +39,38 @@ def setUpClass(cls):
3839 cls .user = LogInHelper ().get_or_create_user_api ()
3940 cls .service = BeneficiaryService (cls .user )
4041 cls .query_all = Beneficiary .objects .filter (is_deleted = False )
41- cls .benefit_plan = create_benefit_plan (cls .user .username , payload_override = {
42- 'code' : 'IMAX1' ,
43- 'type' : "INDIVIDUAL" ,
44- 'max_beneficiaries' : 1
45- })
42+ cls .benefit_plan = create_benefit_plan (
43+ cls .user .username , payload_override = {
44+ 'code' : 'IMAX1' ,
45+ 'type' : "INDIVIDUAL" ,
46+ 'max_beneficiaries' : 1
47+ }
48+ )
4649
47- cls .benefit_plan_no_max = create_benefit_plan (cls .user .username , payload_override = {
48- 'code' : 'INOMAX' ,
49- 'type' : "INDIVIDUAL" ,
50- 'max_beneficiaries' : None
51- })
50+ cls .benefit_plan_no_max = create_benefit_plan (
51+ cls .user .username , payload_override = {
52+ 'code' : 'INOMAX' ,
53+ 'type' : "INDIVIDUAL" ,
54+ 'max_beneficiaries' : None
55+ }
56+ )
5257
5358 cls .individual = create_individual (cls .user .username )
54- cls .individual2 = create_individual (cls .user .username , payload_override = {
55- 'first_name' : "Second"
56- })
57- cls .individual3 = create_individual (cls .user .username , payload_override = {
58- 'first_name' : "Third"
59- })
59+ cls .individual2 = create_individual (
60+ cls .user .username , payload_override = {
61+ 'first_name' : "Second"
62+ }
63+ )
64+ cls .individual3 = create_individual (
65+ cls .user .username , payload_override = {
66+ 'first_name' : "Third"
67+ }
68+ )
6069
61- def add_beneficiary_return_result (self , individual : Individual , benefit_plan : BenefitPlan = None , status = "POTENTIAL" ):
70+ def add_beneficiary_return_result (
71+ self , individual : Individual ,
72+ benefit_plan : BenefitPlan = None , status = "POTENTIAL"
73+ ):
6274 benefit_plan = benefit_plan or self .benefit_plan
6375 payload = {
6476 ** service_beneficiary_add_payload ,
@@ -69,9 +81,17 @@ def add_beneficiary_return_result(self, individual: Individual, benefit_plan: Be
6981 result = self .service .create (payload )
7082 return result
7183
72- def add_beneficiary_return_uuid (self , individual : Individual , benefit_plan : BenefitPlan = None , status = "POTENTIAL" ):
73- result = self .add_beneficiary_return_result (individual , benefit_plan , status )
74- self .assertTrue (result .get ('success' , False ), result .get ('detail' , "No details provided" ))
84+ def add_beneficiary_return_uuid (
85+ self , individual : Individual ,
86+ benefit_plan : BenefitPlan = None , status = "POTENTIAL"
87+ ):
88+ result = self .add_beneficiary_return_result (
89+ individual , benefit_plan , status
90+ )
91+ self .assertTrue (
92+ result .get ('success' , False ),
93+ result .get ('detail' , "No details provided" )
94+ )
7595 return result .get ('data' , {}).get ('uuid' )
7696
7797 def check_beneficiary_exists (self , uuid , with_status = None ):
@@ -80,31 +100,59 @@ def check_beneficiary_exists(self, uuid, with_status=None):
80100 if with_status :
81101 self .assertEqual (query .first ().status , with_status )
82102
83- def check_active_beneficiaries_count_eq (self , count , benefit_plan , msg = None ):
84- active_beneficiaries = self .query_all .filter (benefit_plan_id = benefit_plan .id , status = "ACTIVE" ).distinct ()
103+ def check_active_beneficiaries_count_eq (
104+ self , count , benefit_plan , msg = None
105+ ):
106+ active_beneficiaries = self .query_all .filter (
107+ benefit_plan_id = benefit_plan .id , status = "ACTIVE"
108+ ).distinct ()
85109 self .assertEqual (active_beneficiaries .count (), count , msg )
86110
87111 def test_add_beneficiary (self ):
88- uuid = self .add_beneficiary_return_uuid (self .individual , self .benefit_plan , status = "POTENTIAL" )
112+ uuid = self .add_beneficiary_return_uuid (
113+ self .individual , self .benefit_plan , status = "POTENTIAL"
114+ )
89115 self .check_beneficiary_exists (uuid , with_status = "POTENTIAL" )
90116
91117 self .assertEqual (self .benefit_plan .max_beneficiaries , 1 )
92118
93- uuid = self .add_beneficiary_return_uuid (self .individual2 , self .benefit_plan , status = "ACTIVE" )
119+ uuid = self .add_beneficiary_return_uuid (
120+ self .individual2 , self .benefit_plan , status = "ACTIVE"
121+ )
94122 self .check_beneficiary_exists (uuid , with_status = "ACTIVE" )
95- self .check_active_beneficiaries_count_eq (1 , self .benefit_plan , "One active beneficiary should have been added" )
123+ self .check_active_beneficiaries_count_eq (
124+ 1 , self .benefit_plan ,
125+ "One active beneficiary should have been added"
126+ )
96127
97- result = self .add_beneficiary_return_result (self .individual3 , self .benefit_plan , status = "ACTIVE" )
98- self .assertFalse (result .get ('success' , True ), "Benefit plan's 'max active beneficiaries' was not enforced" )
99- self .assertEqual (self .query_all .filter (individual__first_name = self .individual3 .first_name ).count (), 0 )
100- self .check_active_beneficiaries_count_eq (1 , self .benefit_plan , "Second active beneficiary creation should have been blocked" )
128+ result = self .add_beneficiary_return_result (
129+ self .individual3 , self .benefit_plan , status = "ACTIVE"
130+ )
131+ self .assertFalse (
132+ result .get ('success' , True ),
133+ "Benefit plan's 'max active beneficiaries' was not enforced"
134+ )
135+ self .assertEqual (
136+ self .query_all .filter (
137+ individual__first_name = self .individual3 .first_name
138+ ).count (), 0
139+ )
140+ self .check_active_beneficiaries_count_eq (
141+ 1 , self .benefit_plan ,
142+ "Second active beneficiary creation should have been blocked"
143+ )
101144
102145 self .assertEqual (self .benefit_plan_no_max .max_beneficiaries , None )
103146
104147 for i , individual in enumerate ([self .individual , self .individual2 ]):
105- uuid = self .add_beneficiary_return_uuid (individual , self .benefit_plan_no_max , status = "ACTIVE" )
148+ uuid = self .add_beneficiary_return_uuid (
149+ individual , self .benefit_plan_no_max , status = "ACTIVE"
150+ )
106151 self .check_beneficiary_exists (uuid , with_status = "ACTIVE" )
107- self .check_active_beneficiaries_count_eq (i + 1 , self .benefit_plan_no_max , f"{ i + 1 } beneficiaries should be added and active" )
152+ self .check_active_beneficiaries_count_eq (
153+ i + 1 , self .benefit_plan_no_max ,
154+ f"{ i + 1 } beneficiaries should be added and active"
155+ )
108156
109157 def test_update_beneficiary (self ):
110158 def create_and_update_to_active (individual , benefit_plan ):
@@ -119,29 +167,56 @@ def create_and_update_to_active(individual, benefit_plan):
119167
120168 self .assertEqual (self .benefit_plan .max_beneficiaries , 1 )
121169
122- result , uuid = create_and_update_to_active (self .individual , self .benefit_plan )
123- self .assertTrue (result .get ('success' , False ), result .get ('detail' , "No details provided" ))
170+ result , uuid = create_and_update_to_active (
171+ self .individual , self .benefit_plan
172+ )
173+ self .assertTrue (
174+ result .get ('success' , False ),
175+ result .get ('detail' , "No details provided" )
176+ )
124177 self .check_beneficiary_exists (uuid , with_status = "ACTIVE" )
125- self .check_active_beneficiaries_count_eq (1 , self .benefit_plan , "One active beneficiary should have been added" )
178+ self .check_active_beneficiaries_count_eq (
179+ 1 , self .benefit_plan ,
180+ "One active beneficiary should have been added"
181+ )
126182
127- result , uuid = create_and_update_to_active (self .individual , self .benefit_plan )
128- self .assertFalse (result .get ('success' , True ), "Benefit plan's 'max active beneficiaries' was not enforced" )
183+ result , uuid = create_and_update_to_active (
184+ self .individual , self .benefit_plan
185+ )
186+ self .assertFalse (
187+ result .get ('success' , True ),
188+ "Benefit plan's 'max active beneficiaries' was not enforced"
189+ )
129190 self .check_beneficiary_exists (uuid , with_status = "POTENTIAL" )
130- self .check_active_beneficiaries_count_eq (1 , self .benefit_plan , "Second active beneficiary update should have been blocked" )
191+ self .check_active_beneficiaries_count_eq (
192+ 1 , self .benefit_plan ,
193+ "Second active beneficiary update should have been blocked"
194+ )
131195
132196 self .assertEqual (self .benefit_plan_no_max .max_beneficiaries , None )
133197
134198 for i , individual in enumerate ([self .individual , self .individual2 ]):
135- result , uuid = create_and_update_to_active (individual , self .benefit_plan_no_max )
136- self .assertTrue (result .get ('success' , False ), result .get ('detail' , "No details provided" ))
199+ result , uuid = create_and_update_to_active (
200+ individual , self .benefit_plan_no_max
201+ )
202+ self .assertTrue (
203+ result .get ('success' , False ),
204+ result .get ('detail' , "No details provided" )
205+ )
137206 self .check_beneficiary_exists (uuid , "ACTIVE" )
138- self .check_active_beneficiaries_count_eq (i + 1 , self .benefit_plan_no_max , f"{ i + 1 } beneficiaries should be added and active" )
207+ self .check_active_beneficiaries_count_eq (
208+ i + 1 , self .benefit_plan_no_max ,
209+ f"{ i + 1 } beneficiaries should be added and active"
210+ )
139211
140212 def test_delete_beneficiary (self ):
141213 uuid = self .add_beneficiary_return_uuid (self .individual )
142214 delete_payload = {'id' : uuid }
143215 result = self .service .delete (delete_payload )
144- self .assertTrue (result .get ('success' , False ), result .get ('detail' , "No details provided" ))
216+ self .assertTrue (
217+ result .get ('success' , False ),
218+ result .get ('detail' , "No details provided" )
219+ )
145220 query = self .query_all .filter (uuid = uuid )
146221 self .assertEqual (query .count (), 0 )
147222
@@ -159,7 +234,9 @@ def test_enroll_project(self):
159234 self .user .username ,
160235 )
161236
162- enrollment_service = ProjectEnrollmentService (self .user , ProjectEnrollmentService .INDIVIDUAL )
237+ enrollment_service = ProjectEnrollmentService (
238+ self .user , ProjectEnrollmentService .INDIVIDUAL
239+ )
163240
164241 payload = {
165242 'ids' : [uuid1 , uuid2 ],
@@ -168,13 +245,16 @@ def test_enroll_project(self):
168245
169246 enrollment_service .enroll_project (payload )
170247
171- # Check that both beneficiaries are enrolled into the test project via enrollment records
248+ # Check that both beneficiaries are enrolled into the test project
249+ # via enrollment records
172250 enrollments = BeneficiaryProjectEnrollment .objects .filter (
173251 project_id = project .id ,
174252 is_deleted = False
175253 )
176254 self .assertEqual (enrollments .count (), 2 )
177- enrolled_beneficiary_ids = set (str (e .beneficiary_id ) for e in enrollments )
255+ enrolled_beneficiary_ids = set (
256+ str (e .beneficiary_id ) for e in enrollments
257+ )
178258 self .assertEqual (enrolled_beneficiary_ids , {uuid1 , uuid2 })
179259
180260 payload = {
@@ -184,7 +264,8 @@ def test_enroll_project(self):
184264
185265 enrollment_service .enroll_project (payload )
186266
187- # Check that only the first beneficiary is enrolled into the test project
267+ # Check that only the first beneficiary is enrolled into the test
268+ # project
188269 enrollments = BeneficiaryProjectEnrollment .objects .filter (
189270 project_id = project .id ,
190271 is_deleted = False
@@ -193,7 +274,8 @@ def test_enroll_project(self):
193274 enrollment = enrollments .first ()
194275 self .assertEqual (str (enrollment .beneficiary_id ), uuid1 )
195276
196- # Verify enrolling in another non-exclusive project doesn't unenroll from the first
277+ # Verify enrolling in another non-exclusive project doesn't unenroll
278+ # from the first
197279 project2 = create_project (
198280 'second non-exclusive project' ,
199281 self .benefit_plan_no_max ,
@@ -220,7 +302,7 @@ def test_enroll_project(self):
220302
221303
222304class BeneficiaryTimeEntryServiceTest (TestCase ):
223- """Test ProjectEnrollmentService. bulk_update_time_entries for INDIVIDUAL type"""
305+ """Test bulk_update_time_entries for INDIVIDUAL type"""
224306
225307 @classmethod
226308 def setUpClass (cls ):
@@ -238,8 +320,12 @@ def setUpClass(cls):
238320 cls .project .working_days = 10
239321 cls .project .save (user = cls .user )
240322
241- cls .individual1 = create_individual (cls .user .username , {'first_name' : 'Alice' })
242- cls .individual2 = create_individual (cls .user .username , {'first_name' : 'Bob' })
323+ cls .individual1 = create_individual (
324+ cls .user .username , {'first_name' : 'Alice' }
325+ )
326+ cls .individual2 = create_individual (
327+ cls .user .username , {'first_name' : 'Bob' }
328+ )
243329
244330 beneficiary_service = BeneficiaryService (cls .user )
245331
@@ -271,9 +357,9 @@ def setUpClass(cls):
271357 )
272358 cls .enrollment2 .save (user = cls .user )
273359
274- cls .service = ProjectEnrollmentService (cls . user , ProjectEnrollmentService . INDIVIDUAL )
275-
276-
360+ cls .service = ProjectEnrollmentService (
361+ cls . user , ProjectEnrollmentService . INDIVIDUAL
362+ )
277363
278364 def test_create_time_entries (self ):
279365 obj_data = {
@@ -373,7 +459,9 @@ def test_day_number_out_of_range(self):
373459 with self .assertRaises (ValidationError ) as context :
374460 self .service .bulk_update_time_entries (obj_data )
375461
376- self .assertIn ('Day number must be between 1 and 10.' , str (context .exception ))
462+ self .assertIn (
463+ 'Day number must be between 1 and 10.' , str (context .exception )
464+ )
377465
378466 def test_empty_time_entries (self ):
379467 obj_data = {
0 commit comments