'',
];
$this->templates = new StringTemplate($templates);
$this->context = new NullContext([]);
}
/**
* Test render in a simple case.
*/
public function testRenderSimple(): void
{
$input = new FileWidget($this->templates);
$result = $input->render(['name' => 'image'], $this->context);
$expected = [
'input' => ['type' => 'file', 'name' => 'image'],
];
$this->assertHtml($expected, $result);
}
/**
* Test render with a value
*/
public function testRenderAttributes(): void
{
$input = new FileWidget($this->templates);
$data = ['name' => 'image', 'required' => true, 'val' => 'nope'];
$result = $input->render($data, $this->context);
$expected = [
'input' => ['type' => 'file', 'required' => 'required', 'name' => 'image'],
];
$this->assertHtml($expected, $result);
}
/**
* Ensure templateVars option is hooked up.
*/
public function testRenderTemplateVars(): void
{
$this->templates->add([
'file' => '',
]);
$input = new FileWidget($this->templates);
$data = [
'templateVars' => ['custom' => 'value'],
'name' => 'files',
];
$result = $input->render($data, $this->context);
$expected = [
'input' => [
'type' => 'file',
'name' => 'files',
'custom' => 'value',
],
];
$this->assertHtml($expected, $result);
}
/**
* Test secureFields
*/
public function testSecureFields(): void
{
$input = new FileWidget($this->templates);
$data = ['name' => 'image', 'required' => true, 'val' => 'nope'];
$this->assertEquals(['image'], $input->secureFields($data));
Configure::write('App.uploadedFilesAsObjects', false);
$this->assertEquals(
['image[name]', 'image[type]', 'image[tmp_name]', 'image[error]', 'image[size]'],
$input->secureFields($data)
);
}
}