Skip to content

Commit 7a04d04

Browse files
committed
fix: resolve CI test failures
1 parent 355db0e commit 7a04d04

3 files changed

Lines changed: 27 additions & 7 deletions

File tree

spp_api_v2/tests/test_oauth.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,11 @@ def test_token_generation_basic_auth(self):
224224
"""HTTP Basic Auth header returns access token"""
225225
credentials = base64.b64encode(f"{self.client.client_id}:{self.client.client_secret}".encode()).decode("utf-8")
226226

227+
body = urlencode({"grant_type": "client_credentials"})
228+
227229
response = self.url_open(
228230
self.url,
229-
data="",
231+
data=body,
230232
headers={
231233
"Content-Type": "application/x-www-form-urlencoded",
232234
"Authorization": f"Basic {credentials}",

spp_dci_server/tests/test_transaction.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import json
55
from unittest.mock import MagicMock, patch
66

7+
from psycopg2 import IntegrityError
8+
79
from odoo.exceptions import ValidationError
810
from odoo.tests import tagged
911

@@ -72,7 +74,9 @@ def test_transaction_uniqueness_per_sender(self):
7274
)
7375

7476
# Same transaction_id, same sender - should fail
75-
with self.assertRaises(ValidationError):
77+
# SQL UNIQUE constraint raises IntegrityError, use cr.savepoint()
78+
# to avoid breaking the test transaction
79+
with self.assertRaises(IntegrityError), self.cr.savepoint():
7680
self.Transaction.create(
7781
{
7882
"transaction_id": "unique-txn-001",
@@ -81,6 +85,7 @@ def test_transaction_uniqueness_per_sender(self):
8185
"sender_uri": self.test_sender_id,
8286
}
8387
)
88+
self.cr.flush()
8489

8590
def test_transaction_same_id_different_sender_allowed(self):
8691
"""Test that same transaction_id is allowed for different senders."""

spp_mis_demo_v2/tests/test_demo_programs.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)