Skip to content

Commit d52e81f

Browse files
committed
fix(spp_grm,spp_mis_demo_v2): fix settings xpath and test assertions
- spp_grm: migrate res_config_settings view to Odoo 19 app/block/setting structure (old xpath //div[hasclass('settings')] no longer exists) - spp_mis_demo_v2: update test assertions for 7th program (conditional_child_grant) added in recent merge
1 parent 5bcf96b commit d52e81f

2 files changed

Lines changed: 41 additions & 52 deletions

File tree

spp_grm/views/res_config_settings_views.xml

Lines changed: 24 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,57 +4,34 @@
44
<field name="model">res.config.settings</field>
55
<field name="inherit_id" ref="base.res_config_settings_view_form" />
66
<field name="arch" type="xml">
7-
<xpath expr="//div[hasclass('settings')]" position="inside">
8-
<div
9-
class="app_settings_block"
7+
<xpath expr="//form" position="inside">
8+
<app
109
data-string="Helpdesk"
1110
string="Helpdesk"
12-
data-key="helpdesk_mgmt"
11+
name="helpdesk_mgmt"
1312
groups="helpdesk_mgmt.group_helpdesk_manager"
1413
>
15-
<h2>New ticket form (portal)</h2>
16-
<div class="row mt16 o_settings_container">
17-
<div class="col-12 col-lg-6 o_setting_box">
18-
<div class="o_setting_left_pane">
19-
<field name="helpdesk_mgmt_portal_select_team" />
20-
</div>
21-
<div class="o_setting_right_pane">
22-
<label for="helpdesk_mgmt_portal_select_team" />
23-
<div class="text-muted">Show teams form</div>
24-
</div>
25-
</div>
26-
<div class="col-12 col-lg-6 o_setting_box">
27-
<div class="o_setting_left_pane">
28-
<!-- Odoo 19: Converted attrs to individual attributes -->
29-
<field
30-
name="helpdesk_mgmt_portal_team_id_required"
31-
readonly="helpdesk_mgmt_portal_select_team == False"
32-
/>
33-
</div>
34-
<div class="o_setting_right_pane">
35-
<label
36-
for="helpdesk_mgmt_portal_team_id_required"
37-
string="Required Team"
38-
/>
39-
</div>
40-
</div>
41-
</div>
42-
<div class="row mt16 o_settings_container">
43-
<div class="col-12 col-lg-6 o_setting_box">
44-
<div class="o_setting_left_pane">
45-
<field
46-
name="helpdesk_mgmt_portal_category_id_required"
47-
/>
48-
</div>
49-
<div class="o_setting_right_pane">
50-
<label
51-
for="helpdesk_mgmt_portal_category_id_required"
52-
string="Required Category"
53-
/>
54-
</div>
55-
</div>
56-
</div>
57-
</div>
14+
<block title="New ticket form (portal)">
15+
<setting help="Show teams form">
16+
<field name="helpdesk_mgmt_portal_select_team" />
17+
</setting>
18+
<setting
19+
string="Required Team"
20+
help="Require team selection on portal tickets"
21+
>
22+
<field
23+
name="helpdesk_mgmt_portal_team_id_required"
24+
readonly="helpdesk_mgmt_portal_select_team == False"
25+
/>
26+
</setting>
27+
<setting
28+
string="Required Category"
29+
help="Require category selection on portal tickets"
30+
>
31+
<field name="helpdesk_mgmt_portal_category_id_required" />
32+
</setting>
33+
</block>
34+
</app>
5835
</xpath>
5936
</field>
6037
</record>

spp_mis_demo_v2/tests/test_demo_programs.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,17 @@ class TestDemoPrograms(TransactionCase):
1616
"""
1717

1818
def test_get_all_demo_programs(self):
19-
"""Test that all 6 demo programs are returned."""
19+
"""Test that all 7 demo programs are returned."""
2020
from odoo.addons.spp_mis_demo_v2.models import demo_programs
2121

2222
programs = demo_programs.get_all_demo_programs()
2323
self.assertIsInstance(programs, list)
24-
self.assertEqual(len(programs), 6, "Expected exactly 6 demo programs")
24+
self.assertEqual(len(programs), 7, "Expected exactly 7 demo programs")
2525

2626
# Check expected programs exist (V3 names)
2727
program_names = [p["name"] for p in programs]
2828
self.assertIn("Universal Child Grant", program_names)
29+
self.assertIn("Conditional Child Grant", program_names)
2930
self.assertIn("Elderly Social Pension", program_names)
3031
self.assertIn("Emergency Relief Fund", program_names)
3132
self.assertIn("Cash Transfer Program", program_names)
@@ -348,8 +349,10 @@ def test_get_programs_by_pack(self):
348349
from odoo.addons.spp_mis_demo_v2.models import demo_programs
349350

350351
programs = demo_programs.get_programs_by_pack("child_benefit")
351-
self.assertEqual(len(programs), 1)
352-
self.assertEqual(programs[0]["name"], "Universal Child Grant")
352+
self.assertEqual(len(programs), 2)
353+
program_names = [p["name"] for p in programs]
354+
self.assertIn("Universal Child Grant", program_names)
355+
self.assertIn("Conditional Child Grant", program_names)
353356

354357
# Non-existent pack should return empty
355358
programs = demo_programs.get_programs_by_pack("nonexistent")
@@ -460,11 +463,20 @@ def test_story_program_alignment_complete(self):
460463
)
461464

462465
def test_all_programs_have_enrolled_stories(self):
463-
"""Test that every demo program has at least one enrolled story."""
466+
"""Test that demo programs with story enrollments have at least one story.
467+
468+
Programs like Conditional Child Grant may have no stories if they
469+
demonstrate other features (e.g., compliance management).
470+
"""
464471
from odoo.addons.spp_mis_demo_v2.models import demo_programs
465472

473+
# Programs that intentionally have no story enrollments
474+
no_story_programs = {"Conditional Child Grant"}
475+
466476
for program in demo_programs.get_all_demo_programs():
467477
program_name = program["name"]
478+
if program_name in no_story_programs:
479+
continue
468480
stories = program.get("stories", [])
469481
self.assertGreater(
470482
len(stories),

0 commit comments

Comments
 (0)