public function testSchema()
{
$model = $this->_model;
$model::config();
$modelName = '';
$expected = array($modelName => array('id', 'author_id', 'title', 'created'));
$result = $this->_db->schema(new Query(compact('model')));
$this->assertEqual($expected, $result);
$query = new Query(compact('model') + array('fields' => '*'));
$result = $this->_db->schema($query);
$this->assertEqual($expected, $result);
$query = new Query(array('type' => 'read', 'model' => $this->_model, 'fields' => array('MockDatabaseComment'), 'with' => array('MockDatabaseComment')));
$expected = array('' => array('id'), 'MockDatabaseComment' => array('id', 'post_id', 'author_id', 'body', 'created'));
$result = $this->_db->schema($query);
$this->assertEqual($expected, $result);
$options = array('type' => 'read', 'model' => $this->_model, 'with' => 'MockDatabaseComment');
$options['fields'] = array('id', 'title');
$result = $this->_db->schema(new Query($options));
$expected = array($modelName => $options['fields']);
$this->assertEqual($expected, $result);
$options['fields'] = array('MockDatabasePost.id', 'MockDatabasePost.title', 'MockDatabaseComment.body');
$result = $this->_db->schema(new Query($options));
$expected = array($modelName => array('id', 'title'), 'MockDatabaseComment' => array('body'));
$this->assertEqual($expected, $result);
$options['fields'] = array('MockDatabasePost' => array('id', 'title'), 'MockDatabaseComment' => array('body', 'created'));
$result = $this->_db->schema(new Query($options));
$expected = array($modelName => array('id', 'title'), 'MockDatabaseComment' => array('body', 'created'));
$this->assertEqual($expected, $result);
$options['fields'] = array('MockDatabasePost', 'MockDatabaseComment');
$result = $this->_db->schema(new Query($options));
$expected = array($modelName => array('id', 'author_id', 'title', 'created'), 'MockDatabaseComment' => array('id', 'post_id', 'author_id', 'body', 'created'));
$this->assertEqual($expected, $result);
}