*** Settings ***
Documentation     Test suite for Deletion of Subscribers and voltTenants - Chameleon APIs
Suite Setup       Read InputFile
Test Template     Verify Deletion of Subscriber and volt Tenant functionality
Library           Collections
Library           String
Library           OperatingSystem
Library           XML
Library           RequestsLibrary
Library           CORDRobot
Library           ImportResource  resources=CORDRobot

*** Variables ***
${PATHFILE}       ${CURDIR}/data/Ch_VoltTenant.json

*** Test Cases ***    TYPE      LISTINDEX
Test Delete Subscriber and volt_tenant-1
                      DELETE    0

Test Delete Subscriber and volt_tenant-2
                      DELETE    1

Test Delete Subscriber and volt_tenant-3
                      DELETE    2

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

Verify Deletion of Subscriber and volt Tenant functionality
    [Arguments]    ${type}    ${listIndex}
    Run Keyword If    "${type}" == "DELETE"    Test Delete Subscriber and voltTenant    ${listIndex}

Test Delete Subscriber and voltTenant
    [Arguments]    ${listIndex}
    ${getSubscriber_result}=    CORDRobot.ApiGet    VOLT_SUBSCRIBER
    ${getSubscriber_result_list}=    Get From Dictionary    ${getSubscriber_result}    items
    ${getVoltTenant_result}=    CORDRobot.ApiGet    VOLT_TENANT
    ${getVoltTenant_result_list}=    Get From Dictionary    ${getVoltTenant_result}    items
    ${voltList}=    Get Variable Value    ${vlist}
    ${voltTenantDict}=    CORDRobot.listToDict    ${voltList}    ${listIndex}
    ${voltDict}=    Get From Dictionary    ${voltTenantDict}    voltTenant
    ${servicespecific_id}=    Get From Dictionary    ${voltTenantDict}    service_specific_id
    ${subscriberDict}=    CORDRobot.getDictFromListofDict    ${getSubscriber_result_list}    service_specific_id    ${servicespecific_id}
    Log    ${subscriberDict}
    ${subscriberId}=    CORDRobot.getFieldValueFromDict    ${subscriberDict}    id
    Log    ${subscriberId}
    ${subscribed_links_ids_list}=    CORDRobot.getFieldValueFromDict    ${subscriberDict}    subscribed_links_ids
    ${subscribed_links_ids}=    Get From List    ${subscribed_links_ids_list}    0
    # Retrieve service links using service links ID
    ${getServiceLink}=    CORDRobot.ApiChameleonGet    CH_CORE_SERVICELINK    ${subscribed_links_ids}
    ${provider_service_instance_id}=    Get From Dictionary    ${getServiceLink}    provider_service_instance_id
    # Deletion of volt Tenants
    ${volt_delete_result}=    CORDRobot.ApiChameleonDelete    VOLT_TENANT    ${provider_service_instance_id}
    Should Be True    ${volt_delete_result}
    #Deletion of Subscribers
    ${subscriber_delete_result}=    CORDRobot.ApiChameleonDelete    VOLT_SUBSCRIBER    ${subscriberId}
    Should Be True    ${subscriber_delete_result}
