12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- namespace Codeception\PHPUnit\Constraint;
- use SebastianBergmann\Comparator\ComparisonFailure;
- use SebastianBergmann\Comparator\ArrayComparator;
- use SebastianBergmann\Comparator\Factory;
- use Codeception\Util\JsonArray;
- class JsonContains extends \PHPUnit\Framework\Constraint\Constraint
- {
- /**
- * @var
- */
- protected $expected;
- public function __construct(array $expected)
- {
- parent::__construct();
- $this->expected = $expected;
- }
- /**
- * Evaluates the constraint for parameter $other. Returns true if the
- * constraint is met, false otherwise.
- *
- * @param mixed $other Value or object to evaluate.
- *
- * @return bool
- */
- protected function matches($other)
- {
- $jsonResponseArray = new JsonArray($other);
- if (!is_array($jsonResponseArray->toArray())) {
- throw new \PHPUnit\Framework\AssertionFailedError('JSON response is not an array: ' . $other);
- }
- if ($jsonResponseArray->containsArray($this->expected)) {
- return true;
- }
- $comparator = new ArrayComparator();
- $comparator->setFactory(new Factory);
- try {
- $comparator->assertEquals($this->expected, $jsonResponseArray->toArray());
- } catch (ComparisonFailure $failure) {
- throw new \PHPUnit\Framework\ExpectationFailedException(
- "Response JSON does not contain the provided JSON\n",
- $failure
- );
- }
- }
- /**
- * Returns a string representation of the constraint.
- *
- * @return string
- */
- public function toString()
- {
- //unused
- return '';
- }
- protected function failureDescription($other)
- {
- //unused
- return '';
- }
- }
|