Yo creo que en el FactoryBot de post podrias haber usado:
[false, true].sample
en vez de el if que hiciste, es mas legible y menos redundante.
Introducción
Qué aprenderás sobre la creación de APIs con Ruby on Rails
Configuración
Proyecto
Cómo crear un proyecto con RoR
Instalación de gemas necesarias
Configurar rspec + factorybot
Hello world (health endpoint)
Casos de uso para nuestra aplicación
Planeando nuestro modelo entidad relación
Crear modelos y validaciones + tests
Implementación de los modelos usando TDD
Listar y mostrar Post: pruebas
Listar y mostrar Post: implementación
Crear y editar POST: pruebas
Crear y editar POST: implementación
Usando ActiveModelSerializer
Filtrar posts - pruebas
Filtrar posts - implementacion
N+1 query problem: explicacion teórica
N+1 query problem: solución
Introducción a la autenticación con Tokens
Autenticación: pruebas del endpoint de detalle (/posts/{id})
Autenticación: generacio de auth token para el usuario
Autenticación: agregando autenticacion al controlador de Post
Autenticación: lógica de update, delete y create del controlador de blogposts
Autenticación: Finalizando pruebas de creación y actualización de blogposts
Probando el API con Postman
Explicación de Caching
Usando Cache para acelerar las búsquedas de posts
Background jobs y ActiveJob (explicación teórica)
Generar Reporte para procesar con ActiveJob
Enviar Reporte usando ActionMailer
Autenticacion con auth0 y JWT
Cierre
Cierre del curso
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 13
Preguntas 7
Yo creo que en el FactoryBot de post podrias haber usado:
[false, true].sample
en vez de el if que hiciste, es mas legible y menos redundante.
Realmente para mi ha sido difícil seguir el curso porque no siento que haya una explicación clara de porqué se debe hacer cada cosa, si uno está empezando en este mundo hay momentos en los que se siente perdido y/o estancado en el tema.
Es mi opinión, tal vez solo me pase a mi.
Para evitar el problema con los posts que tienen user_id en nil en FactoryBot 5, solo se tiene que agregar FactoryBot.use_parent_strategy = false
al principio del archivo de posts.rb
https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#associations
Para quien instaló las gemas sin el versionamiento (like me), por alguna razón el FactoryBot de última versión al hacer FactoryBot.build(:post) no genera el USER por lo que queda el post con un user_id: nil y se mantiene en valid? FALSE.
Recomiendo instalar las versiones que el profesor recomienda. O ahondar en la documentación con las versiones finales.
Cuando estamos en el ambiente de test, se podría utilizar el comando “reload!” en la consola de Rails, para refrescarla y evitar salir y volver a ejecutarla?
¿Pero ese token que el proveedor le retorna a la SPA, también se lo tiene que hacer saber a la App no es así? De otra forma… ¿el backend cómo se va a enterar que ese token que le están enviando es valido?
Hola! Sobre el refactor que se hizo a la validación de published
, encontré una mejor idea para testear esto, en vez de borrar la linea. Se puede usar el método validate_inclusion_of
. Más info aquí
RSpec.describe Post, type: :model do
describe 'validations' do
it 'validates presence of required fields' do
should validate_presence_of(:title)
should validate_presence_of(:content)
should validate_inclusion_of(:published).in_array([true, false])
should validate_presence_of(:user_id)
end
end
end
tuve un error usando la version 5.0 de factorybot me salia KeyError (Factory not registered: “post”)
asi que volvi a la version 4.0
A la hora de correr factory en el ambiente de pruebas de la consola rails, para crear post, con el comando FactoryBot.build(:post) solo crea el post, sin el user id, para que corra correctamente utilice el comando FactoryBot,create :post ,creando correctamente el post y el user id, creo que se debe a las actualizaciones que han habido de la fecha de la grabacion del curso a la actual
Entonces como haces el test con RSpec de los boolean.
Cómo hizo para hacer pasar el test de la lista de posts???
Probe con factorybot desde la consola crear 10 posts, pero cuando vuelvo a ejecutar rspec obtengo este error
Failure/Error: expect(payload.size).to eq(posts.size)
expected: 10
got: 0
corro bundle exec spec como en el minuto 11:25
pero no me salen errores, alguna idea?
Finished in 0.56855 seconds (files took 5.79 seconds to load)
5 examples, 0 failures
Direncia entre let y let!
NO olvidad que le es de RSpec
https://mixandgo.com/learn/let-vs-instance-variables-in-rspec
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.