Pruebas de Validación y Guardado en Modelos Rails

Clase 11 de 34Curso Intermedio de Ruby on Rails

Resumen

¿Cómo añadir pruebas de modelo al método save de un modelo?

Añadir pruebas de modelo adecuadas es esencial para garantizar la validez de nuestra aplicación. Aquí nos enfocaremos en el método de instancia save del modelo task, asegurándonos de que los datos ingresados cumplan con las validaciones impuestas por el modelo. Este proceso también nos ayudará a verificar que las tareas creadas a partir de cero sean válidas.

¿Cómo estructurar el contexto para las pruebas?

Para iniciar, es recomendable utilizar el método context para separar el bloque de código que contiene la configuración anterior de las pruebas. Esto no solo mejora la legibilidad sino que también aísla las pruebas permitiendo cambios sin afectar otros bloques de código. Podemos identificar contextos como:

  • Con parámetros desde FactoryBot: Esto implica que estamos reutilizando las configuraciones existentes de nuestras fábricas para realizar las pruebas.
  • Con parámetros desde cero: Se enfoca en crear una tarea completamente desde cero, configurando todos los campos necesarios manualmente.

¿Qué campos necesitamos para crear una task desde cero?

Al crear una task, es crucial conocer las validaciones impuestas por el modelo. Los campos básicos requeridos son:

  • name: El nombre de la tarea.
  • description: Una descripción breve.
  • due_date: Fecha de vencimiento que debe estar en el futuro para ser válida.
  • code: Autogenerado al guardar la tarea.
  • Relación con category: Categoría de la tarea.
  • Relación con owner: Propietario de la tarea.
  • Al menos un participant: Participante de la tarea.

Código de ejemplo para configurar los parámetros básicos:

let(:owner) { create(:user) }
let(:category) { create(:category) }
let(:participant_1) { build(:participant, :responsable) }
let(:participant_2) { build(:participant, :follower) }

let(:task) do
  Task.new(
    name: 'Mi Tarea',
    description: 'Descripción',
    due_date: Date.today + 5,
    owner: owner,
    category: category,
    participants: [participant_1, participant_2]
  )
end

¿Cómo verificar la validez de una tarea?

Una vez configurados todos los parámetros necesarios, es fundamental crear pruebas que verifiquen si la tarea es válida. Utilizar el método valid? dentro de un lenguaje de pruebas es eficiente para estos casos.

Para definir la prueba:

it 'is expected to be valid' do
  expect(task).to be_valid
end

Mediante el uso de be_valid, evaluamos si nuestro objeto task cumple con todas las validaciones definidas en el modelo.

¿Cómo ejecutar las pruebas y verificar los resultados?

Para ejecutar todas las pruebas definidas, se usa el comando rspec. Una vez lanzado, podrás ver si las pruebas pasan y cumplen con las expectativas definidas.

rspec

Si las pruebas fueron exitosamente ejecutadas con resultados positivos, significa que nuestra configuración es correcta y reflejamos los requisitos del modelo Task.

Continuar mejorando tus habilidades en pruebas de modelos es esencial para el desarrollo robusto de aplicaciones, y cada pequeño avance cuenta para alcanzar un producto final de alta calidad. ¡Sigue adelante y sigue aprendiendo!