silverstripe-framework/tests/fieldtypes/TextTest.php
Sean Harvey 7a065b087a ENHANCEMENT Strip tags before limiting characters when using LimitCharacters() on HTMLText field type
MINOR Added test to TextTest for LimitCharacters()
MINOR Added test HTMLTextTest and added test case for LimitCharacters()



git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@71795 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-02-12 09:38:43 +00:00

70 lines
2.1 KiB
PHP

<?php
/**
* @package sapphire
* @subpackage tests
*/
class TextTest extends SapphireTest {
/**
* Test {@link Text->LimitCharacters()}
*/
function testLimitCharacters() {
$cases = array(
'The little brown fox jumped over the lazy cow.' => 'The little brown fox...',
'<p>This is some text in a paragraph.</p>' => '<p>This is some text...'
);
foreach($cases as $originalValue => $expectedValue) {
$textObj = new Text('Test');
$textObj->setValue($originalValue);
$this->assertEquals($expectedValue, $textObj->LimitCharacters());
}
}
/**
* Test {@link Text->LimitWordCount()}
*/
function testLimitWordCount() {
$cases = array(
/* Standard words limited, ellipsis added if truncated */
'The little brown fox jumped over the lazy cow.' => 'The little brown...',
' This text has white space around the ends ' => 'This text has...',
/* Words less than the limt word count don't get truncated, ellipsis not added */
'Two words' => 'Two words', // Two words shouldn't have an ellipsis
'One' => 'One', // Neither should one word
'' => '', // No words produces nothing!
/* HTML tags get stripped out, leaving the raw text */
'<p>Text inside a paragraph tag should also work</p>' => 'Text inside a...',
'<p><span>Text nested inside another tag should also work</span></p>' => 'Text nested inside...',
'<p>Two words</p>' => 'Two words'
);
foreach($cases as $originalValue => $expectedValue) {
$textObj = new Text('Test');
$textObj->setValue($originalValue);
$this->assertEquals($expectedValue, $textObj->LimitWordCount(3));
}
}
/**
* Test {@link Text->LimitWordCountXML()}
*/
function testLimitWordCountXML() {
$cases = array(
'<p>Stuff & stuff</p>' => 'Stuff &amp;...',
"Stuff\nBlah Blah Blah" => "Stuff<br />Blah Blah...",
"Stuff<Blah Blah" => "Stuff&lt;Blah Blah",
"Stuff>Blah Blah" => "Stuff&gt;Blah Blah"
);
foreach($cases as $originalValue => $expectedValue) {
$textObj = new Text('Test');
$textObj->setValue($originalValue);
$this->assertEquals($expectedValue, $textObj->LimitWordCountXML(3));
}
}
}
?>