/**
  *
  */
 public function testRegisterPluginsWithDifferentPrioritiesTestAndUnRegisterPlugin()
 {
     $this->client->setPluginManager(new PluginManager($this->client));
     static::assertInstanceOf('\\frankmayer\\ArangoDbPhpCore\\Plugins\\PluginManager', $this->client->getPluginManager());
     $tracer = new TestPlugin();
     $tracer->priority = 0;
     $tracer2 = new TestPlugin();
     $tracer2->priority = 20;
     $tracer3 = new TestPlugin();
     $tracer3->priority = -30;
     $tracer4 = new TestPlugin();
     $tracer4->priority = 20;
     $this->clientOptions['plugins'] = ['tracer1' => $tracer, 'tracer2' => $tracer2, 'tracer3' => $tracer3, 'tracer4' => $tracer4];
     $this->client->setPluginsFromPluginArray($this->clientOptions['plugins']);
     static::assertArrayHasKey('tracer3', $this->client->pluginManager->pluginStorage);
     $e = null;
     try {
         $this->client->setPluginsFromPluginArray(['tracer5' => new \stdClass()]);
     } catch (\Exception $e) {
     }
     static::assertInstanceOf('\\Exception', $e);
     /** @var $responseObject HttpResponse */
     $collection = new Collection($this->client);
     /** @var $responseObject HttpResponse */
     $responseObject = $collection->getAll();
     static::assertInstanceOf('frankmayer\\ArangoDbPhpCore\\Protocols\\Http\\HttpRequestInterface', $responseObject->request);
 }
 public function testRegisterPluginsAndUnRegisterPlugins()
 {
     $this->client->setPluginManager(new PluginManager($this->client));
     $this->assertInstanceOf('\\frankmayer\\ArangoDbPhpCore\\Plugins\\PluginManager', $this->client->getPluginManager());
     $tracer = new TestPlugin();
     $tracer->priority = 0;
     $tracer2 = new TestPlugin();
     $tracer2->priority = 20;
     $tracer3 = new TestPlugin();
     $tracer3->priority = -30;
     $tracer4 = new TestPlugin();
     $tracer4->priority = 20;
     $this->clientOptions['plugins'] = ['tracer1' => $tracer, 'tracer2' => $tracer2, 'tracer3' => $tracer3, 'tracer4' => $tracer4];
     $this->client->setPluginsFromPluginArray($this->clientOptions['plugins']);
     $this->assertArrayHasKey('tracer1', $this->client->pluginManager->pluginStorage);
     $this->assertArrayHasKey('tracer2', $this->client->pluginManager->pluginStorage);
     $this->assertArrayHasKey('tracer3', $this->client->pluginManager->pluginStorage);
     $this->assertArrayHasKey('tracer4', $this->client->pluginManager->pluginStorage);
     $keys = array_keys($this->client->pluginManager->pluginStorage);
     $this->assertSame($this->client->pluginManager->pluginStorage[$keys[2]], $this->client->pluginManager->pluginStorage['tracer1']);
     $this->assertSame($this->client->pluginManager->pluginStorage[$keys[3]], $this->client->pluginManager->pluginStorage['tracer3']);
     $this->client->pluginManager->removePluginInstance('tracer1');
     $this->client->pluginManager->removePluginInstance('tracer2');
     $this->client->pluginManager->removePluginInstance('tracer3');
     $this->client->pluginManager->removePluginInstance('tracer4');
     $this->assertArrayNotHasKey('tracer1', $this->client->pluginManager->pluginStorage);
     $this->assertArrayNotHasKey('tracer2', $this->client->pluginManager->pluginStorage);
     $this->assertArrayNotHasKey('tracer3', $this->client->pluginManager->pluginStorage);
     $this->assertArrayNotHasKey('tracer4', $this->client->pluginManager->pluginStorage);
 }
 /**
  *
  */
 public function testSetGetPluginManager()
 {
     $client = new Client($this->connector, getClientOptions());
     $pluginManager = new PluginManager($client);
     $client->setPluginManager($pluginManager);
     $this->assertEquals($pluginManager, $client->getPluginManager());
 }