*** Settings ***
Documentation     CLI Plan and Context Commands - Robot Framework Tests
...               Comprehensive testing of plan and context workflows
Resource          ${CURDIR}/common.resource
Library           OperatingSystem
Library           Process
Library           String
Suite Setup       Setup Test Environment
Suite Teardown    Cleanup Test Environment
Test Timeout      900 seconds

*** Variables ***
# ${PYTHON} will be set in Setup Test Environment from common.resource
# Make sure to call Setup Test Environment before using ${PYTHON}
${TEST_DIR}       ${TEMPDIR}${/}cleveragents_plan_ctx_test
${PROJECT_NAME}   test-project

*** Test Cases ***
Initialize New Project
    [Documentation]    Test cleveragents init command
    [Setup]    Setup Test Directory

    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    init    ${PROJECT_NAME}
    ...    cwd=${TEST_DIR}    env:CLEVERAGENTS_AUTO_APPLY_MIGRATIONS=true    stderr=STDOUT    timeout=300s    on_timeout=kill

    Should Be Equal As Integers    ${result.rc}    0    Init failed: ${result.stdout}
    Should Exist    ${TEST_DIR}${/}.cleveragents
    Should Exist    ${TEST_DIR}${/}.cleveragents${/}db.sqlite

    [Teardown]    Cleanup Test Directory

Add Files To Context
    [Documentation]    Test context-load command
    [Setup]    Initialize Test Project

    # Create test files
    Create File    ${TEST_DIR}${/}test.py    print('hello')
    Create File    ${TEST_DIR}${/}main.py    def main(): pass

    # Add files to context
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    context-load    test.py    main.py
    ...    cwd=${TEST_DIR}    timeout=300s    on_timeout=kill

    Should Be Equal As Integers    ${result.rc}    0

    # Verify files are in context
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    context    list
    ...    cwd=${TEST_DIR}    timeout=120s    on_timeout=kill

    Should Contain    ${result.stdout}    test.py
    Should Contain    ${result.stdout}    main.py

    [Teardown]    Cleanup Test Directory

















List Context Files
    [Documentation]    Test context list command
    [Setup]    Initialize Test Project With Context

    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    context    list
    ...    cwd=${TEST_DIR}    timeout=120s    on_timeout=kill

    Should Be Equal As Integers    ${result.rc}    0
    Should Contain    ${result.stdout}    test.py
    Should Contain    ${result.stdout}    utils.py

    [Teardown]    Cleanup Test Directory

Show Context Content
    [Documentation]    Test context show command
    [Setup]    Initialize Test Project With Context

    # Show specific file content
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    context    show    test.py
    ...    cwd=${TEST_DIR}    timeout=120s    on_timeout=kill

    Should Be Equal As Integers    ${result.rc}    0
    Should Contain    ${result.stdout}    def hello

    # Also test showing summary (without file argument)
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    context    show
    ...    cwd=${TEST_DIR}    timeout=120s    on_timeout=kill

    Should Be Equal As Integers    ${result.rc}    0
    Should Contain    ${result.stdout}    Context Summary
    Should Contain    ${result.stdout}    Total files: 2

    [Teardown]    Cleanup Test Directory

Remove File From Context
    [Documentation]    Test actor context remove command
    [Setup]    Initialize Test Project With Context

    # Remove test.py via canonical path: agents actor context remove
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    actor    context    remove    test.py
    ...    cwd=${TEST_DIR}    timeout=120s    on_timeout=kill

    Should Be Equal As Integers    ${result.rc}    0

    # Verify removal
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    actor    context    list
    ...    cwd=${TEST_DIR}    timeout=120s    on_timeout=kill

    Should Not Contain    ${result.stdout}    test.py
    Should Contain    ${result.stdout}    utils.py

    [Teardown]    Cleanup Test Directory

Clear All Context
    [Documentation]    Test context clear command
    [Setup]    Initialize Test Project With Context

    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    context    clear    --yes
    ...    cwd=${TEST_DIR}    env:CLEVERAGENTS_AUTO_APPLY_MIGRATIONS=true    stderr=STDOUT    timeout=120s    on_timeout=kill

    Should Be Equal As Integers    ${result.rc}    0    Context clear failed: ${result.stdout}

    # Verify context is empty
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    context    list
    ...    cwd=${TEST_DIR}    env:CLEVERAGENTS_AUTO_APPLY_MIGRATIONS=true    stderr=STDOUT    timeout=120s    on_timeout=kill

    Should Not Contain    ${result.stdout}    test.py
    Should Not Contain    ${result.stdout}    utils.py

    [Teardown]    Cleanup Test Directory

Command Error Handling
    [Documentation]    Test error cases for commands
    [Setup]    Setup Test Directory

    # Try to use command without project
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    plan    tell    test
    ...    cwd=${TEST_DIR}    stderr=STDOUT    timeout=120s    on_timeout=kill

    Should Not Be Equal As Integers    ${result.rc}    0

    [Teardown]    Cleanup Test Directory

*** Keywords ***
Setup Test Directory
    [Documentation]    Create clean test directory
    ${run_id}=    Evaluate    __import__('uuid').uuid4().hex
    Set Test Variable    ${TEST_DIR}    ${TEMPDIR}${/}cleveragents_plan_ctx_test_${run_id}
    Set Test Variable    ${PROJECT_NAME}    test-project-${run_id}
    Set Environment Variable    CLEVERAGENTS_TESTING_USE_MOCK_AI    true
    Run Keyword And Ignore Error    Remove Directory    ${TEST_DIR}    recursive=True
    Create Directory    ${TEST_DIR}

Cleanup Test Directory
    [Documentation]    Remove test directory and cleanup processes
    # Clean up test directory
    Run Keyword And Ignore Error    Remove Directory    ${TEST_DIR}    recursive=True

Initialize Test Project
    [Documentation]    Initialize a test project
    Setup Test Directory
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    init    ${PROJECT_NAME}
    ...    cwd=${TEST_DIR}    timeout=300s    on_timeout=kill
    Should Be Equal As Integers    ${result.rc}    0



Initialize Test Project With Context
    [Documentation]    Initialize project and add files to context
    Initialize Test Project
    Create File    ${TEST_DIR}${/}test.py    def hello(): pass
    Create File    ${TEST_DIR}${/}utils.py    import os
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    context-load    test.py    utils.py
    ...    cwd=${TEST_DIR}    env:CLEVERAGENTS_AUTO_APPLY_MIGRATIONS=true    stderr=STDOUT    timeout=120s    on_timeout=kill
    Should Be Equal As Integers    ${result.rc}    0    context-load failed: ${result.stdout}
