Source

						public function testCustomEncodeHandler() {
		$response = new Response();
		$response->type('csv');

		Media::type('csv', 'application/csv', array('encode' => function($data) {
			ob_start();
			$out = fopen('php://output', 'w');
			foreach ($data as $record) {
				fputcsv($out, $record);
			}
			fclose($out);
			return ob_get_clean();
		}));

		$data = array(
			array('John', 'Doe', '123 Main St.', 'Anytown, CA', '91724'),
			array('Jane', 'Doe', '124 Main St.', 'Anytown, CA', '91724')
		);

		Media::render($response, $data);
		$result = $response->body;
		$expected = 'John,Doe,"123 Main St.","Anytown, CA",91724' . "\n";
		$expected .= 'Jane,Doe,"124 Main St.","Anytown, CA",91724' . "\n";
		$this->assertEqual(array($expected), $result);

		$result = $response->headers['Content-type'];
		$this->assertEqual('application/csv; charset=UTF-8', $result);
	}