public function testSchema() {
$model = $this->_model;
$modelName = $model::meta('name');
$expected = array($modelName => array(
'id', 'author_id', 'title', 'created'
));
$result = $this->db->schema(new Query(array('model' => $this->_model)));
$this->assertEqual($expected, $result);
$query = new Query(array('model' => $this->_model, 'fields' => '*'));
$result = $this->db->schema($query);
$this->assertEqual($expected, $result);
$query = new Query(array(
'model' => $this->_model,
'fields' => array('MockDatabaseComment'),
'with' => array('MockDatabaseComment')
));
$expected = array(
'MockDatabaseComment' => array(
'id', 'post_id', 'author_id', 'body', 'created'
)
);
$result = $this->db->schema($query);
$this->assertEqual($expected, $result);
$options = array(
'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);
}