mirror of
https://github.com/silverstripe/silverstripe-userforms.git
synced 2024-10-22 17:05:42 +02:00
91 lines
2.9 KiB
PHP
91 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace SilverStripe\UserForms\Tests\Model\EditableFormField;
|
|
|
|
use SilverStripe\Core\Config\Config;
|
|
use SilverStripe\Dev\SapphireTest;
|
|
use SilverStripe\Forms\CompositeField;
|
|
use SilverStripe\Forms\HTMLEditor\HTMLEditorConfig;
|
|
use SilverStripe\Forms\HTMLEditor\HTMLEditorField;
|
|
use SilverStripe\Forms\LiteralField;
|
|
use SilverStripe\UserForms\Model\EditableFormField\EditableLiteralField;
|
|
|
|
/**
|
|
* Tests the {@see EditableLiteralField} class
|
|
*/
|
|
class EditableLiteralFieldTest extends SapphireTest
|
|
{
|
|
protected function setUp()
|
|
{
|
|
parent::setUp();
|
|
$cmsConfig = HTMLEditorConfig::get('cms');
|
|
HTMLEditorConfig::set_active($cmsConfig);
|
|
}
|
|
|
|
/**
|
|
* Tests the sanitisation of HTML content
|
|
*/
|
|
public function testSanitisation()
|
|
{
|
|
$rawContent = '<h1>Welcome</h1><script>alert("Hello!");</script><p>Giant Robots!</p>';
|
|
$safeContent = '<h1>Welcome</h1><p>Giant Robots!</p>';
|
|
$field = new EditableLiteralField();
|
|
|
|
// Test with sanitisation enabled
|
|
Config::modify()->set(HTMLEditorField::class, 'sanitise_server_side', true);
|
|
$field->setContent($rawContent);
|
|
$this->assertEquals($safeContent, $field->getContent());
|
|
|
|
// Test with sanitisation disabled
|
|
Config::modify()->remove(HTMLEditorField::class, 'sanitise_server_side');
|
|
$field->setContent($rawContent);
|
|
$this->assertEquals($rawContent, $field->getContent());
|
|
}
|
|
|
|
public function testHideLabel()
|
|
{
|
|
$field = new EditableLiteralField([
|
|
'Title' => 'Test label'
|
|
]);
|
|
|
|
$this->assertContains('Test label', $field->getFormField()->FieldHolder());
|
|
$this->assertEquals('Test label', $field->getFormField()->Title());
|
|
|
|
$field->HideLabel = true;
|
|
$this->assertNotContains('Test label', $field->getFormField()->FieldHolder());
|
|
$this->assertEmpty($field->getFormField()->Title());
|
|
}
|
|
|
|
public function testLiteralFieldHasUpdateFormFieldMethodCalled()
|
|
{
|
|
$field = $this->getMockBuilder(EditableLiteralField::class)
|
|
->setMethods(array('doUpdateFormField'))
|
|
->getMock();
|
|
|
|
$field->expects($this->once())->method('doUpdateFormField');
|
|
|
|
$field->getFormField();
|
|
}
|
|
|
|
/**
|
|
* LiteralFields do not allow field names, etc. Instead, the field is contained within a composite field. This
|
|
* test ensures that this structure is correct.
|
|
*/
|
|
public function testLiteralFieldIsContainedWithinCompositeField()
|
|
{
|
|
$field = new EditableLiteralField;
|
|
$formField = $field->getFormField();
|
|
|
|
$this->assertInstanceOf(
|
|
CompositeField::class,
|
|
$formField,
|
|
'Literal field is contained within a composite field'
|
|
);
|
|
$this->assertInstanceOf(
|
|
LiteralField::class,
|
|
$formField->FieldList()->first(),
|
|
'Actual literal field exists in composite field children'
|
|
);
|
|
}
|
|
}
|