/** * Test edges method */ public function testEdgesAny() { $connection = $this->connection; $edgeCollection = $this->edgeCollection; $document1 = new Document(); $document2 = new Document(); $documentHandler = new DocumentHandler($connection); $edgeDocumentHandler = new EdgeHandler($connection); $document1->someAttribute = 'someValue1'; $document2->someAttribute = 'someValue2'; $documentHandler->add('ArangoDBPHPTestSuiteTestCollection01', $document1); $documentHandler->add('ArangoDBPHPTestSuiteTestCollection01', $document2); $documentHandle1 = $document1->getHandle(); $documentHandle2 = $document2->getHandle(); $edgeDocument1 = $edgeDocumentHandler->saveEdge($edgeCollection->getName(), $documentHandle1, $documentHandle2, array('value' => 1)); $edgeDocument2 = $edgeDocumentHandler->saveEdge($edgeCollection->getName(), $documentHandle2, $documentHandle1, array('value' => 2)); $edgeDocument3 = $edgeDocumentHandler->saveEdge($edgeCollection->getName(), $documentHandle1, $documentHandle2, array('value' => 3)); $edgesQueryResult = $edgeDocumentHandler->edges($edgeCollection->getName(), $documentHandle1, "any"); $this->assertEquals(3, count($edgesQueryResult)); foreach ($edgesQueryResult as $edge) { $this->assertInstanceOf('triagens\\ArangoDb\\Edge', $edge); if ($edge->value === 1) { $this->assertEquals($documentHandle1, $edge->getFrom()); $this->assertEquals($documentHandle2, $edge->getTo()); $this->assertEquals($edgeDocument1, $edge->getId()); } else { if ($edge->value === 2) { $this->assertEquals($documentHandle2, $edge->getFrom()); $this->assertEquals($documentHandle1, $edge->getTo()); $this->assertEquals($edgeDocument2, $edge->getId()); } else { $this->assertEquals($documentHandle1, $edge->getFrom()); $this->assertEquals($documentHandle2, $edge->getTo()); $this->assertEquals($edgeDocument3, $edge->getId()); } } } // test empty result $edgesQueryResult = $edgeDocumentHandler->edges($edgeCollection->getName(), "ArangoDBPHPTestSuiteTestCollection01/foobar", "any"); $this->assertEquals(0, count($edgesQueryResult)); }
/** * Try to create and delete an edge with wrong encoding * We expect an exception here: * * @expectedException \triagens\ArangoDb\ClientException */ public function testCreateAndDeleteEdgeWithWrongEncoding() { $connection = $this->connection; $this->collection; $edgeCollection = $this->edgeCollection; $this->collectionHandler; $document1 = new Document(); $document2 = new Document(); $documentHandler = new DocumentHandler($connection); $edgeDocument = new Edge(); $edgeDocumentHandler = new EdgeHandler($connection); $document1->someAttribute = 'someValue1'; $document2->someAttribute = 'someValue2'; $documentHandler->add('ArangoDBPHPTestSuiteTestCollection01', $document1); $documentHandler->add('ArangoDBPHPTestSuiteTestCollection01', $document2); $documentHandle1 = $document1->getHandle(); $documentHandle2 = $document2->getHandle(); $isoValue = iconv("UTF-8", "ISO-8859-1//TRANSLIT", "knowsü"); $edgeDocument->set('label', $isoValue); $edgeDocumentId = $edgeDocumentHandler->saveEdge($edgeCollection->getId(), $documentHandle1, $documentHandle2, $edgeDocument); // $resultingDocument = $documentHandler->get($edgeCollection->getId(), $edgeDocumentId); $resultingEdge = $edgeDocumentHandler->get($edgeCollection->getId(), $edgeDocumentId); $resultingAttribute = $resultingEdge->label; $this->assertTrue($resultingAttribute === 'knows', 'Attribute set on the Edge is different from the one retrieved!'); $edgesQuery1Result = $edgeDocumentHandler->edges($edgeCollection->getId(), $documentHandle1, 'out'); $this->assertArrayHasKey('documents', $edgesQuery1Result, "edges didn't return an array with a documents attribute!"); $statement = new Statement($connection, array("query" => '', "count" => true, "batchSize" => 1000, "sanitize" => true)); $statement->setQuery('FOR p IN PATHS(ArangoDBPHPTestSuiteTestCollection01, ArangoDBPHPTestSuiteTestEdgeCollection01, "outbound") RETURN p'); $cursor = $statement->execute(); $result = $cursor->current(); $this->assertInstanceOf('triagens\\ArangoDb\\Document', $result, "IN PATHS statement did not return a document object!"); $resultingEdge->set('label', 'knows not'); $documentHandler->update($resultingEdge); $resultingEdge = $edgeDocumentHandler->get($edgeCollection->getId(), $edgeDocumentId); $resultingAttribute = $resultingEdge->label; $this->assertTrue($resultingAttribute === 'knows not', 'Attribute "knows not" set on the Edge is different from the one retrieved (' . $resultingAttribute . ')!'); $documentHandler->delete($document1); $documentHandler->delete($document2); // On ArangoDB 1.0 deleting a vertex doesn't delete the associated edge. Caution! $edgeDocumentHandler->delete($resultingEdge); }