| 
<?php/**
 * Created by PhpStorm.
 * Package: org\majkel\tcpdfwarper
 * User: Micha? (majkel) Kowalik <[email protected]>
 * Date: 12/28/2014
 * Time: 22:36
 */
 
 namespace org\majkel\tcpdfwarper\generator;
 
 require_once __DIR__.'/../AbstractTestCase.php';
 require_once __DIR__.'/FuncMock.php';
 
 use org\majkel\tcpdfwarper\AbstractTestCase;
 
 /**
 * Class GeneratorTest
 * @package org\majkel\tcpdfwarper\generator
 * @coversDefaultClass \org\majkel\tcpdfwarper\generator\Generator
 */
 class GeneratorTest extends AbstractTestCase {
 
 public function setUp() {
 FuncMock::reset();
 }
 
 /**
 * @covers ::__construct
 */
 public function testConstructor() {
 FuncMock::$MOCK_TIME = true;
 FuncMock::$TIME = 1421619142;
 $obj = new Generator(array(
 'configFile' => 'configFile',
 'classTemplateFile' => 'classTemplateFile',
 'traitTemplateFile' => 'traitTemplateFile',
 ));
 $OBJ = $this->reflect($obj);
 self::assertSame('configFile', $OBJ->configFile);
 self::assertSame('classTemplateFile', $OBJ->classTemplateFile);
 self::assertSame('traitTemplateFile', $OBJ->traitTemplateFile);
 self::assertSame(date('Y-m-d', FuncMock::$TIME), $OBJ->date);
 self::assertSame(date('H:i:s', FuncMock::$TIME), $OBJ->time);
 }
 
 /**
 * @expectedException \org\majkel\tcpdfwarper\generator\GeneratorException
 * @covers ::getConfig
 */
 public function testGetConfigInvalidFile() {
 FuncMock::$MOCK_FILE_EXISTS = true;
 $obj = new Generator(array(
 'configFile' => INVALID_PATH,
 'classTemplateFile' => 'classTemplateFile',
 'traitTemplateFile' => 'traitTemplateFile',
 ));
 $this->reflect($obj)->getConfig();
 }
 
 /**
 * @expectedException \org\majkel\tcpdfwarper\generator\GeneratorException
 * @covers ::getConfig
 */
 public function testGetConfigInvalid() {
 FuncMock::$MOCK_FILE_EXISTS = true;
 $obj = new Generator(array(
 'configFile' => __DIR__.'/data/config.invalid.php',
 'classTemplateFile' => 'classTemplateFile',
 'traitTemplateFile' => 'traitTemplateFile',
 ));
 $this->reflect($obj)->getConfig();
 }
 
 /**
 * @covers ::getConfig
 */
 public function testGetConfig() {
 FuncMock::$MOCK_FILE_EXISTS = true;
 $obj = new Generator(array(
 'configFile' => __DIR__.'/data/config.test.php',
 'classTemplateFile' => 'classTemplateFile',
 'traitTemplateFile' => 'traitTemplateFile',
 ));
 $config = $this->reflect($obj)->getConfig();
 self::assertCount(3, $config);
 }
 
 /**
 * @covers ::removeTrailingSpaces
 */
 public function testRemoveTrailingSpaces() {
 $obj = $this->reflect('\org\majkel\tcpdfwarper\generator\Generator');
 
 $sample = "line 1\nline 2  \nline3\t";
 
 $out = $obj->removeTrailingSpaces($sample);
 
 self::assertSame("line 1\nline 2\nline3", $out);
 }
 
 /**
 * @covers ::generateClass
 * @covers ::render
 */
 public function testGenerateClass() {
 $obj = new Generator(array(
 'configFile' => INVALID_PATH,
 'classTemplateFile' => __DIR__.'/data/class.template.php',
 'traitTemplateFile' => INVALID_PATH,
 ));
 $OBJ = $this->reflect($obj);
 $class = new ClassDefinition();
 $class->method = 'METHOD';
 $result = $OBJ->generateClass($class);
 self::assertSame("<?php\nMETHOD\n", $result);
 }
 
 /**
 * @covers ::generateTrait
 * @covers ::render
 */
 public function testGenerateTrait() {
 $obj = new Generator(array(
 'configFile' => INVALID_PATH,
 'classTemplateFile' => INVALID_PATH,
 'traitTemplateFile' => __DIR__.'/data/trait.template.php',
 ));
 $OBJ = $this->reflect($obj);
 $class = new ClassDefinition();
 $class->method = 'METHOD';
 $result = $OBJ->generateTrait(array($class));
 self::assertSame("<?php\nMETHOD\n", $result);
 }
 
 /**
 * @covers ::generate
 * @expectedException \org\majkel\tcpdfwarper\generator\GeneratorException
 */
 public function testGenerateInvalidDir() {
 $obj = new Generator(array(
 'configFile' => INVALID_PATH,
 'classTemplateFile' => INVALID_PATH,
 'traitTemplateFile' => INVALID_PATH,
 ));
 $obj->generate(INVALID_PATH);
 }
 
 /**
 * @covers ::generate
 */
 public function testGenerate() {
 FuncMock::$MOCK_FILE_PUT_CONTENTS = true;
 $obj = new Generator(array(
 'configFile' => INVALID_PATH,
 'classTemplateFile' => INVALID_PATH,
 'traitTemplateFile' => INVALID_PATH,
 ));
 $obj = $this->getMockBuilder('\org\majkel\tcpdfwarper\generator\Generator')
 ->disableOriginalConstructor()
 ->setMethods(array('getConfig', 'generateClass', 'generateTrait'))
 ->getMock();
 
 $configItem = new ConfigItem();
 $configItem->method = 'Write';
 $configItem->className = 'class_name';
 $configItem->metaMethods = array();
 
 $classDef = ClassDefinition::fromConfigItem($configItem);
 
 $obj->expects($this->once())
 ->method('getConfig')
 ->willReturn(array($configItem));
 
 $obj->expects($this->once())
 ->method('generateClass')
 ->with(self::equalTo($classDef))
 ->willReturn('CLASS');
 
 $obj->expects($this->once())
 ->method('generateTrait')
 ->with(self::equalTo(array($classDef)))
 ->willReturn('TRAIT');
 
 $obj->generate(__DIR__);
 }
 }
 
 |