Extends
lithium\test\Unit
Tests setting, getting and removing custom media types.
Returns
voidSource
public function testMediaTypes() {
// Get a list of all available media types:
$types = Media::types(); // returns array('html', 'json', 'rss', ...);
$expected = array(
'html', 'htm', 'form', 'json', 'rss', 'atom', 'css', 'js', 'text', 'txt', 'xml'
);
$this->assertEqual($expected, $types);
$this->assertEqual($expected, Media::formats());
$result = Media::type('json');
$expected = 'application/json';
$this->assertEqual($expected, $result['content']);
$expected = array(
'cast' => true, 'encode' => 'json_encode', 'decode' => $result['options']['decode']
);
$this->assertEqual($expected, $result['options']);
// Add a custom media type with a custom view class:
Media::type('my', 'text/x-my', array('view' => 'my\custom\View', 'layout' => false));
$result = Media::types();
$this->assertTrue(in_array('my', $result));
$result = Media::type('my');
$expected = 'text/x-my';
$this->assertEqual($expected, $result['content']);
$expected = array(
'view' => 'my\custom\View', 'template' => null, 'layout' => null,
'encode' => null, 'decode' => null, 'cast' => true, 'conditions' => array()
);
$this->assertEqual($expected, $result['options']);
// Remove a custom media type:
Media::type('my', false);
$result = Media::types();
$this->assertFalse(in_array('my', $result));
}