@@ -8,6 +8,7 @@ class TestDemoPrograms(TransactionCase):
88
99 The demo programs use activated registry variables for CEL expressions:
1010 - Universal Child Grant: child_count variable
11+ - Conditional Child Grant: members.exists() for first 1,000 days
1112 - Elderly Social Pension: age + retirement_age variables
1213 - Emergency Relief Fund: dependency_ratio, is_female_headed, elderly_count
1314 - Cash Transfer Program: hh_total_income, poverty_line, hh_size
@@ -16,16 +17,17 @@ class TestDemoPrograms(TransactionCase):
1617 """
1718
1819 def test_get_all_demo_programs (self ):
19- """Test that all 6 demo programs are returned."""
20+ """Test that all 7 demo programs are returned."""
2021 from odoo .addons .spp_mis_demo_v2 .models import demo_programs
2122
2223 programs = demo_programs .get_all_demo_programs ()
2324 self .assertIsInstance (programs , list )
24- self .assertEqual (len (programs ), 6 , "Expected exactly 6 demo programs" )
25+ self .assertEqual (len (programs ), 7 , "Expected exactly 7 demo programs" )
2526
2627 # Check expected programs exist (V3 names)
2728 program_names = [p ["name" ] for p in programs ]
2829 self .assertIn ("Universal Child Grant" , program_names )
30+ self .assertIn ("Conditional Child Grant" , program_names )
2931 self .assertIn ("Elderly Social Pension" , program_names )
3032 self .assertIn ("Emergency Relief Fund" , program_names )
3133 self .assertIn ("Cash Transfer Program" , program_names )
@@ -348,8 +350,10 @@ def test_get_programs_by_pack(self):
348350 from odoo .addons .spp_mis_demo_v2 .models import demo_programs
349351
350352 programs = demo_programs .get_programs_by_pack ("child_benefit" )
351- self .assertEqual (len (programs ), 1 )
352- self .assertEqual (programs [0 ]["name" ], "Universal Child Grant" )
353+ self .assertEqual (len (programs ), 2 )
354+ program_names = [p ["name" ] for p in programs ]
355+ self .assertIn ("Universal Child Grant" , program_names )
356+ self .assertIn ("Conditional Child Grant" , program_names )
353357
354358 # Non-existent pack should return empty
355359 programs = demo_programs .get_programs_by_pack ("nonexistent" )
@@ -460,11 +464,20 @@ def test_story_program_alignment_complete(self):
460464 )
461465
462466 def test_all_programs_have_enrolled_stories (self ):
463- """Test that every demo program has at least one enrolled story."""
467+ """Test that demo programs have at least one enrolled story.
468+
469+ Conditional Child Grant is excluded: it demonstrates compliance
470+ features and members.exists() CEL patterns without persona stories.
471+ """
464472 from odoo .addons .spp_mis_demo_v2 .models import demo_programs
465473
474+ # Programs that intentionally have no story personas
475+ programs_without_stories = {"Conditional Child Grant" }
476+
466477 for program in demo_programs .get_all_demo_programs ():
467478 program_name = program ["name" ]
479+ if program_name in programs_without_stories :
480+ continue
468481 stories = program .get ("stories" , [])
469482 self .assertGreater (
470483 len (stories ),
0 commit comments