/** * Create a new method model * * @param ClassModel $classModel * @param MethodDataProvider $methodDataProvider * @return MethodModel */ public function make(ClassModel $classModel, MethodDataProvider $methodDataProvider) { $methodModel = new MethodModel($classModel, $methodDataProvider->getName()); $parameters = $methodDataProvider->getParameters(); foreach ($parameters as $parameterDataProvider) { $parameter = $this->parameterModelFactory->make($methodModel, $parameterDataProvider); $methodModel->addParameter($parameter); } return $methodModel; }
public function testCanCreateParameterModel() { $methodModel = Mockery::mock(MethodModel::class); $parameterDataProvider = Mockery::mock(ParameterDataProvider::class); $parameterDataProvider->shouldReceive('hasDefaultValue')->times(1)->withNoArgs()->andReturn(true); $parameterDataProvider->shouldReceive('getName')->times(1)->withNoArgs()->andReturn('testParameter'); $parameterDataProvider->shouldReceive('getTypeHint')->times(1)->withNoArgs()->andReturn('array'); $parameterDataProvider->shouldReceive('getDefaultValue')->times(1)->withNoArgs()->andReturn([]); $factory = new ParameterModelFactory(); $parameterModel = $factory->make($methodModel, $parameterDataProvider); $this->assertInstanceOf(ParameterModel::class, $parameterModel); $this->assertSame('testParameter', $parameterModel->getName()); $this->assertTrue($parameterModel->isArray()); $this->assertSame([], $parameterModel->getDefaultValue()); }