*** Settings ***
Documentation     Test suite for Sanity Test of Slice API
Suite Setup       Read InputFile
Test Template     Verify Slice API functionality
Library           Collections
Library           String
Library           OperatingSystem
Library           XML
Library           RequestsLibrary
Library           CORDRobot
Library           ImportResource  resources=CORDRobot

*** Variables ***
${USER}           admin
${PASSWORD}       admin
${PATHFILE}       ${CURDIR}/data/Sanity_slice.json

*** Test Cases ***    TYPE        LISTINDEX
Test Add Slice-1      CREATE      0

Test Get Slice-1      RETRIEVE    0

*** Keywords ***
Read InputFile
    ${sliceList} =    CORDRobot.jsonToList    ${PATHFILE}    sliceInfo
    Set Suite Variable    ${sList}    ${sliceList}

Verify Slice API functionality
    [Arguments]    ${type}    ${listIndex}
    Run Keyword If    "${type}" == "CREATE"    Test Post Slices    ${listIndex}
    Run Keyword If    "${type}" == "RETRIEVE"    Test Get Slices    ${listIndex}
    Run Keyword If    "${type}" == "DELETE"    Test Delete Slices    ${listIndex}

Test Post Slices
    [Arguments]    ${listIndex}
    ${sliceList} =    Get Variable Value    ${sList}
    ${sliceDict}=    CORDRobot.listToDict    ${sliceList}    ${listIndex}
    ${api_result}=    CORDRobot.ApiPost    CORE_SANITY_SLICES    ${sliceDict}
    Should Be True    ${api_result}

Test Get Slices
    [Arguments]    ${listIndex}
    ${json_result}=    CORDRobot.ApiGet    CORE_SLICES
    Log    ${json_result}
    ${sliceList}=    Get Variable Value    ${sList}
    ${inputDict}=    CORDRobot.listToDict    ${sliceList}    ${listIndex}
    ${ID}=    CORDRobot.getFieldValueFromDict    ${inputDict}    id
    ${getJsonDict}=    CORDRobot.getDictFromListOfDict    ${json_result}    id    ${ID}
    ${test_result}=    CORDRobot.compare_dict    ${inputDict}    ${getJsonDict}
    Should Be True    ${json_result}

Test Delete Slices
    [Arguments]    ${listIndex}
    ${json_getresult}=    CORDRobot.ApiGet    CORE_SLICES
    ${sliceList}=    Get Variable Value    ${sList}
    ${sliceDict}=    CORDRobot.listToDict    ${sList}    ${listIndex}
    ${sliceName}=    CORDRobot.getFieldValueFromDict    ${sliceDict}    name
    Log    ${sliceName}
    ${getSliceDict}=    CORDRobot.getDictFromListofDict    ${json_getresult}    name    ${sliceName}
    Log    ${getSliceDict}
    ${sliceID}=    CORDRobot.getFieldValueFromDict    ${getSliceDict}    id
    Log    ${sliceID}
    ${test_result}=    CORDRobot.ApiDelete    CORE_SLICES    ${sliceID}
    Should be True    ${test_result}
