forked from HAL9000/cleveragents-core
8ea00f5185
Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me> Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
57 lines
3.2 KiB
Gherkin
57 lines
3.2 KiB
Gherkin
# TDD issue-capture test for bug #1022 — InvariantService in-memory storage only.
|
|
#
|
|
# InvariantService stores invariants in an in-memory dict (self._invariants)
|
|
# with no database persistence layer. Each CLI invocation spawns a fresh
|
|
# process with a new InvariantService() instance, so all invariants added in
|
|
# one invocation are lost when the process exits.
|
|
#
|
|
# These scenarios prove the bug exists by simulating separate CLI invocations
|
|
# (fresh InvariantService instances) and asserting that data added in one
|
|
# invocation is visible in the next. They FAIL until the bug is fixed.
|
|
# The @tag inverts the result so CI passes.
|
|
#
|
|
# See: https://git.cleverthis.com/cleveragents/cleveragents-core/issues/1022
|
|
|
|
@tdd_issue @tdd_issue_1022 @mock_only
|
|
Feature: TDD Issue #1022 — InvariantService invariants lost across process restarts
|
|
As a developer using the agents CLI
|
|
I want invariants added via "agents invariant add" to persist across CLI invocations
|
|
So that "agents invariant list" in a subsequent invocation returns previously added invariants
|
|
|
|
InvariantService uses in-memory dict storage only. Each CLI invocation
|
|
creates a fresh InvariantService() instance, so invariants are lost when
|
|
the process exits. These tests simulate separate process invocations by
|
|
creating fresh service instances and verifying cross-instance data visibility.
|
|
|
|
# @tdd_issue @tdd_issue_4283 @tdd_expected_fail @skip
|
|
@skip
|
|
Scenario: Invariant added in one service instance is visible in a fresh instance
|
|
Given I add a project invariant "All APIs must validate auth tokens" to project "local/api-service" via invariant service instance A
|
|
When I create a fresh invariant service instance B
|
|
And I list project invariants for "local/api-service" via instance B
|
|
Then the invariant list from instance B should contain "All APIs must validate auth tokens"
|
|
|
|
# @tdd_issue @tdd_issue_4283 @tdd_expected_fail @skip
|
|
@skip
|
|
Scenario: Global invariant persists across simulated process restarts
|
|
Given I add a global invariant "Never delete production data" via invariant service instance A
|
|
When I create a fresh invariant service instance B
|
|
And I list global invariants via instance B
|
|
Then the invariant list from instance B should contain "Never delete production data"
|
|
|
|
# @tdd_issue @tdd_issue_4283 @tdd_expected_fail @skip
|
|
@skip
|
|
Scenario: Invariant added via CLI add is visible via CLI list in a new invocation
|
|
Given I invoke invariant add via CLI with "--project local/webapp" and text "All changes need tests" using service invocation 1
|
|
When I invoke invariant list via CLI with "--project local/webapp" using service invocation 2
|
|
Then the CLI list output from invocation 2 should contain "All changes need tests"
|
|
|
|
# @tdd_issue @tdd_issue_4283 @tdd_expected_fail @skip
|
|
@skip
|
|
Scenario: Invariant soft-deleted in a fresh instance after being added in another
|
|
Given I add a project invariant "Temporary constraint" to project "local/temp" via invariant service instance A
|
|
And I capture the invariant ID from instance A
|
|
When I create a fresh invariant service instance B
|
|
And I attempt to remove the captured invariant ID via instance B
|
|
Then the remove operation via instance B should succeed without NotFoundError
|