forked from cleveragents/cleveragents-core
86 lines
4.4 KiB
Gherkin
86 lines
4.4 KiB
Gherkin
@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
|