package com.imprimelibros.erp;

import static org.junit.jupiter.api.Assertions.*;

import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Locale;

import com.imprimelibros.erp.presupuesto.PresupuestoService;
import com.imprimelibros.erp.presupuesto.classes.PresupuestoMaquetacion;
import com.imprimelibros.erp.presupuesto.maquetacion.MaquetacionMatrices.FontSize;
import com.imprimelibros.erp.presupuesto.maquetacion.MaquetacionMatrices.Formato;

@SpringBootTest
class presupuestoMaquetacionTest {

    @Autowired
    protected PresupuestoService presupuestoService;

    private static final Logger log = LoggerFactory.getLogger(presupuestoMaquetacionTest.class);

    @Test
    void testCalculoMaquetacion() {
        Map<String, Object> resultado = this.test();

        System.out.println("📦 Resultado:");
        System.out.println(resultado);
        log.info("📦 Resultado: {}", resultado);

        assertNotNull(resultado, "El resultado no debe ser null");
        assertFalse((Double)resultado.get("precio") == 0.0, "El precio debe ser mayor que 0");
    }

    public Map<String, Object> test() {

        PresupuestoMaquetacion presupuestoMaquetacion = new PresupuestoMaquetacion();
        presupuestoMaquetacion.setNumCaracteres(200000);
        presupuestoMaquetacion.setFormato(Formato.A5);
        presupuestoMaquetacion.setCuerpoTexto(FontSize.medium);
        presupuestoMaquetacion.setNumTablas(5);
        presupuestoMaquetacion.setNumColumnas(1);
        presupuestoMaquetacion.setNumFotos(10);
        presupuestoMaquetacion.setCorreccionOrtotipografica(true);
        presupuestoMaquetacion.setTextoMecanografiado(true);
        presupuestoMaquetacion.setDisenioPortada(true);
        presupuestoMaquetacion.setEpub(true);

        Locale locale = Locale.getDefault();
        System.out.println("🌐 Locale por defecto: " + locale);

        Map<String, Object> resultado = presupuestoService.getPrecioMaquetacion(presupuestoMaquetacion, locale);
        return resultado;
    }

}
