module-rest icon indicating copy to clipboard operation
module-rest copied to clipboard

seeResponseMatchesJsonType issue on multiple arrays of arrays

Open MitakaMitaka opened this issue 4 years ago • 1 comments

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

  • Codeception version: v4.1.20
  • PHP Version: 7.2.24
  • Operating System: Ubuntu
  • Installation type: Phar
  • List of installed packages (composer show)
  • Suite configuration:
actor: ApiTester
modules:
  enabled:
    - Asserts
    - Helper\Api
    - REST:
        depends: PhpBrowser
        url: '****'
        part: Json
        curl:
          CURLOPT_RETURNTRANSFER: true

MitakaMitaka avatar Aug 13 '21 11:08 MitakaMitaka

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

Naktibalda avatar Aug 21 '21 07:08 Naktibalda