Con tanto festivo de por medio, ya casi se me pasaba avisar aquí de que el equipo de jobsket en pleno, vamos a participar en el evento Spring 2GX Day, el 19 de Febrero de 2010 en la Escuela Politécnica Superior de la Universidad CEU San Pablo de Madrid.

Este es el primer evento en España que gira exclusivamente a las tecnologías relacionadas con Spring, Groovy y Grails; la asistencia es gratuita y está organizado conjuntamente por javaHispano y SpringSource.
La agenda no está completamente cerrada, pero ya se han confirmado como ponentes internacionales a Graeme Rocher y Joris Kuipers. Además de, entre otros, a Nacho Brito y Álvaro Sánchez-Mariscal de Escuela de Groovy.
En nuestro caso hablaremos de productividad con Grails y Java
Una de las características más importantes de Grails es la gran productividad que ofrece en el desarrollo, a la vez que se aprovecha toda la potencia de la plataforma Java a través de su integración con el framework Spring. Aún así, mucha gente puede estar tentada a deshechar la plataforma por estar asociada con Groovy y pensar que se trata de un todo o nada. En esta charla se mostrará como construimos Jobsket sobre Grails explotando al máximo la productividad y rapidez de desarrollo que aporta y como aprovechamos sus capacidades de integración para interactuar con todos los servicios Java que teníamos desarrollados
También quiero aprovechar a agradecer a Sergi Almar que haya contado con nosotros para participar en el evento. ¿Nos vemos en el Spring 2GX Day? :)
En jobsket terminamos bien el año, lanzando las funcionalidades para empresas y apareciendo en varios medios de comunicación que se hicieron eco de ello (principalmente en las zonas de influencia de Martín, Jordi y mías; y también aparecimos en otros medios como Expansión), además de en varios blogs relacionados con tecnología y empleo.
Y este año parece que lo hemos cogido también con buen pie, el día 2 nos enterábamos que habíamos sido seleccionados para competir el BBVA Open Talent, donde ya he visto varios proyectos cercanos que también han sido aceptados como finalistas(suerte! ;)). Y cómo no, si queréis, podéis votarnos aunque estemos lejos de los proyectos que lideran el ranking.
La segunda buena noticia nos llegó ayer, al ver que nos habían seleccionado entre los finalistas del Premio Joven Empresa Innovadora, convocado por la Fundación Zaragoza Ciudad del Conocimiento.
En fin, que estar en la pomada en dos concursos que son tan diferentes, le alegra a uno el día :)
Me pasa el meme Miquel Camps, a.k.a gafeman. Y aunque no suelo ponerme objetivos oficialmente, voy a hacer una excepción :)
- 1. Hacer rentable jobsket, este objetivo es el principal y oficialísimo XD. Como supongo que muchos sabréis, este miércoles hemos lanzado los planes para empresas, que es de lo que pretendemos vivir :).
- 2. Crear un plugin de geolocalización con google maps para Grails, lo tengo en la cabeza, me falta el tiempo para escribirlo, quizás con un par de fines de semana tontos...
- 3. Aprender Ruby de verdad, tengo vacíos de conocimiento acerca de este lenguaje, que probablemente sea de los más divertidos con los que programar.
- 4. Este me da vergüenza hasta ponerlo: retomar y lanzar flatee, que me da mucha pena dejarlo como lo dejé :(, cerca de estar lo suficientemente acabado como para poder lanzar una primera versión.
- 5. Hacer mis pinitos con alguno de los lenguajes de programación funcional que se oyen desde hace un tiempo (Erlang, Scala, Clojure...).
- 6. Volver a leer más libros, que este año he leído bastante menos que el anterior.
- 7. Tratar de mover algún mini-evento-reunión de
alcohólicos anónimos técnicos en Zaragoza, es algo que hemos hablado algunos muchas veces, se echa en falta algún evento, pero quizás seamos demasiado frikis y realmente no haya hueco para eso XD. Además, que como ahora no vivo allí, aunque me pase casi cada semana, para mi ahora es todavía más difícil moverlo.
- 8. Mejorar mi Inglés. Sí, soy muy torpe con el inglés, aunque leyendo no suelo tener excesivos problemas, es mi eterno punto débil.
- 9. Organizarme y aprovechar mejor mi tiempo, es muy posible que me acabe haciendo con un pomodoro para ayudarme ;).
- 10. Ir por fin a vaquillas. Para justificar que nunca haya ido, diré que cuando he podido moverme ese fin de semana del año ha sido a los san fermines.
- 11. Mantener la constancia de ir al gimnasio. Empecé hace 2 meses y por ahora la mantengo(aunque ya no salgo a correr), la verdad que me está ayudando bastante a evitar los problemillas de espalda y de rodilla que he tenido en algunas temporadas, además de ayudarme a despejar la mente.
- 12. Tener una oficina donde trabajar, o algo que se le parezca. Lo de trabajar en casa, bares o lugares así, está bien para hacerlo algunos ratos, pero después de año y medio uno empieza a estar cansado de esta situación.
Pues nada, veremos lo que se cumple y lo que no.
Y si tienen ganas de seguir el meme, les animo hacerlo a Jordi Monné, Jesús Navarrete, Dani Torres Burriel, Alberto Gimeno, José Félix Lucía, David Bonilla, Manuel Recena, Abel Muiño, Mamen Pradel, Juan Luis Belmonte, Raúl Expósito, Isa Casanova, Sergi Almar... y paro aquí que igual ya es demasiada gente. Y sí, a algunos os lo paso para ver si dáis señales de vida, porque escribís todavía menos que yo XD.
Aunque en la documentación de Grails aparece un ejemplo de como escribir un test para una acción que recibe una petición en formato XML o JSON, no lo hace de como escribir un test de una acción que genera el JSON, que tampoco es que sea precisamente complicado.
Si lo único que quisieramos probar es que, en una cadena JSON, se está devolviendo algún valor que estuvieramos esperando, podríamos utilizar el contenido que devuelve la response como una cadena(con contentAsString) y hacer alguna comprobación sobre el texto:
def response = controller.response.contentAsString
assertTrue response.contains('"name":"Gustavo Poyet"')
assertTrue response.contains('"goals":63')
Pero claro, este test es un muy ligero y no prueba demasiado. Si quisieramos probar más a fondo la respuesta(estructura, un elemento concreto de un array, etc), podríamos usar contains sobre la cadena devuelta, convertir tipos... vamos, que sería más que posible que el código del test terminara siendo infumable. Pero está disponible out of the box el converter JSON de Grails, que permite testear más a fondo fácilmente y con un código mucho más claro.
Es muy posible que si alguien se ve en la necesidad de escribir un test para una acción que devuelve un JSON, ya conozca el converter, por que es una de las alternativas que hay para hacerlo:
render object as JSON
Pues esa misma clase, tiene el paso contrario, pasar una cadena a un objeto groovy/java(JSONElement). De esta forma ya nos ahorraremos trabajo sucio y el código quedará bastante claro:
def response = controller.response.contentAsString
def responseJSON = grails.converters.JSON.parse(response)
assertNotNull responseJSON.players
assertEquals 5, responseJSON.players.size()
assertEquals 63, responseJSON.players[0].goals
assertEquals "Gustavo Poyet", responseJSON.players[0].name