| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?php
- /**
- * File ObjectPrimitiveTraitTest.php
- *
- * @author Edward Pfremmer <epfremme@nerdery.com>
- */
- namespace Epfremme\Swagger\Tests\Entity\Mixin;
- use Doctrine\Common\Collections\ArrayCollection;
- use Epfremme\Swagger\Entity\Schemas\AbstractSchema;
- use Epfremme\Swagger\Entity\Schemas\ObjectSchema;
- use Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait;
- use Epfremme\Swagger\Entity\Schemas\RefSchema;
- use Epfremme\Swagger\Entity\Schemas\SchemaInterface;
- use Epfremme\Swagger\Tests\Mixin\SerializerContextTrait;
- /**
- * Class ObjectPrimitiveTraitTest
- *
- * @package Epfremme\Swagger
- * @subpackage Tests\Entity\Schemas\Primitives
- */
- class ObjectPrimitiveTraitTest extends \PHPUnit_Framework_TestCase
- {
- use SerializerContextTrait;
- /**
- * @var ObjectPrimitiveTrait|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $mockTrait;
- /**
- * Mock Classname
- * @var string
- */
- protected $mockClass;
- /**
- * {@inheritdoc}
- */
- protected function setUp()
- {
- $this->mockTrait = $this->getMockForTrait(ObjectPrimitiveTrait::class);
- $this->mockClass = get_class($this->mockTrait);
- }
- /**
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::getMaxProperties
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::setMaxProperties
- */
- public function testMaxProperties()
- {
- $this->assertClassHasAttribute('maxProperties', $this->mockClass);
- $this->assertInstanceOf($this->mockClass, $this->mockTrait->setMaxProperties(5));
- $this->assertAttributeInternalType('integer', 'maxProperties', $this->mockTrait);
- $this->assertAttributeEquals(5, 'maxProperties', $this->mockTrait);
- $this->assertEquals(5, $this->mockTrait->getMaxProperties());
- }
- /**
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::getMinProperties
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::setMinProperties
- */
- public function testMinProperties()
- {
- $this->assertClassHasAttribute('minProperties', $this->mockClass);
- $this->assertInstanceOf($this->mockClass, $this->mockTrait->setMinProperties(1));
- $this->assertAttributeInternalType('integer', 'minProperties', $this->mockTrait);
- $this->assertAttributeEquals(1, 'minProperties', $this->mockTrait);
- $this->assertEquals(1, $this->mockTrait->getMinProperties());
- }
- /**
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::getRequired
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::setRequired
- */
- public function testRequired()
- {
- $required = ['foo', 'bar', 'baz'];
- $this->assertClassHasAttribute('required', $this->mockClass);
- $this->assertInstanceOf($this->mockClass, $this->mockTrait->setRequired($required));
- $this->assertAttributeInternalType('array', 'required', $this->mockTrait);
- $this->assertAttributeEquals($required, 'required', $this->mockTrait);
- $this->assertEquals($required, $this->mockTrait->getRequired());
- }
- /**
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::getProperties
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::setProperties
- */
- public function testProperties()
- {
- $properties = $definitions = new ArrayCollection([
- 'name' => new ObjectSchema(),
- ]);;
- $this->assertClassHasAttribute('properties', $this->mockClass);
- $this->assertInstanceOf($this->mockClass, $this->mockTrait->setProperties($properties));
- $this->assertAttributeInstanceOf(ArrayCollection::class, 'properties', $this->mockTrait);
- $this->assertAttributeEquals($properties, 'properties', $this->mockTrait);
- $this->assertEquals($properties, $this->mockTrait->getProperties());
- $this->assertContainsOnlyInstancesOf(ObjectSchema::class, $this->mockTrait->getProperties());
- $this->assertCount(1, $this->mockTrait->getProperties());
- }
- /**
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::isAdditionalProperties
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::setAdditionalProperties
- */
- public function testAdditionalProperties()
- {
- $this->assertClassHasAttribute('additionalProperties', $this->mockClass);
- $this->assertInstanceOf($this->mockClass, $this->mockTrait->setAdditionalProperties(true));
- $this->assertAttributeInternalType('boolean', 'additionalProperties', $this->mockTrait);
- $this->assertAttributeEquals(true, 'additionalProperties', $this->mockTrait);
- $this->assertTrue($this->mockTrait->isAdditionalProperties());
- }
- /**
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::getPatternProperties
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::setPatternProperties
- */
- public function testPatternProperties()
- {
- $this->assertClassHasAttribute('patternProperties', $this->mockClass);
- $this->assertInstanceOf($this->mockClass, $this->mockTrait->setPatternProperties('foo'));
- $this->assertAttributeInternalType('string', 'patternProperties', $this->mockTrait);
- $this->assertAttributeEquals('foo', 'patternProperties', $this->mockTrait);
- $this->assertEquals('foo', $this->mockTrait->getPatternProperties());
- }
- /**
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::getDependencies
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait::setDependencies
- */
- public function testDependencies()
- {
- $dependencies = ['foo', 'bar', 'baz'];
- $this->assertClassHasAttribute('dependencies', $this->mockClass);
- $this->assertInstanceOf($this->mockClass, $this->mockTrait->setDependencies($dependencies));
- $this->assertAttributeInternalType('array', 'dependencies', $this->mockTrait);
- $this->assertAttributeEquals($dependencies, 'dependencies', $this->mockTrait);
- $this->assertEquals($dependencies, $this->mockTrait->getDependencies());
- }
- /**
- * @covers Epfremme\Swagger\Entity\Mixin\Primitives\ObjectPrimitiveTrait
- */
- public function testSerialization()
- {
- $data = json_encode([
- 'type' => AbstractSchema::OBJECT_TYPE,
- 'maxProperties' => 10,
- 'minProperties' => 1,
- 'required' => ['foo', 'bar'],
- 'properties' => [
- 'foo' => [
- 'type' => AbstractSchema::STRING_TYPE
- ],
- 'bar' => [
- '$ref' => RefSchema::REF_TYPE
- ],
- 'baz' => [
- 'type' => AbstractSchema::NUMBER_TYPE
- ],
- ],
- 'additionalProperties' => true,
- 'patternProperties' => 'foo',
- 'dependencies' => ['foo', 'bar', 'baz'],
- ]);
- $primitive = $this->getSerializer()->deserialize($data, AbstractSchema::class, 'json');
- $this->assertInstanceOf(ObjectSchema::class, $primitive);
- $this->assertAttributeEquals(10, 'maxProperties', $primitive);
- $this->assertAttributeEquals(1, 'minProperties', $primitive);
- $this->assertAttributeEquals(['foo', 'bar'], 'required', $primitive);
- $this->assertAttributeInstanceOf(ArrayCollection::class, 'properties', $primitive);
- $this->assertContainsOnlyInstancesOf(SchemaInterface::class, $primitive->getProperties());
- $this->assertAttributeEquals(true, 'additionalProperties', $primitive);
- $this->assertAttributeEquals('foo', 'patternProperties', $primitive);
- $this->assertAttributeEquals(['foo', 'bar', 'baz'], 'dependencies', $primitive);
- $json = $this->getSerializer()->serialize($primitive, 'json');
- $this->assertJson($json);
- $this->assertJsonStringEqualsJsonString($data, $json);
- }
- }
|