<?php

class CandidatoIdiomaTest extends CDbTestCase {
    
    public $fixtures = array(
        'datos_candidatos' => 'Candidato',
        'datos_idiomas' => 'Idioma',
    );
    
    public function testCreate() {
        $id = $this->datos_candidatos['candidato3']['id'];
        $niveles = CandidatoIdioma::model()->OpcionesNivel;

        $candidato = Candidato::model()->findByPk($id);        
        $this->assertTrue($candidato instanceof Candidato);
        
        $idioma = new CandidatoIdioma();        
        $idioma->idioma = $this->datos_idiomas['idioma1']['idioma'];
        $idioma->candidato_id = $candidato->id;        
        $idioma->conversacion = $niveles[0];
        $idioma->lectura_traduccion = $niveles[1];
        
        $this->assertTrue($idioma->save());        
        
        $candidato = Candidato::model()->findByPk($id);
        $idiomas = $candidato->idiomas;
        $this->assertEquals(1, $candidato->idiomasCount);        
        $idioma = $idiomas[0];
        $this->assertTrue($idioma instanceof CandidatoIdioma);
                 
        $this->assertEquals($this->datos_idiomas['idioma1']['idioma'], $idioma->idioma);
        $this->assertEquals($niveles[0], $idioma->conversacion);
        $this->assertEquals($niveles[1], $idioma->lectura_traduccion);
    }
    
    public function testDelete() {
        $id = $this->datos_candidatos['candidato1']['id'];
        
        $candidato = Candidato::model()->findByPk($id);        
        $this->assertTrue($candidato instanceof Candidato);
        $this->assertEquals(2, $candidato->idiomasCount);
        
        $this->assertTrue($candidato->delete());        
        $this->assertNull(Candidato::model()->findByPk($id));
    }

    public function testUpdate() {
        $id = $this->datos_candidatos['candidato3']['id'];        

        $idiomas = CandidatoIdioma::model()->findAll('(candidato_id = :candidato_id)', array(':candidato_id' => $id));
        $this->assertEquals(1, count($idiomas));
        $this->assertEquals($this->datos_idiomas['idioma1']['idioma'], $idiomas[0]->idioma);
        
        $idiomas[0]->idioma = $this->datos_idiomas['idioma2']['idioma'];
        $this->assertTrue($idiomas[0]->save());
        
        $idiomas = CandidatoIdioma::model()->findAll('(candidato_id = :candidato_id)', array(':candidato_id' => $id));
        $this->assertEquals(1, count($idiomas));
        $this->assertEquals($this->datos_idiomas['idioma2']['idioma'], $idiomas[0]->idioma);
    }

    public function testWith() {
       $id = $this->datos_candidatos['candidato3']['id'];
       
       $candidato = Candidato::model()->findByPk($id);
       $this->assertTrue($candidato instanceof Candidato);
    }
    
    
}


?>
