package com.imprimelibros.erp;

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

import java.util.Map;
import java.util.HashMap;

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.PresupuestoMarcapaginas;
import com.imprimelibros.erp.presupuesto.marcapaginas.Marcapaginas;

import com.imprimelibros.erp.presupuesto.marcapaginas.MarcapaginasRepository;

@SpringBootTest
class presupuestoMarcapaginasTest {

    @Autowired
    protected PresupuestoService presupuestoService;

    @Autowired
    protected MarcapaginasRepository marcapaginasRepository;

    private static final Logger log = LoggerFactory.getLogger(presupuestoMarcapaginasTest.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(resultado.containsKey("error"), "El resultado no debe contener error");
        // assertFalse((Double)resultado.get("precio") == 0.0, "El precio debe ser mayor
        // que 0");
    }

    public HashMap<String, Object> test() {

        PresupuestoMarcapaginas presupuestoMarcapaginas = new PresupuestoMarcapaginas();
        presupuestoMarcapaginas.setUnidades(1000);
        presupuestoMarcapaginas.setTamanio(Marcapaginas.Tamanios._50x140_);
        presupuestoMarcapaginas.setAcabado(Marcapaginas.Acabado.ninguno);
        presupuestoMarcapaginas.setCarasImpresion(Marcapaginas.Caras_Impresion.una_cara);
        presupuestoMarcapaginas.setPapel(Marcapaginas.Papeles.cartulina_grafica);
        presupuestoMarcapaginas.setGramaje(300);

        Locale locale = Locale.getDefault();

        return presupuestoService.getPrecioMarcapaginas(presupuestoMarcapaginas, locale);
    }

}
