Feat(ADN): Completadas tareas 2.2, 2.4 y 2.5 del manifiesto (Cierre de Fase 1)
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'minitest/autorun'
|
||||
require_relative '../../bitacoras-db/core/bitacora_db'
|
||||
require 'date'
|
||||
|
||||
module ADN
|
||||
class BitacoraDBTest < Minitest::Test
|
||||
def setup
|
||||
# Usar el entorno development encapsulado en transacción
|
||||
# Cualquier cambio persistente será anulado tras cada bloque de prueba.
|
||||
@db = BitacorasDB::BitacoraDB.new(env: :development)
|
||||
@db.connect
|
||||
@db.execute('BEGIN')
|
||||
end
|
||||
|
||||
def teardown
|
||||
# Abortar la transacción para dejar la db limpia, luego desconectar
|
||||
@db.execute('ROLLBACK') rescue nil
|
||||
@db.disconnect
|
||||
end
|
||||
|
||||
def test_connection_health
|
||||
assert @db.connection_test?
|
||||
salud = @db.health_check
|
||||
assert_equal 'healthy', salud[:status]
|
||||
assert salud[:bitacoras_count] >= 0
|
||||
end
|
||||
|
||||
def test_nodo_crud
|
||||
# Crear nodo
|
||||
nombre_nodo = "test_nodo_#{Time.now.to_i}"
|
||||
nodo = @db.create_nodo(nombre: nombre_nodo, tipo: 'servidor', descripcion: 'Nodo de pruebas UT')
|
||||
assert nodo['id']
|
||||
assert_equal nombre_nodo, nodo['nombre']
|
||||
|
||||
# Listar nodos (debería encontrar al menos al nuevo nodo)
|
||||
nodos = @db.list_nodos
|
||||
encontrado = nodos.find { |n| n['nombre'] == nombre_nodo }
|
||||
refute_nil encontrado
|
||||
|
||||
# Encontrar por nombre
|
||||
buscado = @db.find_nodo_by_nombre(nombre_nodo)
|
||||
assert_equal nodo['id'], buscado['id']
|
||||
end
|
||||
|
||||
def test_bitacora_crud
|
||||
# Usar fecha en el futuro lejano para no colisionar con reales si falla el db
|
||||
fecha_futura = Date.new(2050, 1, 1)
|
||||
|
||||
# Crear Bitácora
|
||||
resumen_test = 'Tests unitarios automatizados'
|
||||
bitacora = @db.create_bitacora(fecha: fecha_futura, resumen: resumen_test)
|
||||
assert bitacora['id']
|
||||
assert_equal fecha_futura.to_s, bitacora['fecha']
|
||||
|
||||
# Encontrar por fecha
|
||||
buscada = @db.find_bitacora_by_fecha(fecha_futura)
|
||||
assert_equal bitacora['id'], buscada['id']
|
||||
|
||||
# Listar filtrando fechas
|
||||
rango = @db.list_bitacoras(desde: fecha_futura.to_s, hasta: fecha_futura.to_s)
|
||||
assert_equal 1, rango.length
|
||||
assert_equal bitacora['id'], rango.first['id']
|
||||
end
|
||||
|
||||
def test_entrada_crud_con_busqueda
|
||||
# 1. Setup Base - Nodo y Bitacora
|
||||
fecha_act = Date.new(2050, 2, 2)
|
||||
bitacora = @db.create_bitacora(fecha: fecha_act)
|
||||
nodo = @db.create_nodo(nombre: "test_nodo_ev_#{Time.now.to_i}", tipo: 'vm')
|
||||
|
||||
# 2. Crear entrada
|
||||
desc_unica = "Validacion especial MINITEST_#{Time.now.to_i}"
|
||||
entrada = @db.create_entrada(
|
||||
inicio: '10:00:00',
|
||||
descripcion: desc_unica,
|
||||
fin: '11:00:00',
|
||||
estado: '✅',
|
||||
modo: 'R',
|
||||
es_ia: true,
|
||||
bitacora_id: bitacora['id'],
|
||||
nodo_id: nodo['id']
|
||||
)
|
||||
|
||||
assert entrada['id']
|
||||
assert_equal '10:00:00', entrada['inicio']
|
||||
assert_equal 'R', entrada['modo']
|
||||
|
||||
# 3. Consultar y verificar búsqueda/filtrado implementada en Tarea 2.2
|
||||
entradas = @db.list_entradas(
|
||||
buscar: 'MINITEST_',
|
||||
desde: '2050-02-01',
|
||||
hasta: '2050-02-03'
|
||||
)
|
||||
|
||||
assert entradas.length >= 1
|
||||
hallazgo = entradas.find { |e| e['id'] == entrada['id'] }
|
||||
refute_nil hallazgo
|
||||
assert_equal desc_unica, hallazgo['descripcion']
|
||||
assert_equal bitacora['fecha'], hallazgo['bitacora_fecha']
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user