<?php

class CandidatoTest extends CDbTestCase {
    
    public $fixtures = array(
        'datos_candidatos' => 'Candidato',
        'datos_usuarios' => 'Usuario',
    );
    
    
    public function testRead() {
        $fila = $this->datos_candidatos('candidato1');
        $this->assertTrue($fila instanceof Candidato);
        $this->assertEquals('José', $fila->nombre);
    }    
    
    public function testCreate() {
        $candidato = new Candidato();
        Yii::app()->user->setId($this->datos_usuarios('user1')->id);
        
        $candidato->nombre = 'Juan';       
        $this->assertTrue($candidato->save());

        $guardado = Candidato::model()->findByPk($candidato->id);
        
        $this->assertTrue($guardado instanceof Candidato);
        $this->assertEmpty(array_diff($candidato->attributes, $guardado->attributes));
        $this->assertEquals(Yii::app()->user->id, $guardado->usuario_alta);
    }
    
    public function testUpdate() {
        $candidato = Candidato::model()->findByPk($this->datos_candidatos['candidato1']['id']);
        $this->assertTrue($candidato instanceof Candidato);        
        $candidato->apellidos = $this->datos_candidatos['candidato2']['apellidos'];
        $this->assertTrue($candidato->save());
        $candidato = Candidato::model()->findByPk($this->datos_candidatos['candidato1']['id']);
        $this->assertEquals($this->datos_candidatos['candidato2']['apellidos'], $candidato->apellidos);
    }
    
    public function testDelete() {
        $candidato = Candidato::model()->findByPk($this->datos_candidatos['candidato2']['id']);
        $this->assertTrue($candidato instanceof Candidato);
        $this->assertTrue($candidato->delete());
        $this->assertNull(Candidato::model()->findByPk($this->datos_candidatos['candidato2']['id']));
    }
    
    public function testOpcionesGenero() {
        $options = Candidato::model()->OpcionesGenero;
        $this->assertTrue(is_array($options));
        $this->assertEquals(2, count($options));
        $this->assertTrue(in_array('Hombre', $options));
        $this->assertTrue(in_array('Mujer', $options));
    }
    
    public function testOpcionesEstado() {
        $options = Candidato::model()->OpcionesEstado;
        $this->assertTrue(is_array($options));
        $this->assertEquals(7, count($options));
        $this->assertTrue(in_array('Pendiente de clasificar', $options));
        $this->assertTrue(in_array('Rechazado por antecedentes', $options));
        $this->assertTrue(in_array('Rechazado por no cumplir requisitos mínimos', $options));
        $this->assertTrue(in_array('Rechazado por perfil no demandado', $options));
        $this->assertTrue(in_array('Disponible', $options));
        $this->assertTrue(in_array('Disponible asignado exclusivo', $options));
        $this->assertTrue(in_array('No disponible', $options));
    }
    
}
?>
