Tests setting, getting and removing custom media types.

Returns

void

Source

						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));
	}