Каратэ - GraphQL - Проверка вложенного JSON с массивами

У меня возникли проблемы с проверкой вложенного JSON с массивами. У меня есть запрос GraphQL, который выглядит так, он самый простой из тех, что у меня есть. Я изменил данные, так как это реальные производственные данные, но, очевидно, вы понимаете идею. Из предыдущих чатов с @petersmith я понимаю, что * результаты совпадений - отличный способ, и я также пробовал читать из файла .json, но я должен форматировать файл json неправильно или что-то не так, потому что я получаю сообщения об ошибках в javascript оценка не удалась или данные не найдены и т. д. Я действительно просто хочу проверить типы данных, что поля вообще существуют (ClaimNumber, ClaimStatus, totalPatientResponsibility, providerName и memberName), и я хочу передать недопустимый и / или нулевой memberNumber и посмотрите, как он отреагирует. Они кажутся такими простыми, но я сделал это только с REST и Cucumber, используя Ruby, так что теперь у меня, похоже, проблемы. Спасибо!

    {

      getClaimHeadersList(memberNumber:"1111111111") {
        claimNumber
        claimStatus
        totalPatientResponsibility
        providerName
        memberName
      } 
}

Ответ следующий:

{
"data": {
    "getClaimHeadersList": [
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Pended",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Pended",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Pended",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        }
    ]
}

}

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
0
468
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете вставить весь приведенный ниже раздел в новый сценарий и посмотреть, как он работает.

* def response = 
"""
{
   "data":{
      "getClaimHeadersList":[
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Pended",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         },
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Pended",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         },
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Pended",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         },
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Posted",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         },
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Posted",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         },
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Posted",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         },
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Posted",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         },
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Posted",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         },
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Posted",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         },
         {
            "claimNumber":"01-010111-111-11",
            "claimStatus":"Posted",
            "totalPatientResponsibility":0.00,
            "providerName":"LastName, FirstName",
            "memberName":"LastName, FirstName M"
         }
      ]
   }
}
"""
# get only the claims part out of the response as an array
* def claims =  get[0] response $..getClaimHeadersList
* print claims
# assert that there are exactly 10 claims
* match claims == '#[10]'
# assert that each claim has the exact values. note the special handling of 'claimStatus'
* match each claims == { "claimNumber":"01-010111-111-11", "claimStatus":"#? _ == 'Pended' || _ == 'Posted'", "totalPatientResponsibility":0.00, "providerName":"LastName, FirstName", "memberName":"LastName, FirstName M" }
# define a reusable 'schema' for the claim object, includes example of regex validation
* def claimSchema = { claimNumber: '#regex [0-1-]*', claimStatus: '#string', totalPatientResponsibility: '#number', providerName: '#string', memberName: '#string' }
# assert that each claim has all the keys expected and in the format expected
* match each claims == claimSchema

Идеально @PeterThomas! Думаю, я медленно понимаю, как это сделать с вашими примерами. Мы также работали вчера вечером, и это тоже работает, так что это очень полезно. # Проверить схему и тип данных * соответствуют каждому $ response.data.getClaimHeadersList содержит "" "{" ClaimNumber ": '#regex [0-9] {2} - [0-9] {6} - [0-9] {3} - [0-9] {2} ', "ClaimStatus":' #regex (Pended | Опубликовано) ', "totalPatientResponsibility":' #number ', "providerName":' #string ', "memberName": '#нить' } """

Jo-Anne 21.03.2018 17:43

Другие вопросы по теме