Tests: Significantly improved coverage of the unit tests
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 17s
CI / quality (pull_request) Successful in 19s
CI / security (pull_request) Successful in 28s
CI / typecheck (pull_request) Successful in 32s
CI / integration_tests (pull_request) Successful in 2m39s
CI / unit_tests (pull_request) Successful in 5m22s
CI / docker (pull_request) Successful in 38s
CI / benchmark-regression (pull_request) Successful in 17m47s
CI / coverage (pull_request) Successful in 19m6s
CI / lint (push) Successful in 14s
CI / build (push) Successful in 15s
CI / quality (push) Successful in 20s
CI / security (push) Successful in 29s
CI / typecheck (push) Successful in 36s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 3m23s
CI / unit_tests (push) Successful in 9m12s
CI / docker (push) Successful in 16s
CI / benchmark-publish (push) Successful in 10m4s
CI / coverage (push) Successful in 19m27s

This commit was merged in pull request #139.
This commit is contained in:
2026-02-21 23:52:41 -05:00
parent e3aa0984bb
commit ca1c341b18
34 changed files with 5521 additions and 98 deletions
@@ -0,0 +1,51 @@
@phase1 @database @models @uncovered_branches
Feature: Database models uncovered branch coverage
As a developer
I want to exercise uncovered branches in database model from_domain methods
So that branch and line coverage improves for models.py
# -------------------------------------------------------------------
# LifecyclePlanModel.from_domain: empty arguments (L948 loop zero iterations)
# -------------------------------------------------------------------
@plan @from_domain @empty_arguments
Scenario: PlanModel from_domain with empty arguments produces no argument rows
Given db models branch a Plan domain object with empty arguments
When db models branch the plan is converted via LifecyclePlanModel from_domain
Then db models branch the resulting plan model has no argument rows
# -------------------------------------------------------------------
# ToolModel.from_domain: dict-based tool (L1665-1666 dict branch of _get)
# -------------------------------------------------------------------
@tool @from_domain @dict_tool
Scenario: ToolModel from_domain accepts a plain dict and reads fields via dict.get
Given db models branch a plain dict describing a tool
When db models branch the dict is converted via ToolModel from_domain
Then db models branch the resulting tool model has the expected name and description
@tool @from_domain @dict_tool_bindings
Scenario: ToolModel from_domain with dict tool and resource bindings
Given db models branch a plain dict describing a tool with resource bindings
When db models branch the binding dict is converted via ToolModel from_domain
Then db models branch the resulting tool model has resource binding rows
# -------------------------------------------------------------------
# SessionModel.from_domain: non-empty messages (L1920-1921)
# -------------------------------------------------------------------
@session @from_domain @messages
Scenario: SessionModel from_domain populates child message models
Given db models branch a Session domain object with two messages
When db models branch the session is converted via SessionModel from_domain
Then db models branch the resulting session model has two message children
# -------------------------------------------------------------------
# SkillModel class columns: short_name, description (L2131-2132)
# -------------------------------------------------------------------
@skill @from_domain @columns
Scenario: SkillModel from_domain populates short_name and description columns
Given db models branch a Skill domain dict with name and description
When db models branch the skill dict is converted via SkillModel from_domain
Then db models branch the resulting skill model has correct short_name and description