*** Settings ***
Documentation  This test suite will validate the "OpenBMC" GUI ->
...            "Server control" main menu -> "Server power
...            operations" submenu module.

Resource         ../../lib/resource.robot
Test Setup       Test Setup Execution  ${OBMC_PowerOff_state}
Test Teardown    Test Teardown Execution

*** Variables ***
${xpath_select_server_control}           //*[@id="nav__top-level"]/li[3]/button/span
${xpath_select_server_power_operations}  //a[@href='#/server-control/power-operations']
${string_server_power_operations}        Server power operations
${string_current_status}                 Current status
${string_select_power_operation}         Select a power operation
${string_warm_reboot}                    Attempts to perform an orderly shutdown before restarting the server
${string_cold_reboot}                    Shuts down the server immediately, then restarts it
${string_orderly_shutdown}               Attempts to stop all software on the server before removing power
${string_immediate_shutdown}             Removes power from the server without waiting for software to stop
${string_power_on}                       Attempts to power on the server

*** Test Case ***
# OpenBMC @ Power Off state test cases.

Verify Orderly Shutdown Button At Power Off
    [Documentation]  Verify orderly shutdown button is not present at power Off.
    [Tags]  Verify_Orderly_Shutdown_Button_At_Power_Off

    Select Server Power Operations Sub Menu
    Element Should Not Be Visible  ${xpath_select_button_orderly_shutdown}


Verify Immediate Shutdown Button At Power Off
    [Documentation] Verify immediate shutdown button not present at power Off.
    [Tags]  Verify_Immediate_Shutdown_Button_At_Power_Off

    Select Server Power Operations Sub Menu
    Element Should Not Be Visible  ${xpath_select_button_immediate_shutdown}


Verify Warm Reboot Button At Power Off
    [Documentation]  Verify warm reboot button is not present at power Off.
    [Tags]  Verify_Warm_Reboot_Button_At_Power_Off

    Select Server Power Operations Sub Menu
    Element Should Not Be Visible  ${xpath_select_button_warm_reboot}

Verify Cold Reboot Button At Power Off
    [Documentation]  Verify cold reboot button is not present at power Off.
    [Tags]  Verify_Cold_Reboot_Button_At_Power_Off

    Select Server Power Operations Sub Menu
    Element Should Not Be Visible  ${xpath_select_button_cold_reboot}

Verify Title Text Should Be Server Power Operations At Power Off
    [Documentation]  Verify display of title text "Server Power Operations".
    [Tags]  Verify_Title_Text_Should_Be_Server_Power_Operations_At_Power_Off
    ...  OBMC_PowerOff_state

    Select Server Power Operations Sub Menu
    Verify Display Content  ${string_server_power_operations}

Verify Sub Title Text Should Be Current Status At Power Off
    [Documentation]  Verify display of title text "Current Status".
    [Tags]  Verify_Sub_Title_Text_Should_Be_Current_Status_At_Power_Off
    ...  OBMC_PowerOff_state

    Select Server Power Operations Sub Menu
    Verify Display Content  ${string_current_status}

Verify Sub Title Text Should Be Select Power Operation At Power Off
    [Documentation]  Verify display of title text "Select a power operation".
    [Tags]  Verify_Sub_Title_Text_Should_Be_Select_Power_Operation_At_Power_Off
    ...  OBMC_PowerOff_state

    Select Server Power Operations Sub Menu
    Verify Display Content  ${string_Select_power_operation}

Verify Power On Button Should Present At Power Off
    [Documentation]  Verify presence of "Warm reboot" button.
    [Tags]  Verify_Power_On_Button_Should_Present_At_Power_Off
    ...  OBMC_PowerOff_State

    Select Server Power Operations Sub Menu
    Verify Presence of Power Button And Text Info
    ...  ${xpath_select_button_power_on}  ${string_power_on}

Verify Power On At Power Off
    [Documentation]  Verify presence of "Warm reboot" button.
    [Tags]  Verify_Power_On_At_Power_Off
    ...  OBMC_PowerOff_State

    Power On OpenBMC


# OpenBMC @ Power Running state test cases.

Verify Warm Reboot Button Should Present At Power Running
    [Documentation]  Verify presence of "Warm reboot" button.
    [Tags]  Verify_Warm_Reboot_Button_Should_Present_At_Power_Running
    ...  OBMC_PowerRunning_State
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Verify Presence of Power Button And Text Info
    ...  ${xpath_select_button_warm_reboot}  ${string_warm_reboot}

Verify Cold Reboot Button Should Present At Power Running
    [Documentation]  Verify presence of "cold reboot" button.
    [Tags]  Verify_Cold_Reboot_Button_Should_Present_At_Power_Running
    ...  OBMC_PowerRunning_State
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Verify Presence of Power Button And Text Info
    ...  ${xpath_select_button_cold_reboot}  ${string_cold_reboot}

Verify Orderly Shutdown Button Should Present At Power Running
    [Documentation]  Verify presence of "Orderly shutdow " button.
    [Tags]  Verify_Orderly_Shutdown_Button_Should_Present_At_Power_Running
    ...  OBMC_PowerRunning_State
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Verify Presence of Power Button And Text Info
    ...  ${xpath_select_button_orderly_shutdown}  ${string_orderly_shutdown}

Verify Immediate Shutdown Button Should Present At Power Running
    [Documentation]  Verify presence of "Immediate shutdown" button.
    [Tags]  Verify_Immediate_Shutdown_Button_Should_Present_At_Power_Running
    ...  OBMC_PowerRunning_State
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Verify Presence of Power Button And Text Info
    ...  ${xpath_select_button_immediate_shutdown}  ${string_immediate_shutdown}

Verify Warm Reboot Should Not Happen By Clicking No Button
    [Documentation]  Verify functionality of warm reboot "No" button clicking.
    [Tags]  Verify_Warm_Reboot_Should_Not_Happen_By_Clicking_No_Button
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Click Element  ${xpath_select_button_warm_reboot}
    Verify Warning Message Display Text  ${xpath_warm_reboot_warning_message}
    ...  ${text_warm_reboot_warning_message}
    Verify No Button Functionality
    ...  ${xpath_select_button_warm_reboot_no}

Verify Cold Reboot Should Not Happen By Clicking No Button
    [Documentation]  Verify functionality of cold reboot "No" button clicking.
    [Tags]  Verify_Cold_Reboot_Should_Not_Happen_By_Clicking_No_Button
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Click Element  ${xpath_select_button_cold_reboot}
    Verify Warning Message Display Text  ${xpath_cold_reboot_warning_message}
    ...  ${text_cold_reboot_warning_message}
    Verify No Button Functionality
    ...  ${xpath_select_button_cold_reboot_no}

Verify Orderly Shutdown Should Not Happen By Clicking No Button
    [Documentation]  Verify functionality of orderly shutdown "No" button clicking.
    [Tags]  Verify_Orderly_Shutdown_Should_Not_Happen_By_Clicking_No_Button
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Click Element  ${xpath_select_button_orderly_shutdown}
    Verify Warning Message Display Text  ${xpath_orderly_shutdown_warning_message}
    ...  ${text_orderly_shutdown_warning_message}
    Verify No Button Functionality
    ...  ${xpath_select_button_orderly_shutdown_button_no}

Verify Immediate Shutdown Should Not Happen By Clicking No Button
    [Documentation]  Verify functionality of immediate shutdown "No" button clicking.
    [Tags]  Verify_Immediate_Shutdown_Should_Not_Happen_By_Clicking_No_Button
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Click Element  ${xpath_select_button_immediate_shutdown}
    Verify Warning Message Display Text  ${xpath_immediate_shutdown_warning_message}
    ...  ${text_immediate_shutdown_warning_message}
    Verify No Button Functionality
    ...  ${xpath_select_button_immediate_shutdown_no}

Verify Warm Reboot Should Happen By Clicking Yes Button
    [Documentation]  Verify functionality of warm reboot "Yes" button clicking.
    [Tags]  Verify_Warm_Reboot_Should_Happen_By_Clicking_Yes_Button
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Warm Reboot openBMC

Verify Cold Reboot Should Happen By Clicking Yes Button
    [Documentation]  Verify functionality of cold reboot "Yes" button clicking.
    [Tags]  Verify_Cold_Reboot_Should_Happen_By_Clicking_Yes_Button
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Cold Reboot openBMC

Verify Orderly Shutdown Should Happen By Clicking Yes Button
    [Documentation]  Verify functionality of orderly shutdown "Yes" button clicking.
    [Tags]  Verify_Orderly_Shutdown_Should_Happen_By_Clicking_Yes_Button
    ...  OBMC_PowerRunning_State
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Orderly Shutdown OpenBMC

Verify Immediate Shutdown Should Happen By Clicking Yes Button
    [Documentation]  Verify functionality of immediate shutdown "Yes" button clicking.
    [Tags]  Verify_Immediate_Shutdown_Should_Happen_By_Clicking_Yes_Button
    ...  OBMC_PowerRunning_State
    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}

    Select Server Power Operations Sub Menu
    Immediate Shutdown openBMC

*** Keywords ***
Select Server Power Operations Sub Menu
    [Documentation]  Selecting of OpenBMC "Server Power Operations" Submenu.

    Click Button  ${xpath_select_server_control}
    Click Button  ${xpath_select_server_power_operations}

Verify Presence of Power Button And Text Info
    [Documentation]  Verify the presens fo power button and text message info.
    [Arguments]      ${power_button}  ${power_button_text}

    # power_button         Xpath of power button.
    # power_button_text    Text message info.

    Page Should Contain Button  ${power_button}
    Verify Display Content  ${power_button_text}

Verify No Button Functionality
    [Documentation]  Verify the functionality of "No" button click.
    [Arguments]      ${xpath_no_button}

    # xpath_no_button      Xpath of "No" button.

    Click No Button  ${xpath_no_button}
    ${obmc_current_state}=  Get Text  ${xpath_display_server_power_status}
    Should Contain  ${obmc_current_state}  ${obmc_running_state}
