Tests: Improved coverage to get us back above 97%
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Failing after 13s
CI / quality (pull_request) Successful in 17s
CI / build (pull_request) Successful in 17s
CI / typecheck (pull_request) Successful in 34s
CI / security (pull_request) Successful in 33s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 2m31s
CI / unit_tests (pull_request) Successful in 6m43s
CI / docker (pull_request) Has been skipped

This commit is contained in:
2026-02-22 15:29:41 -05:00
parent 92c83ecc7e
commit 41ca082022
12 changed files with 3664 additions and 0 deletions
@@ -0,0 +1,85 @@
@unit @database @models @new_coverage
Feature: Database models new coverage for missed lines and branches
As a developer
I want comprehensive coverage for database model conversions
So that all code paths including edge cases are tested
# -------------------------------------------------------------------
# ToolModel.from_domain: object (non-dict) access via getattr
# -------------------------------------------------------------------
@tool @from_domain @object_access
Scenario: ToolModel from_domain with object attribute access pattern
Given a domain tool object with attribute access
When I create a ToolModel from the domain object
Then the ToolModel should have the correct name
And the ToolModel should have the correct description
And the ToolModel should have the correct tool_type
And the ToolModel should have the correct source
@tool @from_domain @object_access_namespaced
Scenario: ToolModel from_domain with namespaced object splits name correctly
Given a domain tool object with a namespaced name attribute
When I create a ToolModel from the namespaced domain object
Then the ToolModel namespace should be extracted correctly
And the ToolModel short_name should be extracted correctly
@tool @from_domain @object_defaults
Scenario: ToolModel from_domain with object falling back to defaults
Given a domain tool object with minimal attributes
When I create a ToolModel from the minimal domain object
Then the ToolModel should use default values for missing attributes
# -------------------------------------------------------------------
# SessionModel.from_domain: non-empty messages list
# -------------------------------------------------------------------
@session @from_domain @messages
Scenario: SessionModel from_domain with non-empty messages list
Given a domain session object with two messages
When I create a SessionModel from the domain session
Then the SessionModel should have two message child models
And the first message model should have the correct role and content
And the second message model should have the correct sequence
@session @from_domain @single_message
Scenario: SessionModel from_domain with a single message
Given a domain session object with one message
When I create a SessionModel from the single-message domain session
Then the SessionModel should have exactly one message child model
And the message model should preserve the message_id
# -------------------------------------------------------------------
# SkillModel: instantiation exercises short_name and description columns
# -------------------------------------------------------------------
@skill @instantiation
Scenario: SkillModel instantiation covers short_name and description columns
Given a SkillModel is created with short_name and description values
Then the SkillModel short_name should match the provided value
And the SkillModel description should match the provided value
And the SkillModel namespace should be set correctly
@skill @instantiation @with_items
Scenario: SkillModel instantiation with child SkillItemModel records
Given a SkillModel is created with a child SkillItemModel
Then the SkillModel should have one item in items_rel
And the SkillItemModel should have the correct item_type and item_name
# -------------------------------------------------------------------
# LifecyclePlanModel.from_domain: arguments_order with missing key
# -------------------------------------------------------------------
@plan @from_domain @arguments_order_missing_key
Scenario: Plan from_domain skips arguments_order entries not in arguments_dict
Given a plan domain object with arguments_order containing a missing key
When I convert the plan domain object to a database model
Then the database plan model should only have arguments for keys present in arguments_dict
And the missing key should not appear in the argument child records
@plan @from_domain @arguments_order_mixed
Scenario: Plan from_domain handles mix of present and missing argument keys
Given a plan domain object with three ordered keys but only two in arguments_dict
When I convert the mixed-arguments plan to a database model
Then the database plan model should have exactly two argument child records
And the argument positions should reflect their order in arguments_order