El lunes, 20 de octubre de 2014, Andres Riancho <<a href="mailto:andres.riancho@gmail.com">andres.riancho@gmail.com</a>> escribió:<div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">2014-10-20 18:27 GMT-03:00 Sebastián Seba <<a href="javascript:;" onclick="_e(event, 'cvml', 'ssebastianj@gmail.com')">ssebastianj@gmail.com</a>>:<br>
> El lunes, 20 de octubre de 2014, Andres Riancho <<a href="javascript:;" onclick="_e(event, 'cvml', 'andres.riancho@gmail.com')">andres.riancho@gmail.com</a>><br>
> escribió:<br>
>><br>
>> Lista,<br>
>><br>
>>     Para una aplicacion que vengo desarrollando migre a AngularJS +<br>
>> REST API implementada en Django (tastypie). Los desarrolladores de<br>
>> AngularJS "no tienen ni idea" de Python+Django y prontamente les<br>
>> tocará desarrollar la UI para algo que se ve asi:<br>
>><br>
>>     * POST /foo/ , aqui obtengo el ID del nuevo foo creado, 1<br>
>>     * POST /bar/?foo=1<br>
>>         * Aca el server normalmente iría a una API externa a hacer una<br>
>> consulta sobre foo-1<br>
>>         * En caso de error de la API externa se debería mostrar un<br>
>> error en AngularJS y continuar por un branch de error<br>
>>         * En caso de success se deberia seguir al proximo paso<br>
>>     * POST /spam/<br>
>><br>
>>     Mi pregunta es... existe en Django una manera recomendada para<br>
>> "mockear" esto? Estoy pensando quizás en un flag para runserver que<br>
>> patchee el call a la API externa... quizás:<br>
>><br>
>>     * python manage.py runserver --api-externa-error<br>
>>     * python manage.py runserver --api-externa-success<br>
>><br>
>>     Entonces ellos pueden desarrollar todo lo que necesitan para el<br>
>> caso de errores primero (corriendo en sus maquinas el runserver con<br>
>> --api-externa-error) y despues desarrollar para el caso de success<br>
>> (--api-externa-success)<br>
>><br>
>>     Se que lo que acabo de escribir es realizable, pero no se si es<br>
>> recomendable.<br>
>><br>
>>     Cual es la mejor forma de solucionar esto teniendo en cuenta los<br>
>> infinitamente bajos conocimientos de python de mis desarrolladores<br>
>> angular?<br>
>><br>
>> Saludos,<br>
>> --<br>
>> Andrés Riancho<br>
>> Project Leader at w3af - <a href="http://w3af.org/" target="_blank">http://w3af.org/</a><br>
>> Web Application Attack and Audit Framework<br>
>> Twitter: @w3af<br>
>> GPG: 0x93C344F3<br>
>> _______________________________________________<br>
>> pyar mailing list <a href="javascript:;" onclick="_e(event, 'cvml', 'pyar@python.org.ar')">pyar@python.org.ar</a><br>
>> <a href="http://listas.python.org.ar/listinfo/pyar" target="_blank">http://listas.python.org.ar/listinfo/pyar</a><br>
>><br>
>> PyAr - Python Argentina - Sitio web: <a href="http://www.python.org.ar/" target="_blank">http://www.python.org.ar/</a><br>
>><br>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de<br>
>> Argentina - <a href="http://www.usla.org.ar" target="_blank">http://www.usla.org.ar</a><br>
><br>
><br>
> No lo llegué a usar pero en la documentación de Django REST Framework me<br>
> encontré con Apiary [0] y que según parece te permite hacer mock [1] de una<br>
> API REST.<br>
><br>
> [0] <a href="http://apiary.io" target="_blank">http://apiary.io</a><br>
> [1] <a href="http://apiary.io/how-it-works" target="_blank">http://apiary.io/how-it-works</a><br>
<br>
Podría intentar hacer algo con apiary, pero no parece ser lo que estoy buscando.<br>
<br>
Estuve pensando un rato más y creo que voy a ir por un camino como:<br>
 * Definir un /config/ resource que solo este definido para DEBUG=True<br>
 * Ese config toma POSTs como {"mock-feature-1": true} ,<br>
{"mock-feature-1": false}, {"mock-feature-3": "{"foo": "bar"}"}<br>
 * Despues en el handler tengo funciones que en base a<br>
"mock-feature-3" hacen monkey-patching de alguna funcion para que<br>
devuelva {"foo": "bar"}<br>
 * El UI developer debería poder abrir una consola mientras que esta<br>
desarrollando y tirar comandos como estos para cambiar las<br>
"respuestas" de la API externa:<br>
        - curl <a href="http://127.0.0.1:8000/1.0/config/" target="_blank">http://127.0.0.1:8000/1.0/config/</a> -XPOST -H "Accept:<br>
application/json" -H "Content-Type: application/json" -d<br>
'{"mock-feature-1": false}'<br>
        - curl <a href="http://127.0.0.1:8000/1.0/config/" target="_blank">http://127.0.0.1:8000/1.0/config/</a> -XPOST -H "Accept:<br>
application/json" -H "Content-Type: application/json" -d<br>
'{"mock-feature-1": true}'<br>
<br>
Tiene el problema de que si el user cambia un archivo .py, runserver<br>
hace un reload y el monkey-patch (muy posiblemente) se pierde.<br>
<br>
Saludos,<br>
<br>
> Saludos.<br>
><br>
><br>
> --<br>
> Sebastián J. Seba<br>
><br>
><br>
> _______________________________________________<br>
> pyar mailing list <a href="javascript:;" onclick="_e(event, 'cvml', 'pyar@python.org.ar')">pyar@python.org.ar</a><br>
> <a href="http://listas.python.org.ar/listinfo/pyar" target="_blank">http://listas.python.org.ar/listinfo/pyar</a><br>
><br>
> PyAr - Python Argentina - Sitio web: <a href="http://www.python.org.ar/" target="_blank">http://www.python.org.ar/</a><br>
><br>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de<br>
> Argentina - <a href="http://www.usla.org.ar" target="_blank">http://www.usla.org.ar</a><br>
<br>
<br>
<br>
--<br>
Andrés Riancho<br>
Project Leader at w3af - <a href="http://w3af.org/" target="_blank">http://w3af.org/</a><br>
Web Application Attack and Audit Framework<br>
Twitter: @w3af<br>
GPG: 0x93C344F3<br>
_______________________________________________<br>
pyar mailing list <a href="javascript:;" onclick="_e(event, 'cvml', 'pyar@python.org.ar')">pyar@python.org.ar</a><br>
<a href="http://listas.python.org.ar/listinfo/pyar" target="_blank">http://listas.python.org.ar/listinfo/pyar</a><br>
<br>
PyAr - Python Argentina - Sitio web: <a href="http://www.python.org.ar/" target="_blank">http://www.python.org.ar/</a><br>
<br>
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - <a href="http://www.usla.org.ar" target="_blank">http://www.usla.org.ar</a> <br>
</blockquote><div><br></div><div>Estaba leyendo el libro Online de Harry Percival sobre testing con Django y recordé que en el índice hay varios temas sobre testing con Django, Javascript y mocking.</div><div><br></div><div>No llegué todavía a esos capítulos pero haciendo una búsqueda por la palabra "mock" aparecen varias cosas interesantes.</div></div><div><br></div><div>Enlace: <a href="http://chimera.labs.oreilly.com/books/1234000000754/index.html">http://chimera.labs.oreilly.com/books/1234000000754/index.html</a></div><br><br>-- <br><div dir="ltr"><i><b><font>Sebastián J. Seba</font></b></i></div><br>