*** Settings ***
Documentation     E2E integration tests for plan persistence: full lifecycle,
...               restart persistence, and concurrent CLI access patterns.
...               Covers subtask 5 of A5.tests.
Resource          ${CURDIR}/common.resource
Suite Setup       Setup Test Environment
Suite Teardown    Cleanup Test Environment

*** Variables ***
${HELPER_SCRIPT}    robot/helper_plan_persistence_e2e.py

*** Test Cases ***
Plan Full Lifecycle Persistence
    [Documentation]    Create action, create plan, transition through all phases,
    ...                reach applied terminal state, and verify persistence at each step.
    [Tags]    database    plan    lifecycle    persistence
    ${result}=    Run Process    ${PYTHON}    ${HELPER_SCRIPT}    full-lifecycle    cwd=${WORKSPACE}    timeout=120s    on_timeout=kill
    Should Be Equal As Integers    ${result.rc}    0
    Should Contain    ${result.stdout}    full-lifecycle-ok

Plan Restart Persistence
    [Documentation]    Create a plan, close the database, reopen it, and verify
    ...                all plan fields survive the reconnection.
    [Tags]    database    plan    restart    persistence
    ${result}=    Run Process    ${PYTHON}    ${HELPER_SCRIPT}    restart-persistence    cwd=${WORKSPACE}    timeout=120s    on_timeout=kill
    Should Be Equal As Integers    ${result.rc}    0
    Should Contain    ${result.stdout}    restart-persistence-ok

Plan Concurrent Session Access
    [Documentation]    Open two independent sessions against the same database
    ...                and verify that plans created in one session are visible
    ...                in the other after commit.
    [Tags]    database    plan    concurrent    persistence
    ${result}=    Run Process    ${PYTHON}    ${HELPER_SCRIPT}    concurrent-access    cwd=${WORKSPACE}    timeout=120s    on_timeout=kill
    Should Be Equal As Integers    ${result.rc}    0
    Should Contain    ${result.stdout}    concurrent-access-ok

Action CRUD Persistence E2E
    [Documentation]    Create, read, update, and delete an action via repository,
    ...                verifying persistence at each step.
    [Tags]    database    action    crud    persistence
    ${result}=    Run Process    ${PYTHON}    ${HELPER_SCRIPT}    action-crud    cwd=${WORKSPACE}    timeout=120s    on_timeout=kill
    Should Be Equal As Integers    ${result.rc}    0
    Should Contain    ${result.stdout}    action-crud-ok

Plan Tree Hierarchy Persistence E2E
    [Documentation]    Create a parent plan and child plan, verify hierarchy
    ...                links are persisted correctly including root_plan_id.
    [Tags]    database    plan    hierarchy    persistence
    ${result}=    Run Process    ${PYTHON}    ${HELPER_SCRIPT}    plan-tree    cwd=${WORKSPACE}    timeout=120s    on_timeout=kill
    Should Be Equal As Integers    ${result.rc}    0
    Should Contain    ${result.stdout}    plan-tree-ok
