Scalr\Tests\Functional\Api\V2\SpecSchema\Constraint\Validator::checkObject PHP Method

checkObject() protected method

Validates an object
protected checkObject ( stdClass $element, AbstractSpecObject $schema )
$element stdClass object properties
$schema Scalr\Tests\Functional\Api\V2\SpecSchema\DataTypes\AbstractSpecObject schema this object generated of api specification
    protected function checkObject($element, $schema)
    {
        if (isset($schema->sample)) {
            $this->checkSample($element, $schema->sample);
            return;
        }
        if (isset($schema->discriminator)) {
            $discriminator = $schema->discriminator;
            if (!property_exists($element, $discriminator)) {
                $propName = $schema->getObjectName();
                if (isset(static::$ignoreDiscriminatorValues[$propName]) && $discriminator == static::$ignoreDiscriminatorValues[$propName]) {
                    ApiTest::markTestIncomplete(sprintf('%s unexpected discriminator value', $discriminator));
                } else {
                    $this->appendError($discriminator, ' unexpected discriminator value');
                }
                return;
            }
            $schema = $this->getConcreteTypes($schema, $element->{$discriminator});
            if (!$schema) {
                $this->appendError($element->{$discriminator}, ' unexpected concrete type value');
            }
            unset($schema->discriminator);
            $this->check($element, $schema);
            return;
        }
        $properties = $schema instanceof ApiEntity ? $schema->getProperties() : (array) $schema;
        foreach ($element as $p => $value) {
            if (isset($properties[$p])) {
                $this->check($value, $properties[$p]);
            } else {
                $this->appendError($p, "this property don't exist in Api specifications");
            }
        }
        return;
    }