createResourceProphecy($uri); $propertyProphecy->__toString()->willReturn($uri); return $propertyProphecy; } /** * * @author Lionel Lecaque, lionel@taotesting.com * @param string $uri */ private function createResourceProphecy($uri) { $resourceProphecy = $this->prophesize('core_kernel_classes_Resource'); $resourceProphecy->getUri()->willReturn($uri); return $resourceProphecy; } /** * * @author Lionel Lecaque, lionel@taotesting.com * @param string $uri */ private function createClassProphecy($uri) { $classProphecy = $this->prophesize('core_kernel_classes_Class'); $classProphecy->getUri()->willReturn($uri); return $classProphecy; } /** * * Create a mock to test formater result * * @author Lionel Lecaque, lionel@taotesting.com * @param string $withNoValue * @return Prophecy/Double */ private function createResourceDescription($withNoValue = false) { $resourceDescProphecy = $this->createResourceProphecy('#fakeUri'); $propertyProphecy = $this->createPropertyProphecy('#propertyUri'); $propertyProphecy2 = $this->createPropertyProphecy('#propertyUri2'); $typeProphecy = $this->createClassProphecy('#typeUri'); $typeProphecy->getProperties(true)->willReturn( [ $propertyProphecy->reveal(), $propertyProphecy2->reveal() ] ); $typeProphecy2 = $typeProphecy = $this->createClassProphecy('#typeUri2'); $typeProphecy->getProperties(true)->willReturn([]); $prop1 = $propertyProphecy->reveal(); $prop2 = $propertyProphecy2->reveal(); $typeProphecy2->getProperties(true)->willReturn( [ $prop1, $prop2 ] ); $resourceDescProphecy->getTypes()->willReturn( [ $typeProphecy->reveal(), $typeProphecy2->reveal() ] ); if ($withNoValue) { $resourceDescProphecy->getPropertiesValues( [ "#propertyUri" => $prop1, "#propertyUri2" => $prop2 ] )->willReturn([]); } else { $resourceDescProphecy->getPropertiesValues([ "#propertyUri" => $prop1, "#propertyUri2" => $prop2 ])->willReturn([ '#propertyUri' => [ new \core_kernel_classes_Literal('value1'), new \core_kernel_classes_Literal('value2') ], '#propertyUri2' => [ new \core_kernel_classes_Resource(GenerisRdf::GENERIS_BOOLEAN) ] ]); } return $resourceDescProphecy->reveal(); } /** * * @author Lionel Lecaque, lionel@taotesting.com */ public function testGetResourceDescriptionNoContent() { $formatter = new core_kernel_classes_ResourceFormatter(); try { $result = $formatter->getResourceDescription($this->createResourceDescription(true)); $this->fail('common_exception_NoContent should have been raised'); } catch (\Exception $e) { $this->assertInstanceOf('common_exception_NoContent', $e); } } /** * * @author Lionel Lecaque, lionel@taotesting.com */ public function testGetResourceDesciptionFromDef() { $formatter = new core_kernel_classes_ResourceFormatter(); $result = $formatter->getResourceDescription($this->createResourceDescription(false)); $this->assertInstanceOf('stdClass', $result); $this->assertSame('#fakeUri', $result->uri); $this->assertIsArray($result->properties); $this->assertCount(2, $result->properties); $this->assertInstanceOf('stdClass', $result->properties[0]); $this->assertSame('#propertyUri', $result->properties[0]->predicateUri); $this->assertIsArray($result->properties[0]->values); $this->assertCount(2, $result->properties[0]->values); $this->assertInstanceOf('stdClass', $result->properties[0]->values[0]); $this->assertSame('literal', $result->properties[0]->values[0]->valueType); $this->assertSame('value1', $result->properties[0]->values[0]->value); $this->assertInstanceOf('stdClass', $result->properties[0]->values[1]); $this->assertSame('literal', $result->properties[0]->values[1]->valueType); $this->assertSame('value2', $result->properties[0]->values[1]->value); $this->assertInstanceOf('stdClass', $result->properties[1]); $this->assertSame('#propertyUri2', $result->properties[1]->predicateUri); $this->assertIsArray($result->properties[1]->values); $this->assertCount(1, $result->properties[1]->values); $this->assertInstanceOf('stdClass', $result->properties[1]->values[0]); $this->assertSame('resource', $result->properties[1]->values[0]->valueType); $this->assertSame(GenerisRdf::GENERIS_BOOLEAN, $result->properties[1]->values[0]->value); } /** * @author Lionel Lecaque, lionel@taotesting.com */ public function testGetResourceDesciptionNoContentTripple() { $this->expectException(common_exception_NoContent::class); $resourceDescProphecy = $this->createResourceProphecy('#fakeUri'); $resourceDescProphecy->getRdfTriples()->willReturn([]); $formatter = new core_kernel_classes_ResourceFormatter(); $result = $formatter->getResourceDescription($resourceDescProphecy->reveal(), false); } /** * * @author Lionel Lecaque, lionel@taotesting.com * @return array */ private function generateTriple() { $returnValue = []; for ($i = 0; $i < 3; $i++) { $triple = new \core_kernel_classes_Triple(); $triple->subject = '#subject' . $i; $triple->predicate = '#predicate' . $i; $triple->object = $i == 0 ? GenerisRdf::GENERIS_BOOLEAN : 'object' . $i; $returnValue[] = $triple; } return $returnValue; } /** * @author Lionel Lecaque, lionel@taotesting.com */ public function testGetResourceDesciption() { $resourceDescProphecy = $this->createResourceProphecy('#fakeUri'); $resourceDescProphecy->getRdfTriples()->willReturn($this->generateTriple()); $formatter = new core_kernel_classes_ResourceFormatter(); $result = $formatter->getResourceDescription($resourceDescProphecy->reveal(), false); $this->assertInstanceOf('stdClass', $result); $this->assertSame('#fakeUri', $result->uri); $this->assertIsArray($result->properties); $this->assertCount(3, $result->properties); $this->assertInstanceOf('stdClass', $result->properties[0]); $this->assertSame('#predicate0', $result->properties[0]->predicateUri); $this->assertIsArray($result->properties[0]->values); $this->assertCount(1,$result->properties[0]->values); $this->assertInstanceOf('stdClass', $result->properties[0]->values[0]); $this->assertSame('resource', $result->properties[0]->values[0]->valueType); $this->assertSame(GenerisRdf::GENERIS_BOOLEAN, $result->properties[0]->values[0]->value); for ($i = 1; $i < 3; $i++) { $this->assertInstanceOf('stdClass', $result->properties[$i]); $this->assertSame('#predicate' . $i, $result->properties[$i]->predicateUri); $this->assertIsArray($result->properties[$i]->values); $this->assertCount(1,$result->properties[$i]->values); $this->assertInstanceOf('stdClass', $result->properties[$i]->values[0]); $this->assertSame('literal', $result->properties[$i]->values[0]->valueType); $this->assertSame('object' . $i, $result->properties[$i]->values[0]->value); } } }