FIX: VirtualPage missing methods from target page (fixes #2408)

This commit is contained in:
Loz Calver 2019-04-12 15:45:50 +01:00
parent 4e70a6bc70
commit 7592db918f
2 changed files with 16 additions and 0 deletions

View File

@ -489,6 +489,19 @@ class VirtualPage extends Page
return $copy && $copy->exists() && $copy->hasField($field);
}
/**
* @param string $method
* @return bool
*/
public function hasMethod($method)
{
if (parent::hasMethod($method)) {
return true;
}
$copy = $this->CopyContentFrom();
return $copy && $copy->exists() && $copy->hasMethod($method);
}
/**
* Return the "casting helper" (a piece of PHP code that when evaluated creates a casted value object) for a field
* on this object.

View File

@ -669,6 +669,9 @@ class VirtualPageTest extends FunctionalTest
{
/** @var VirtualPage $virtualPage */
$virtualPage = $this->objFromFixture(VirtualPage::class, 'vp4');
$this->assertTrue($virtualPage->hasMethod('modelMethod'));
$this->assertEquals('hi there', $virtualPage->modelMethod());
/** @var VirtualPageTest_ClassAController $controller */
$controller = ModelAsController::controller_for($virtualPage);
$this->assertInstanceOf(VirtualPageTest_ClassAController::class, $controller);