/**
  * @expectedException \UnexpectedValueException
  * @expectedExceptionMessage Property visibility must be public, protected, private
  */
 public function testThrowsException()
 {
     $classModel = Mockery::mock(ClassModel::class);
     $propertyModel = Mockery::mock(PropertyModel::class);
     $builderFactory = Mockery::mock(BuilderFactory::class);
     $parser = Mockery::mock(ParserAbstract::class);
     $traverser = Mockery::mock(NodeTraverserInterface::class);
     $namespace = Mockery::mock(Namespace_::class);
     $class = Mockery::mock(Class_::class);
     $property = Mockery::mock(Property::class);
     $classModel->shouldReceive('getNamespace')->times(1)->withNoArgs()->andReturn(self::CLASS_NAMESPACE);
     $classModel->shouldReceive('getName')->times(1)->withNoArgs()->andReturn(self::CLASS_NAME);
     $classModel->shouldReceive('getInterface')->times(1)->withNoArgs()->andReturn(self::CLASS_INTERFACE);
     $classModel->shouldReceive('getProperties')->times(1)->withNoArgs()->andReturn([$propertyModel]);
     $propertyModel->shouldReceive('getName')->times(1)->withNoArgs()->andReturn('testProperty');
     $propertyModel->shouldReceive('getDefaultValue')->times(1)->withNoArgs()->andReturn([]);
     $propertyModel->shouldReceive('getVisibility')->times(1)->withNoArgs()->andReturn('foo');
     $builderFactory->shouldReceive('namespace')->times(1)->with(self::CLASS_NAMESPACE)->andReturn($namespace);
     $builderFactory->shouldReceive('class')->times(1)->with(self::CLASS_NAME)->andReturn($class);
     $builderFactory->shouldReceive('property')->times(1)->with(self::CLASS_PROPERTY)->andReturn($property);
     $class->shouldReceive('implement')->times(1)->with(self::CLASS_INTERFACE)->andReturnNull();
     $property->shouldReceive('setDefault')->times(1)->with([])->andReturnNull();
     $transformer = new ClassModelTransformer($builderFactory, $parser, $traverser);
     $transformer->transform($classModel);
 }
示例#2
0
 /**
  * Write the model to a file
  *
  * @param ClassModel $classModel
  */
 public function write(ClassModel $classModel)
 {
     // create cache directory and get filename
     $path = $this->cacheDir . $this->interfaceToPath($classModel->getInterface());
     $this->filesystem->mkdir($path);
     $filename = $path . DIRECTORY_SEPARATOR . $classModel->getName() . '.php';
     // convert class model to string
     $statements = $this->classModelTransformer->transform($classModel);
     $class = $this->printer->prettyPrintFile($statements);
     // write file
     $this->filesystem->dumpFile($filename, $class);
 }