Example #1
0
 /**
  * @covers PhCompile\Template\Directive\NgClass::compile
  * @dataProvider compileExceptionProvider
  * @expectedException PhCompile\Template\Expression\InvalidExpressionException
  */
 public function testCompileException($scopeData, $classString)
 {
     $this->scope->setData($scopeData);
     $document = Utils::loadHTML('<span ng-class="' . $classString . '"></span>');
     $element = $document->getElementsByTagName('span')->item(0);
     $this->ngClass->compile($element, $this->scope);
 }
Example #2
0
 /**
  * @covers PhCompile\DOM\Utils::appendHTML
  * @dataProvider appendHtmlProvider
  */
 public function testAppendHTML($html, $appendHtml, $expectedHtml)
 {
     $document = Utils::loadHTML($html);
     $element = $document->getElementsByTagName('span')->item(0);
     Utils::appendHTML($element, $appendHtml);
     $renderedHtml = Utils::saveHTML($document);
     $this->assertSame($expectedHtml, $renderedHtml);
 }
Example #3
0
 /**
  * @covers PhCompile\Template\Directive\NgValue::compile
  * @dataProvider compileProvider
  */
 public function testCompile($scopeData, $bindString, $expected)
 {
     $this->scope->setData($scopeData);
     $document = Utils::loadHTML('<span ng-value="' . $bindString . '"></span>');
     $element = $document->getElementsByTagName('span')->item(0);
     $compiledHtml = Utils::saveHTML($this->ngValue->compile($element, $this->scope)->ownerDocument);
     $expectedHtml = '<span ng-value="' . $bindString . '" value="' . $expected . '"></span>';
     $this->assertSame($expectedHtml, $compiledHtml);
 }
Example #4
0
 /**
  * @covers PhCompile\Template\Directive\NgHide::compile
  * @dataProvider compileProvider
  */
 public function testCompile($scopeData, $expression, $expectedClass)
 {
     $this->scope->setData($scopeData);
     $document = Utils::loadHTML('<span ng-hide="' . $expression . '" class=""></span>');
     $element = $document->getElementsByTagName('span')->item(0);
     $this->ngHide->compile($element, $this->scope);
     $renderedHtml = Utils::saveHTML($element->ownerDocument);
     $expectedHtml = '<span ng-hide="' . $expression . '" class="' . $expectedClass . '"></span>';
     $this->assertSame($expectedHtml, $renderedHtml);
 }
Example #5
0
 /**
  * Compiles template HTML.
  * This method uses registered directives and expressions to render AngularJS
  * template with given scope data.
  *
  * @return string Compiled HTML.
  */
 public function compile()
 {
     $document = Utils::loadHTML($this->html);
     $domIterator = new \RecursiveIteratorIterator(new RecursiveDOMIterator($document), \RecursiveIteratorIterator::SELF_FIRST);
     /**
      * Iterate over every element inside DOM.
      */
     foreach ($domIterator as $domNode) {
         if ($domNode->nodeType === XML_ELEMENT_NODE) {
             $this->compileNode($domNode);
         }
     }
     /**
      * Update template HTML from compiled DOM.
      */
     $this->html = Utils::saveHTML($document);
     $this->compileExpressions();
     return $this->html;
 }
Example #6
0
 /**
  * @covers PhCompile\Template\Directive\NgRepeat::compile
  * @dataProvider repeatSpectialPropertiesProvider
  */
 public function testRepeatSpecialProperties($expression, $expectedArray)
 {
     $this->scope->setData(array('bar' => array(1, 2, 3, 4, 5, 6)));
     $document = Utils::loadHTML('<span ng-repeat="n in bar">{{' . $expression . '}}</span>');
     $element = $document->getElementsByTagName('span')->item(0);
     $renderClass = $this->phCompile->getConfig('compile.class');
     $renderAttr = $this->phCompile->getConfig('compile.attr');
     $this->ngRepeat->compile($element, $this->scope);
     $compiledHtml = Utils::saveHTML($document);
     $expectedHtml = '<span ng-repeat="n in bar" class="ng-hide">{{' . $expression . '}}</span>';
     for ($i = 0; $i < 6; $i++) {
         $expectedHtml .= '<span class="' . $renderClass . '"><span ' . $renderAttr . '="' . $expression . '">' . $expectedArray[$i] . '</span></span>';
     }
     $this->assertSame($expectedHtml, $compiledHtml);
 }