summaryrefslogtreecommitdiff
path: root/server/vendor/php-opencloud/common/tests/unit/Common/JsonSchema/SchemaTest.php
diff options
context:
space:
mode:
authorEoleDev <root@serverpc.home>2016-03-09 16:17:33 +0100
committerEoleDev <root@serverpc.home>2016-03-09 16:17:33 +0100
commit2b8decb81faeb7928bcbfda84c6f33a003f707fd (patch)
tree0e491d7ae2bf91347b1cf50d2c475625d8f659b4 /server/vendor/php-opencloud/common/tests/unit/Common/JsonSchema/SchemaTest.php
parentb7ebe1272c1127df290535af2430622b28160bb0 (diff)
parent03ef74d0cfe675a6e18a91f039182ca1b248d8f5 (diff)
Maj Library
Diffstat (limited to 'server/vendor/php-opencloud/common/tests/unit/Common/JsonSchema/SchemaTest.php')
-rw-r--r--server/vendor/php-opencloud/common/tests/unit/Common/JsonSchema/SchemaTest.php102
1 files changed, 102 insertions, 0 deletions
diff --git a/server/vendor/php-opencloud/common/tests/unit/Common/JsonSchema/SchemaTest.php b/server/vendor/php-opencloud/common/tests/unit/Common/JsonSchema/SchemaTest.php
new file mode 100644
index 0000000..22663ef
--- /dev/null
+++ b/server/vendor/php-opencloud/common/tests/unit/Common/JsonSchema/SchemaTest.php
@@ -0,0 +1,102 @@
+<?php
+
+namespace OpenCloud\Test\Common\JsonSchema;
+
+use JsonSchema\Validator;
+use OpenCloud\Common\JsonSchema\Schema;
+use OpenCloud\Test\TestCase;
+
+class SchemaTest extends TestCase
+{
+ /** @var Schema */
+ private $schema;
+
+ /** @var Validator */
+ private $validator;
+ private $body;
+
+ public function setUp()
+ {
+ $this->body = [
+ 'properties' => [
+ 'foo' => (object)[],
+ 'bar' => (object)[],
+ 'baz' => (object)['readOnly' => true],
+ ],
+ ];
+
+ $this->validator = $this->prophesize(Validator::class);
+ $this->schema = new Schema($this->body, $this->validator->reveal());
+ }
+
+ public function test_it_gets_errors()
+ {
+ $this->validator->getErrors()
+ ->shouldBeCalled()
+ ->willReturn([]);
+
+ $this->assertEquals([], $this->schema->getErrors());
+ }
+
+ public function test_it_gets_error_string()
+ {
+ $this->validator->getErrors()
+ ->shouldBeCalled()
+ ->willReturn([['property' => 'foo', 'message' => 'bar']]);
+
+ $errorMsg = sprintf("Provided values do not validate. Errors:\n[foo] bar\n");
+
+ $this->assertEquals($errorMsg, $this->schema->getErrorString());
+ }
+
+ public function test_it_gets_property_paths()
+ {
+ $this->assertEquals(['/foo', '/bar', '/baz'], $this->schema->getPropertyPaths());
+ }
+
+ public function test_it_ignores_readOnly_attrs()
+ {
+ $expected = (object)[
+ 'foo' => true,
+ 'bar' => false,
+ ];
+
+ $subject = (object)[
+ 'foo' => true,
+ 'bar' => false,
+ 'baz' => true,
+ ];
+
+ $this->assertEquals((object)$expected, $this->schema->normalizeObject((object)$subject, []));
+ }
+
+ public function test_it_stocks_aliases()
+ {
+ $subject = (object)[
+ 'fooAlias' => true,
+ 'bar' => false,
+ 'other' => true,
+ ];
+
+ $expected = (object)[
+ 'foo' => true,
+ 'bar' => false,
+ ];
+
+ $this->assertEquals($expected, $this->schema->normalizeObject($subject, ['foo' => 'fooAlias', 'bar' => 'lol']));
+ }
+
+ public function test_it_validates()
+ {
+ $this->validator->check([], (object) $this->body)->shouldBeCalled();
+
+ $this->schema->validate([]);
+ }
+
+ public function test_it_checks_validity()
+ {
+ $this->validator->isValid()->shouldBeCalled();
+
+ $this->schema->isValid();
+ }
+}