Question

I Have this method in my ProyectoInvestigacionController.groovy

def filtrar(){
    def consulta="%"+params.consulta.trim()+"%"
    if(consulta.isEmpty()==false){
        def proyectoInvestigacionInstance=ProyectoInvestigacion.createCriteria().list{
            or {
                like("titulo",consulta)
                like("codigo",consulta)
                like("resumen",consulta)
            }
        }
}

The Unit Test

@TestMixin(GrailsUnitTestMixin)    
@TestFor(ProyectoInvestigacionController)
@Mock([ProyectoInvestigacion])
class ProtectoInvestigacionFiltrarTests {



void testFiltrar() {
def ProyectoInvestigacion proyecto=new ProyectoInvestigacion(titulo:"Primer Proyecto Investigacion",
        resumen:"Proyecto filtrar",
        fechainicio:new Date("01/01/2012"),
        fechafin:new Date("12/30/2013"),
        codigo:"01",
        estado:"Aprobado").save()

assertEquals 1, ProyectoInvestigacion.count()

    def consulta="Proyecto filt"

    params.consulta=consulta
    def model =controller.filtrar()

    println response.getXml().toString()

    assertTrue response.getXml().toString().contains("Proyecto filtrar")        
}

this test works fine!!
Now with HasMany association!!
I Have the method filtrar in my ParticipacionController.groovy

def filtrar(){
    def consulta="%"+params.consulta.trim()+"%"
    if(consulta.isEmpty()==false){
        def participacionInstance=Participacion.createCriteria().list{
            or{
                proyectoinvestigacion{
                    or {
                        like("titulo",consulta)
                        like("codigo",consulta)
                        like("resumen",consulta)
                    }
                }
                investigador{
                    or {
                        like("apellido",consulta)
                        like("nombre",consulta)
                    }
                }
            }
        }
        }   
}

The Unit Test

@TestMixin(GrailsUnitTestMixin)
@TestFor(ParticipacionController)
@Mock([Participacion,Alumno,Docente,ProyectoInvestigacion,Investigador])
class ParticipacionFiltrarTests {
Alumno alumno1
Docente docente1
ProyectoInvestigacion proyecto

void setUp() {
    alumno1= new Alumno(nombre:"ruben",apellido:"pennise",email:"Ruben@hotmail.com",
        matriculaUniversitaria:"795",estado:"Activo").save()
    docente1= new Docente(nombre:"oscar",apellido:"quinteros",email:"oequinteros@hotmail.com",
        matriculaProfesional:"789").save()
    proyecto=new ProyectoInvestigacion(titulo:"Proyecto Investigacion Filtrar Participacion",
            resumen:"resumen del proyecto",
            fechainicio:new Date("01/01/2012"),
            fechafin:new Date("12/30/2013"),
            codigo:"01",
            estado:"Aprobado").save()
}

void tearDown() {
    // Tear down logic here
}

void testFiltrar() {
def participacion= new Participacion(rol:'Director',dedicacion:120,
        fechadesde:new Date("01/01/2012"),fechahasta:new Date("12/30/2013"),investigador:docente1,proyectoinvestigacion:proyecto).save()
assertEquals 1, Participacion.count()

    def consulta="oscar"

    params.consulta=consulta
    def model =controller.filtrar()

    println response.getXml().toString()

    // el getText o getXml no devuelven lo correcto pero en run si, porque?
    assertTrue response.getXml().toString().contains("oequinteros@hotmail.com")     
    assertTrue response.getXml().toString().contains("Proyecto Investigacion Filtrar Participacion")
}

this Test not works!! it is possible querying hasmany relationship with createcriteria using mockDomain?

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top