*** Settings ***
Documentation     Test suite for Instance creation for multiple subscribers with same "s_tag"
Suite Setup       Read InputFile
Test Template     Verify Instance 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/Subscriber.json
${PATHFILE2}      ${CURDIR}/data/SingleInstance_VoltTenant.json

*** Test Cases ***    TYPE                 LISTINDEX
Test Create Instance-1
                      SUBSCRIBER_CREATE    0

Test Create Subscriber-2
                      SUBSCRIBER_CREATE    1

Test Create Subscriber-3
                      SUBSCRIBER_CREATE    2

Test Create Tenant-1
                      TENANT_CREATE        0

Test Create Tenant-2
                      TENANT_CREATE        1

Test Create Tenant-3
                      TENANT_CREATE        2

Test Instance creation validation
                      INSTANCE_VALIDATE    0

*** Keywords ***
Read InputFile
    ${subscriberList} =    CORDRobot.jsonToList    ${PATHFILE}    SubscriberInfo
    Set Suite Variable    ${slist}    ${subscriberList}
    ${voltList}=    CORDRobot.jsonToList    ${PATHFILE2}    voltSubscriberInfo
    Set Suite Variable    ${vlist}    ${voltList}

Verify Instance functionality
    [Arguments]    ${type}    ${listIndex}
    Run Keyword If    "${type}" == "SUBSCRIBER_CREATE"    Test Post Subscriber Create    ${listIndex}
    Run Keyword If    "${type}" == "TENANT_CREATE"    Test Post volt Tenant Create    ${listIndex}
    Run Keyword If    "${type}" == "INSTANCE_VALIDATE"    Test Instance Validation    ${listIndex}

Test Post Subscriber Create
    [Arguments]    ${listIndex}
    ${subscriberList} =    Get Variable Value    ${slist}
    ${subscriberDict}=    CORDRobot.listToDict    ${subscriberList}    ${listIndex}
    ${api_result}=    CORDRobot.ApiPost    TENANT_SUBSCRIBER    ${subscriberDict}
    Should Be True    ${api_result}

Test Post volt Tenant Create
    [Arguments]    ${listIndex}
    ${voltTenantList} =    Get Variable Value    ${vlist}
    ${voltTenantDict}=    CORDRobot.listToDict    ${voltTenantList}    ${listIndex}
    ${voltDict}=    Get From Dictionary    ${voltTenantDict}    voltTenant
    ${account_num}=    Get From Dictionary    ${voltTenantDict}    account_num
    ${get_result}=    CORDRobot.ApiGet    TENANT_SUBSCRIBER
    ${subscriberDict}=    CORDRobot.getDictFromListofDict    ${get_result}    account_num    ${account_num}
    ${subscriberID}=    CORDRobot.getFieldValueFromDict    ${subscriberDict}    id
    ${updatedVoltDict}=    CORDRobot.setFieldValueInDict    ${voltDict}    subscriber    ${subscriberID}
    ${api_result}=    CORDRobot.ApiPost    TENANT_VOLT    ${updatedVoltDict}
    Should Be True    ${api_result}
    # Verifying Get operation after POST
    ${getVolt_result}=    CORDRobot.ApiGet    TENANT_VOLT
    ${getJsonDict}=    CORDRobot.getDictFromListOfDict    ${getVolt_result}    subscriber    ${subscriberID}
    ${test_result}=    CORDRobot.compare_dict    ${voltDict}    ${getJsonDict}
    Should Be True    ${test_result}

Test Instance Validation
    [Arguments]    ${listIndex}
    ${get_result}=    CORDRobot.ApiGet    TENANT_SUBSCRIBER
    ${instance_id_fromvolt}=    CORDRobot.getAllFieldValues    ${get_result}    instance_id
    ${instance_name}=    CORDRobot.getAllFieldValues    ${get_result}    instance_name
    ${instance_id_name}=    Catenate    SEPARATOR=-    ${instance_name}    ${instance_id_fromvolt}
    ${get_instanceresult}=    CORDRobot.ApiGet    CORE_INSTANCES
    ${instanceDict}=    CORDRobot.getDictFromListofDict    ${get_instanceresult}    instance_name    ${instance_id_name}
    ${instance_id_fromCore}=    CORDRobot.getFieldValueFromDict    ${instanceDict}    id
    Should Be Equal As Strings    ${instance_id_fromvolt}    ${instance_id_fromCore}
