/**
  *
  * @author Lionel Lecaque, lionel@taotesting.com
  */
 public function testGetItemVariableDataFromDeliveryResult()
 {
     $prophet = new Prophet();
     $impProphecy = $prophet->prophesize('oat\\taoOutcomeRds\\model\\RdsResultStorage');
     $impProphecy->getRelatedItemCallIds('#fakeUri')->willReturn(array('#itemsResults1' => '#itemResultVariable', '#itemsResults2' => '#itemResultVariable2', '#itemsResults3' => '#itemResultVariable3'));
     $item = new \stdClass();
     $item->item = '#item';
     $item->uri = '#uri';
     $var = new \taoResultServer_models_classes_TraceVariable();
     $var->setEpoch(microtime());
     $var->setIdentifier('varIdentifier');
     $item->variable = $var;
     $item2 = new \stdClass();
     $item2->item = '#item2';
     $item2->uri = '#uri2';
     $var2 = new \taoResultServer_models_classes_ResponseVariable();
     $var2->setEpoch(microtime());
     $var2->setIdentifier('varIdentifier2');
     // response correct
     $var2->setCorrectResponse(1);
     $item2->variable = $var2;
     $item3 = new \stdClass();
     $item3->item = '#item3';
     $item3->uri = '#uri3';
     $var3 = new \taoResultServer_models_classes_ResponseVariable();
     $var3->setEpoch(microtime());
     $var3->setIdentifier('varIdentifier3');
     // response incorrect
     $var3->setCorrectResponse(0);
     $item3->variable = $var3;
     $impProphecy->getVariables('#itemResultVariable')->willReturn(array(array($item)));
     $impProphecy->getVariables('#itemResultVariable2')->willReturn(array(array($item2)));
     $impProphecy->getVariables('#itemResultVariable3')->willReturn(array(array($item3)));
     $imp = $impProphecy->reveal();
     $this->service->setImplementation($imp);
     $deliveryResultProphecy = $prophet->prophesize('core_kernel_classes_Resource');
     $deliveryResultProphecy->getUri()->willReturn('#fakeUri');
     $deliveryResult = $deliveryResultProphecy->reveal();
     $itemVar = $this->service->getItemVariableDataFromDeliveryResult($deliveryResult, 'lastSubmitted');
     $this->assertArrayHasKey('#item', $itemVar);
     $this->assertArrayHasKey('itemModel', $itemVar['#item']);
     $this->assertEquals('unknown', $itemVar['#item']['itemModel']);
     $this->assertArrayHasKey('sortedVars', $itemVar['#item']);
     $this->assertArrayHasKey('taoResultServer_models_classes_TraceVariable', $itemVar['#item']['sortedVars']);
     $this->assertArrayHasKey('varIdentifier', $itemVar['#item']['sortedVars']['taoResultServer_models_classes_TraceVariable']);
     $this->assertArrayHasKey('uri', $itemVar['#item']['sortedVars']['taoResultServer_models_classes_TraceVariable']['varIdentifier'][0]);
     $this->assertEquals('#uri', $itemVar['#item']['sortedVars']['taoResultServer_models_classes_TraceVariable']['varIdentifier'][0]['uri']);
     $this->assertArrayHasKey('isCorrect', $itemVar['#item']['sortedVars']['taoResultServer_models_classes_TraceVariable']['varIdentifier'][0]);
     $this->assertEquals('unscored', $itemVar['#item']['sortedVars']['taoResultServer_models_classes_TraceVariable']['varIdentifier'][0]['isCorrect']);
     $this->assertArrayHasKey('var', $itemVar['#item']['sortedVars']['taoResultServer_models_classes_TraceVariable']['varIdentifier'][0]);
     $this->assertInstanceOf('taoResultServer_models_classes_TraceVariable', $itemVar['#item']['sortedVars']['taoResultServer_models_classes_TraceVariable']['varIdentifier'][0]['var']);
     $this->assertEquals($var, $itemVar['#item']['sortedVars']['taoResultServer_models_classes_TraceVariable']['varIdentifier'][0]['var']);
     $this->assertArrayHasKey('label', $itemVar['#item']);
     // item2
     $this->assertArrayHasKey('#item2', $itemVar);
     $this->assertArrayHasKey('itemModel', $itemVar['#item2']);
     $this->assertEquals('unknown', $itemVar['#item2']['itemModel']);
     $this->assertArrayHasKey('sortedVars', $itemVar['#item2']);
     $this->assertArrayHasKey('taoResultServer_models_classes_ResponseVariable', $itemVar['#item2']['sortedVars']);
     $this->assertArrayHasKey('varIdentifier2', $itemVar['#item2']['sortedVars']['taoResultServer_models_classes_ResponseVariable']);
     $this->assertArrayHasKey('uri', $itemVar['#item2']['sortedVars']['taoResultServer_models_classes_ResponseVariable']['varIdentifier2'][0]);
     $this->assertEquals('#uri2', $itemVar['#item2']['sortedVars']['taoResultServer_models_classes_ResponseVariable']['varIdentifier2'][0]['uri']);
     $this->assertArrayHasKey('isCorrect', $itemVar['#item2']['sortedVars']['taoResultServer_models_classes_ResponseVariable']['varIdentifier2'][0]);
     $this->assertEquals('correct', $itemVar['#item2']['sortedVars']['taoResultServer_models_classes_ResponseVariable']['varIdentifier2'][0]['isCorrect']);
     // item3
     $this->assertArrayHasKey('#item3', $itemVar);
     $this->assertArrayHasKey('itemModel', $itemVar['#item3']);
     $this->assertEquals('unknown', $itemVar['#item3']['itemModel']);
     $this->assertArrayHasKey('sortedVars', $itemVar['#item3']);
     $this->assertArrayHasKey('taoResultServer_models_classes_ResponseVariable', $itemVar['#item3']['sortedVars']);
     $this->assertArrayHasKey('varIdentifier3', $itemVar['#item3']['sortedVars']['taoResultServer_models_classes_ResponseVariable']);
     $this->assertArrayHasKey('uri', $itemVar['#item3']['sortedVars']['taoResultServer_models_classes_ResponseVariable']['varIdentifier3'][0]);
     $this->assertEquals('#uri3', $itemVar['#item3']['sortedVars']['taoResultServer_models_classes_ResponseVariable']['varIdentifier3'][0]['uri']);
     $this->assertArrayHasKey('isCorrect', $itemVar['#item3']['sortedVars']['taoResultServer_models_classes_ResponseVariable']['varIdentifier3'][0]);
     $this->assertEquals('incorrect', $itemVar['#item3']['sortedVars']['taoResultServer_models_classes_ResponseVariable']['varIdentifier3'][0]['isCorrect']);
 }
 /**
  * Get trace variable instance to save.
  * 
  * @param string $identifier
  * @param string $value
  * @return \taoResultServer_models_classes_TraceVariable variable instance to save.
  */
 private function getVariable($identifier, $value)
 {
     $metaVariable = new \taoResultServer_models_classes_TraceVariable();
     $metaVariable->setIdentifier($identifier);
     $metaVariable->setBaseType('string');
     $metaVariable->setCardinality(Cardinality::getNameByConstant(Cardinality::SINGLE));
     $metaVariable->setTrace($value);
     return $metaVariable;
 }
 /**
  * return a Trace Variable with informations from the request itselfs
  */
 private function getRequestDetails()
 {
     $dom = new DOMDocument('1.0', 'utf-8');
     $element = $dom->createElement('agent');
     $dom->appendChild($element);
     foreach ($_SERVER as $key => $agentDetail) {
         if (is_string($agentDetail)) {
             $node = $dom->createElement($key);
             $cdata = $dom->createCDATASection($agentDetail);
             $node->appendChild($cdata);
             $element->appendChild($node);
         }
     }
     //$dom->formatOutput = true;
     // array_walk_recursive($_SERVER, array ($xml, 'addChild'));
     $traceVariable = new taoResultServer_models_classes_TraceVariable();
     $traceVariable->setIdentifier("User Agent Details");
     $traceVariable->setTrace($dom->saveXML());
     return $traceVariable;
 }