Codeception / module-rest

REST module for Codeception
MIT License
53 stars 27 forks source link

seeResponseMatchesJsonType issue on multiple arrays of arrays #91

Open MitakaMitaka opened 3 years ago

MitakaMitaka commented 3 years ago

What are you trying to achieve?

Trying to use seeResponseMatchesJsonType on a response from multiple arrays of arrays

What do you get instead?

After several iterations I get an error

1) testCest: Test Get the SUSPENDED Venues!
 Test  tests/api/testCest.php:suspendedVenues
 Step  See response matches json type {"businessHourID":"integer","workingDay":"string","specialHourDate":"string|null","fromTime":"string|null","toTime":"string|null","isClosed":"boolean"},"$..businessHours[22]"
 Fail  Key `businessHourID` doesn't exist in []

Provide test source code if related The code I use is

// businessHours array from the venue payload
public static $businessHoursArrayResponse = [
'businessHourID'  => 'integer',
'workingDay'      => 'string',
'specialHourDate' => 'string|null',
'fromTime'        => 'string|null',
'toTime'          => 'string|null',
'isClosed'        => 'boolean'
];
...
$businessHoursArray = $I->grabDataFromResponseByJsonPath('$..businessHours.*');
for ($i=0; $i < count($businessHoursArray); $i++){
if (!empty($businessHoursArray[$i])) {
$I->seeResponseMatchesJsonType(self::$businessHoursArrayResponse, '$..businessHours['.$i.']');
}
}

var_dump($businessHoursArray) prints an array of 53 valid arrays no missing keys or anything.

Details

actor: ApiTester
modules:
  enabled:
    - Asserts
    - Helper\Api
    - REST:
        depends: PhpBrowser
        url: '****'
        part: Json
        curl:
          CURLOPT_RETURNTRANSFER: true
Naktibalda commented 3 years ago

I think that JsonSchema would be a more convenient approach for validating data in lists. https://codeception.com/docs/modules/REST#seeResponseIsValidOnJsonSchema