Rearrange CSIT test order

- Waiting for Cmhandle to be ready before fetching the modules in the CSIT.
- Added condition to check size of the json array if it atleast has one
  item

Issue-ID: CPS-2313
Change-Id: Ib4f08069780c55a758ba976db5b96239c83ac990
Signed-off-by: mpriyank <priyank.maheshwari@est.tech>
diff --git a/csit/tests/cps-data-operations/cps-data-operations.robot b/csit/tests/cps-data-operations/cps-data-operations.robot
index 85e8a2a..8f1d71a 100644
--- a/csit/tests/cps-data-operations/cps-data-operations.robot
+++ b/csit/tests/cps-data-operations/cps-data-operations.robot
@@ -26,6 +26,7 @@
 Library               RequestsLibrary
 Library               BuiltIn
 Library               ConfluentKafkaLibrary
+Library               String
 
 Suite Setup           Create Session      CPS_URL    http://${CPS_CORE_HOST}:${CPS_CORE_PORT}
 
@@ -79,12 +80,20 @@
     [Arguments]    ${uri}    ${headers}    ${cmHandle}
     ${response}=    GET On Session    CPS_URL    ${uri}    headers=${headers}
     Should Be Equal As Strings    ${response.status_code}    200
+    ${number_of_items}=    Count Items In JSON Response    ${response}
+    Should Be True    ${number_of_items} > 0
     FOR  ${item}  IN  ${response.json()}
             IF  "${item['cmHandle']}" == "${cmHandle}"
                 Should Be Equal As Strings    ${item['state']['cmHandleState']}    READY
             END
     END
 
+Count Items In JSON Response
+    [Arguments]    ${response}
+    ${json_data}=    Evaluate    json.loads('${response.content.decode("utf-8")}')   json
+    ${number_of_items}=    Get Length    ${json_data}
+    RETURN    ${number_of_items}
+
 Basic Teardown
     [Arguments]     ${group_id}
     Unsubscribe     ${group_id}
diff --git a/csit/tests/cps-data-sync/cps-data-sync.robot b/csit/tests/cps-data-sync/cps-data-sync.robot
index 6fc1876..b8ba479 100644
--- a/csit/tests/cps-data-sync/cps-data-sync.robot
+++ b/csit/tests/cps-data-sync/cps-data-sync.robot
@@ -35,11 +35,6 @@
 
 *** Test Cases ***
 
-Check if ietfYang-PNFDemo is READY
-    ${uri}=        Set Variable       ${ncmpBasePath}/v1/ch/ietfYang-PNFDemo
-    ${headers}=    Create Dictionary  Authorization=${auth}
-    Wait Until Keyword Succeeds       20sec    200ms    Is CM Handle READY    ${uri}    ${headers}    ietfYang-PNFDemo
-
 Operational state goes to UNSYNCHRONIZED when data sync (flag) is enabled
     ${uri}=              Set Variable       ${ncmpBasePath}/v1/ch/ietfYang-PNFDemo/data-sync
     ${params}=           Create Dictionary  dataSyncEnabled=true
@@ -57,15 +52,6 @@
     Wait Until Keyword Succeeds    40sec    100ms    Is CM Handle State SYNCHRONIZED    ${uri}    ${headers}
 
 *** Keywords ***
-Is CM Handle READY
-    [Arguments]    ${uri}    ${headers}    ${cmHandle}
-    ${response}=    GET On Session    CPS_URL    ${uri}    headers=${headers}
-    Should Be Equal As Strings    ${response.status_code}    200
-    FOR  ${item}  IN  ${response.json()}
-            IF  "${item['cmHandle']}" == "${cmHandle}"
-                Should Be Equal As Strings    ${item['state']['cmHandleState']}    READY
-            END
-    END
 
 Is CM Handle State SYNCHRONIZED
     [Arguments]    ${uri}    ${headers}
diff --git a/csit/tests/cps-model-sync/cps-model-sync.robot b/csit/tests/cps-model-sync/cps-model-sync.robot
index bb881f6..514076f 100644
--- a/csit/tests/cps-model-sync/cps-model-sync.robot
+++ b/csit/tests/cps-model-sync/cps-model-sync.robot
@@ -25,6 +25,7 @@
 Library               OperatingSystem
 Library               RequestsLibrary
 Library               BuiltIn
+Library               String
 
 Suite Setup           Create Session      CPS_URL    http://${CPS_CORE_HOST}:${CPS_CORE_PORT}
 
@@ -88,13 +89,40 @@
     ${headers}=          Create Dictionary  Authorization=${auth}
     ${response}=         GET On Session     CPS_URL   ${uri}   headers=${headers}   expected_status=404
 
+Check if ietfYang-PNFDemo is READY
+    ${uri}=        Set Variable       ${ncmpBasePath}/v1/ch/ietfYang-PNFDemo
+    ${headers}=    Create Dictionary  Authorization=${auth}
+    Wait Until Keyword Succeeds       20sec    200ms    Is CM Handle READY    ${uri}    ${headers}    ietfYang-PNFDemo
+
 Get modules for registered data node
     ${uri}=              Set Variable       ${ncmpBasePath}/v1/ch/ietfYang-PNFDemo/modules
     ${headers}=          Create Dictionary  Authorization=${auth}
     ${response}=         GET On Session     CPS_URL   ${uri}   headers=${headers}
     Should Be Equal As Strings              ${response.status_code}   200
+    ${number_of_items}=    Count Items In JSON Response    ${response}
+    Should Be True    ${number_of_items} > 0
     FOR   ${item}   IN  @{response.json()}
             IF   "${item['moduleName']}" == "stores"
                 Should Be Equal As Strings              "${item['revision']}"   "2020-09-15"
             END
-    END
\ No newline at end of file
+    END
+
+*** Keywords ***
+
+Is CM Handle READY
+    [Arguments]    ${uri}    ${headers}    ${cmHandle}
+    ${response}=    GET On Session    CPS_URL    ${uri}    headers=${headers}
+    Should Be Equal As Strings    ${response.status_code}    200
+    ${number_of_items}=    Count Items In JSON Response    ${response}
+    Should Be True    ${number_of_items} > 0
+    FOR  ${item}  IN  ${response.json()}
+            IF  "${item['cmHandle']}" == "${cmHandle}"
+                Should Be Equal As Strings    ${item['state']['cmHandleState']}    READY
+            END
+    END
+
+Count Items In JSON Response
+    [Arguments]    ${response}
+    ${json_data}=    Evaluate    json.loads('${response.content.decode("utf-8")}')   json
+    ${number_of_items}=    Get Length    ${json_data}
+    RETURN    ${number_of_items}
\ No newline at end of file