<?php
class
Pluf_Tests_Model_SlugField_Model
extends
Pluf_Model
{
public
$_model
=
__CLASS__
;
function
init()
{
$this
->_a[
'verbose'
] =
'slug'
;
$this
->_a[
'table'
] =
'slug'
;
$this
->_a[
'model'
] =
__CLASS__
;
$this
->_a[
'cols'
] =
array
(
'id'
=>
array
(
'type'
=>
'Pluf_DB_Field_Sequence'
,
'blank'
=> true,
),
'slug_default_length'
=>
array
(
'type'
=>
'Pluf_DB_Field_Slug'
,
),
'slug_custom_legnth'
=>
array
(
'type'
=>
'Pluf_DB_Field_Slug'
,
'widget_attrs'
=>
array
(
'maxlength'
=> 5,
),
),
);
}
}
class
Pluf_Tests_Model_SlugField
extends
UnitTestCase
{
function
__construct()
{
parent::__construct(
'Test the slug field.'
);
}
function
testSlugifyLowercase()
{
$slug
= Pluf_DB_Field_Slug::slugify(
'Pluf'
);
$this
->assertEqual(
'pluf'
,
$slug
);
}
function
testSlugifyReplaceWhiteSpaces()
{
$slug
= Pluf_DB_Field_Slug::slugify(
'ceondo pluf'
);
$this
->assertEqual(
'ceondo-pluf'
,
$slug
);
$slug
= Pluf_DB_Field_Slug::slugify(
'ceondo pluf'
);
$this
->assertEqual(
'ceondo-pluf'
,
$slug
);
$slug
= Pluf_DB_Field_Slug::slugify(
' ceondo pluf'
);
$this
->assertEqual(
'ceondo-pluf'
,
$slug
);
$slug
= Pluf_DB_Field_Slug::slugify(
'ceondo pluf '
);
$this
->assertEqual(
'ceondo-pluf'
,
$slug
);
}
function
testSlugifyNonASCII()
{
$slug
= Pluf_DB_Field_Slug::slugify(
'ceondo,pluf'
);
$this
->assertEqual(
'ceondo-pluf'
,
$slug
);
$slug
= Pluf_DB_Field_Slug::slugify(
'ceondo€pluf'
);
$this
->assertEqual(
'ceondo-pluf'
,
$slug
);
$slug
= Pluf_DB_Field_Slug::slugify(
'éiùàñ'
);
$this
->assertEqual(
'eiuan'
,
$slug
);
}
function
testSlugifyWithCustomSeparator()
{
$backup
=
$GLOBALS
[
'_PX_config'
];
$GLOBALS
[
'_PX_config'
][
'slug-separator'
] =
'_'
;
$slug
= Pluf_DB_Field_Slug::slugify(
'ceondo pluf'
);
$this
->assertEqual(
'ceondo_pluf'
,
$slug
);
$slug
= Pluf_DB_Field_Slug::slugify(
'ceondo pluf'
);
$this
->assertEqual(
'ceondo_pluf'
,
$slug
);
$GLOBALS
[
'_PX_config'
] =
$backup
;
}
function
testCreate()
{
$db
= Pluf::db();
$schema
=
new
Pluf_DB_Schema(
$db
);
$m
=
new
Pluf_Tests_Model_SlugField_Model();
$schema
->model =
$m
;
$schema
->createTables();
$m
->slug_default_length =
'Pluf, supported by Céondo Ltd.'
;
$m
->create();
$this
->assertEqual(1,
$m
->id);
$m
=
new
Pluf_Tests_Model_SlugField_Model(1);
$this
->assertEqual(
'pluf-supported-by-ceondo-ltd'
,
$m
->slug_default_length);
$schema
->dropTables();
}
}