@@ -2311,177 +2311,195 @@ class rfc8989EligibilityTests(TestCase):
23112311
23122312 def setUp (self ):
23132313 super ().setUp ()
2314- self .nomcom = NomComFactory (group__acronym = 'nomcom2021' , populate_personnel = False , first_call_for_volunteers = datetime .date (2021 ,5 ,15 ))
2314+ self .nomcoms = list ()
2315+ self .nomcoms .append (NomComFactory (group__acronym = 'nomcom2021' , populate_personnel = False , first_call_for_volunteers = datetime .date (2021 ,5 ,15 )))
2316+ self .nomcoms .append (NomComFactory (group__acronym = 'nomcom2022' , populate_personnel = False , first_call_for_volunteers = datetime .date (2022 ,5 ,15 )))
23152317 # make_immutable_test_data makes things this test does not want
23162318 Role .objects .filter (name_id__in = ('chair' ,'secr' )).delete ()
23172319
23182320 def test_elig_by_meetings (self ):
23192321
23202322 meetings = [MeetingFactory (number = number , date = date , type_id = 'ietf' ) for number ,date in [
2323+ ('112' , datetime .date (2021 , 11 , 8 )),
2324+ ('111' , datetime .date (2021 , 7 , 26 )),
23212325 ('110' , datetime .date (2021 , 3 , 6 )),
23222326 ('109' , datetime .date (2020 , 11 , 14 )),
23232327 ('108' , datetime .date (2020 , 7 , 25 )),
23242328 ('107' , datetime .date (2020 , 3 , 21 )),
23252329 ('106' , datetime .date (2019 , 11 , 16 )),
23262330 ]]
23272331
2328- eligible_people = list ()
2329- ineligible_people = list ()
2332+ for nomcom in self .nomcoms :
2333+ eligible_people = list ()
2334+ ineligible_people = list ()
23302335
2331- for combo_len in range (0 ,6 ):
2332- for combo in combinations (meetings ,combo_len ):
2333- p = PersonFactory ()
2334- for m in combo :
2335- MeetingRegistrationFactory (person = p , meeting = m )
2336- if combo_len < 3 :
2337- ineligible_people .append (p )
2338- else :
2339- eligible_people .append (p )
2336+ prev_five = meetings [2 :] if nomcom .group .acronym == 'nomcom2021' else meetings [:5 ]
2337+ for combo_len in range (0 ,6 ):
2338+ for combo in combinations (prev_five ,combo_len ):
2339+ p = PersonFactory ()
2340+ for m in combo :
2341+ MeetingRegistrationFactory (person = p , meeting = m )
2342+ if combo_len < 3 :
2343+ ineligible_people .append (p )
2344+ else :
2345+ eligible_people .append (p )
23402346
2341- self .assertEqual (set (eligible_people ),set (list_eligible (self . nomcom )))
2347+ self .assertEqual (set (eligible_people ),set (list_eligible (nomcom )))
23422348
2343- for person in eligible_people :
2344- self .assertTrue (is_eligible (person ,self .nomcom ))
2349+ for person in eligible_people :
2350+ self .assertTrue (is_eligible (person ,nomcom ))
2351+
2352+ for person in ineligible_people :
2353+ self .assertFalse (is_eligible (person ,nomcom ))
2354+
2355+ Person .objects .filter (pk__in = [p .pk for p in eligible_people + ineligible_people ]).delete ()
23452356
2346- for person in ineligible_people :
2347- self .assertFalse (is_eligible (person ,self .nomcom ))
23482357
23492358 def test_elig_by_office_active_groups (self ):
23502359
2351- before_elig_date = self .nomcom .first_call_for_volunteers - datetime .timedelta (days = 5 )
2360+ nobody = PersonFactory ()
2361+ for nomcom in self .nomcoms :
2362+ before_elig_date = nomcom .first_call_for_volunteers - datetime .timedelta (days = 5 )
23522363
2353- chair = RoleFactory (name_id = 'chair' ,group__time = before_elig_date ).person
2364+ chair = RoleFactory (name_id = 'chair' ,group__time = before_elig_date ).person
23542365
2355- secr = RoleFactory (name_id = 'secr' ,group__time = before_elig_date ).person
2366+ secr = RoleFactory (name_id = 'secr' ,group__time = before_elig_date ).person
23562367
2357- nobody = PersonFactory ()
23582368
2359- self .assertTrue (is_eligible (person = chair ,nomcom = self . nomcom ))
2360- self .assertTrue (is_eligible (person = secr ,nomcom = self . nomcom ))
2361- self .assertFalse (is_eligible (person = nobody ,nomcom = self . nomcom ))
2369+ self .assertTrue (is_eligible (person = chair ,nomcom = nomcom ))
2370+ self .assertTrue (is_eligible (person = secr ,nomcom = nomcom ))
2371+ self .assertFalse (is_eligible (person = nobody ,nomcom = nomcom ))
23622372
2363- self .assertEqual (set ([chair ,secr ]), set (list_eligible (nomcom = self .nomcom )))
2373+ self .assertEqual (set ([chair ,secr ]), set (list_eligible (nomcom = nomcom )))
2374+ Role .objects .filter (person__in = (chair ,secr )).delete ()
23642375
23652376
23662377 def test_elig_by_office_edge (self ):
23672378
2368- elig_date = get_eligibility_date (self .nomcom )
2369- day_after = elig_date + datetime .timedelta (days = 1 )
2370- two_days_after = elig_date + datetime .timedelta (days = 2 )
2379+ for nomcom in self .nomcoms :
2380+ elig_date = get_eligibility_date (nomcom )
2381+ day_after = elig_date + datetime .timedelta (days = 1 )
2382+ two_days_after = elig_date + datetime .timedelta (days = 2 )
23712383
2372- group = GroupFactory (time = two_days_after )
2373- GroupHistoryFactory (group = group ,time = day_after )
2384+ group = GroupFactory (time = two_days_after )
2385+ GroupHistoryFactory (group = group ,time = day_after )
23742386
2375- after_chair = RoleFactory (name_id = 'chair' ,group = group ).person
2387+ after_chair = RoleFactory (name_id = 'chair' ,group = group ).person
23762388
2377- self .assertFalse (is_eligible (person = after_chair ,nomcom = self . nomcom ))
2389+ self .assertFalse (is_eligible (person = after_chair ,nomcom = nomcom ))
23782390
23792391
23802392 def test_elig_by_office_closed_groups (self ):
23812393
2382- elig_date = get_eligibility_date (self .nomcom )
2383- day_before = elig_date - datetime .timedelta (days = 1 )
2384- year_before = datetime .date (elig_date .year - 1 ,elig_date .month ,elig_date .day )
2385- three_years_before = datetime .date (elig_date .year - 3 ,elig_date .month ,elig_date .day )
2386- just_after_three_years_before = three_years_before + datetime .timedelta (days = 1 )
2387- just_before_three_years_before = three_years_before - datetime .timedelta (days = 1 )
2394+ for nomcom in self .nomcoms :
2395+ elig_date = get_eligibility_date (nomcom )
2396+ day_before = elig_date - datetime .timedelta (days = 1 )
2397+ year_before = datetime .date (elig_date .year - 1 ,elig_date .month ,elig_date .day )
2398+ three_years_before = datetime .date (elig_date .year - 3 ,elig_date .month ,elig_date .day )
2399+ just_after_three_years_before = three_years_before + datetime .timedelta (days = 1 )
2400+ just_before_three_years_before = three_years_before - datetime .timedelta (days = 1 )
23882401
2389- eligible = list ()
2390- ineligible = list ()
2402+ eligible = list ()
2403+ ineligible = list ()
23912404
2392- p1 = RoleHistoryFactory (
2393- name_id = 'chair' ,
2394- group__time = day_before ,
2395- group__group__state_id = 'conclude' ,
2396- ).person
2397- eligible .append (p1 )
2405+ p1 = RoleHistoryFactory (
2406+ name_id = 'chair' ,
2407+ group__time = day_before ,
2408+ group__group__state_id = 'conclude' ,
2409+ ).person
2410+ eligible .append (p1 )
23982411
2399- p2 = RoleHistoryFactory (
2400- name_id = 'secr' ,
2401- group__time = year_before ,
2402- group__group__state_id = 'conclude' ,
2403- ).person
2404- eligible .append (p2 )
2412+ p2 = RoleHistoryFactory (
2413+ name_id = 'secr' ,
2414+ group__time = year_before ,
2415+ group__group__state_id = 'conclude' ,
2416+ ).person
2417+ eligible .append (p2 )
24052418
2406- p3 = RoleHistoryFactory (
2407- name_id = 'secr' ,
2408- group__time = just_after_three_years_before ,
2409- group__group__state_id = 'conclude' ,
2410- ).person
2411- eligible .append (p3 )
2419+ p3 = RoleHistoryFactory (
2420+ name_id = 'secr' ,
2421+ group__time = just_after_three_years_before ,
2422+ group__group__state_id = 'conclude' ,
2423+ ).person
2424+ eligible .append (p3 )
24122425
2413- p4 = RoleHistoryFactory (
2414- name_id = 'chair' ,
2415- group__time = three_years_before ,
2416- group__group__state_id = 'conclude' ,
2417- ).person
2418- eligible .append (p4 )
2426+ p4 = RoleHistoryFactory (
2427+ name_id = 'chair' ,
2428+ group__time = three_years_before ,
2429+ group__group__state_id = 'conclude' ,
2430+ ).person
2431+ eligible .append (p4 )
24192432
2420- p5 = RoleHistoryFactory (
2421- name_id = 'chair' ,
2422- group__time = just_before_three_years_before ,
2423- group__group__state_id = 'conclude' ,
2424- ).person
2425- ineligible .append (p5 )
2433+ p5 = RoleHistoryFactory (
2434+ name_id = 'chair' ,
2435+ group__time = just_before_three_years_before ,
2436+ group__group__state_id = 'conclude' ,
2437+ ).person
2438+ ineligible .append (p5 )
24262439
2427- for person in eligible :
2428- self .assertTrue (is_eligible (person ,self . nomcom ))
2440+ for person in eligible :
2441+ self .assertTrue (is_eligible (person ,nomcom ))
24292442
2430- for person in ineligible :
2431- self .assertFalse (is_eligible (person ,self . nomcom ))
2443+ for person in ineligible :
2444+ self .assertFalse (is_eligible (person ,nomcom ))
24322445
2433- self .assertEqual (set (list_eligible (nomcom = self . nomcom )),set (eligible ))
2446+ self .assertEqual (set (list_eligible (nomcom = nomcom )),set (eligible ))
24342447
2448+ Person .objects .filter (pk__in = [p .pk for p in eligible + ineligible ]).delete ()
24352449
2436- def test_elig_by_author (self ):
24372450
2438- elig_date = get_eligibility_date (self .nomcom )
2439-
2440- last_date = elig_date
2441- first_date = datetime .date (last_date .year - 5 ,last_date .month ,last_date .day )
2442- day_after_last_date = last_date + datetime .timedelta (days = 1 )
2443- day_before_first_date = first_date - datetime .timedelta (days = 1 )
2444- middle_date = datetime .date (last_date .year - 3 ,last_date .month ,last_date .day )
2445-
2446- eligible = set ()
2447- ineligible = set ()
2448-
2449- p = PersonFactory ()
2450- ineligible .add (p )
2451-
2452- p = PersonFactory ()
2453- da = WgDocumentAuthorFactory (person = p )
2454- DocEventFactory (type = 'published_rfc' ,doc = da .document ,time = middle_date )
2455- ineligible .add (p )
2456-
2457- p = PersonFactory ()
2458- da = WgDocumentAuthorFactory (person = p )
2459- DocEventFactory (type = 'iesg_approved' ,doc = da .document ,time = last_date )
2460- da = WgDocumentAuthorFactory (person = p )
2461- DocEventFactory (type = 'published_rfc' ,doc = da .document ,time = first_date )
2462- eligible .add (p )
2463-
2464- p = PersonFactory ()
2465- da = WgDocumentAuthorFactory (person = p )
2466- DocEventFactory (type = 'iesg_approved' ,doc = da .document ,time = middle_date )
2467- da = WgDocumentAuthorFactory (person = p )
2468- DocEventFactory (type = 'published_rfc' ,doc = da .document ,time = day_before_first_date )
2469- ineligible .add (p )
2470-
2471- p = PersonFactory ()
2472- da = WgDocumentAuthorFactory (person = p )
2473- DocEventFactory (type = 'iesg_approved' ,doc = da .document ,time = day_after_last_date )
2474- da = WgDocumentAuthorFactory (person = p )
2475- DocEventFactory (type = 'published_rfc' ,doc = da .document ,time = middle_date )
2476- ineligible .add (p )
2477-
2478- for person in eligible :
2479- self .assertTrue (is_eligible (person ,self .nomcom ))
24802451
2481- for person in ineligible :
2482- self .assertFalse (is_eligible (person ,self .nomcom ))
2452+ def test_elig_by_author (self ):
24832453
2484- self .assertEqual (set (list_eligible (nomcom = self .nomcom )),set (eligible ))
2454+ for nomcom in self .nomcoms :
2455+ elig_date = get_eligibility_date (nomcom )
2456+
2457+ last_date = elig_date
2458+ first_date = datetime .date (last_date .year - 5 ,last_date .month ,last_date .day )
2459+ day_after_last_date = last_date + datetime .timedelta (days = 1 )
2460+ day_before_first_date = first_date - datetime .timedelta (days = 1 )
2461+ middle_date = datetime .date (last_date .year - 3 ,last_date .month ,last_date .day )
2462+
2463+ eligible = set ()
2464+ ineligible = set ()
2465+
2466+ p = PersonFactory ()
2467+ ineligible .add (p )
2468+
2469+ p = PersonFactory ()
2470+ da = WgDocumentAuthorFactory (person = p )
2471+ DocEventFactory (type = 'published_rfc' ,doc = da .document ,time = middle_date )
2472+ ineligible .add (p )
2473+
2474+ p = PersonFactory ()
2475+ da = WgDocumentAuthorFactory (person = p )
2476+ DocEventFactory (type = 'iesg_approved' ,doc = da .document ,time = last_date )
2477+ da = WgDocumentAuthorFactory (person = p )
2478+ DocEventFactory (type = 'published_rfc' ,doc = da .document ,time = first_date )
2479+ eligible .add (p )
2480+
2481+ p = PersonFactory ()
2482+ da = WgDocumentAuthorFactory (person = p )
2483+ DocEventFactory (type = 'iesg_approved' ,doc = da .document ,time = middle_date )
2484+ da = WgDocumentAuthorFactory (person = p )
2485+ DocEventFactory (type = 'published_rfc' ,doc = da .document ,time = day_before_first_date )
2486+ ineligible .add (p )
2487+
2488+ p = PersonFactory ()
2489+ da = WgDocumentAuthorFactory (person = p )
2490+ DocEventFactory (type = 'iesg_approved' ,doc = da .document ,time = day_after_last_date )
2491+ da = WgDocumentAuthorFactory (person = p )
2492+ DocEventFactory (type = 'published_rfc' ,doc = da .document ,time = middle_date )
2493+ ineligible .add (p )
2494+
2495+ for person in eligible :
2496+ self .assertTrue (is_eligible (person ,nomcom ))
2497+
2498+ for person in ineligible :
2499+ self .assertFalse (is_eligible (person ,nomcom ))
2500+
2501+ self .assertEqual (set (list_eligible (nomcom = nomcom )),set (eligible ))
2502+ Person .objects .filter (pk__in = [p .pk for p in eligible .union (ineligible )]).delete ()
24852503
24862504class VolunteerTests (TestCase ):
24872505
0 commit comments