Files
cleveragents-core/features/project_service_coverage.feature
T

116 lines
5.2 KiB
Gherkin

Feature: Project Service Coverage
As a developer maintaining the CleverAgents system
I want comprehensive tests for the project service
So that project management functionality works reliably
Background:
Given I have a temporary test directory for project service
And I have a Unit of Work instance for project testing
And I have a ProjectService instance
Scenario: Create project with file system error
Given I have a read-only directory for project creation
When I try to create a project in the read-only directory
Then a FileSystemError should be raised with message "Failed to create project structure"
Scenario: Create project with existing migrated project
Given I have legacy JSON project data at the target location
When I create a project that triggers migration
Then the existing migrated project should be returned
And no duplicate project should be created
Scenario: Create project with migration and existing project without force
Given I have a project already in database with name "test-project"
And I have legacy JSON project data for migration with same name
When I try to create a project with migration without force flag
Then the existing migrated project should be returned
And migration should have occurred
Scenario: Create project with migration returns existing after migration
Given I have legacy JSON project data at the target location
And migration will create a project with name "migrated-project"
When I create a project that triggers successful migration
Then the migrated project should be returned
Scenario: Get project by name that does not exist
Given there are no projects in the database
When I try to get a project by name "non-existent"
Then a NotFoundError should be raised for project "non-existent"
Scenario: Update existing project
Given I have a saved project with name "update-test"
When I update the project's settings
Then the project should be updated successfully
And the updated project should be returned
Scenario: Get project by non-existent path
Given there are no projects in the database
When I try to get a project by path "/non/existent/path"
Then no project should be returned for the path
Scenario: List projects with ordering by created date
Given I have multiple projects created at different times
When I list all projects ordered by created date
Then the projects should be returned in creation order
Scenario: List projects with ordering by name
Given I have multiple projects with different names
When I list all projects ordered by name
Then the projects should be returned in alphabetical order
Scenario: Create project with force flag overwrites existing
Given I have a project already in database with name "force-test"
When I create a project with the same name and force flag
Then a new project should be created successfully
Scenario: Project statistics with no plans
Given I have a saved project with no plans
When I get project statistics for the saved project
Then the stats should show zero plans and contexts
Scenario: Project statistics with plans and contexts
Given I have a saved project with plans and contexts
When I get project statistics for the saved project
Then the stats should show correct counts for plans and contexts
Scenario: Create project initializes database
Given I have an uninitialized database
When I create a new project
Then the database infrastructure should be initialized
And the project should be created successfully
Scenario: Create project with custom settings
Given I want to create a project with custom settings
When I create the project with custom auto_build and auto_apply
Then the project should have the custom settings applied
Scenario: Delete project removes from database
Given I have a saved project with name "delete-test"
When I delete the project
Then the project should not exist in the database
Scenario: Create project with special characters in name
Given I want to create a project with name containing spaces
When I create a project with name "my test project" using project service
Then the project should be created with sanitized name "my_test_project"
Scenario: Get current project from working directory
Given I have a project at a specific directory
And I change to that project directory
When I get the current project
Then the correct project should be returned
Scenario: Create project handles permission denied error
Given I have a directory without write permissions
When I try to create a project there
Then a FileSystemError should be raised with permission details
Scenario: Update project that does not exist
Given I have a project object that is not in database
When I try to update the non-existent project
Then the update should handle the missing project gracefully
Scenario: Create project with extremely long name
Given I want to create a project with a very long name
When I create the project with 300 character name
Then the project name should be truncated appropriately