132 lines
3.6 KiB
Go
132 lines
3.6 KiB
Go
|
|
package internal
|
||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestTransformToInvoiceData_CamposBasicos(t *testing.T) {
|
||
|
|
in := facturaValida()
|
||
|
|
data, err := TransformToInvoiceData(in)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("TransformToInvoiceData devolvió error inesperado: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
if data.EmisorNIF != "A1234567B" {
|
||
|
|
t.Errorf("EmisorNIF: esperado A1234567B, obtuvo %s", data.EmisorNIF)
|
||
|
|
}
|
||
|
|
if data.NumSerie != "INV-2026-001" {
|
||
|
|
t.Errorf("NumSerie: esperado INV-2026-001, obtuvo %s", data.NumSerie)
|
||
|
|
}
|
||
|
|
if data.TipoFactura != "F1" {
|
||
|
|
t.Errorf("TipoFactura: esperado F1, obtuvo %s", data.TipoFactura)
|
||
|
|
}
|
||
|
|
if data.ImporteTotal != 121.0 {
|
||
|
|
t.Errorf("ImporteTotal: esperado 121.0, obtuvo %f", data.ImporteTotal)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestTransformToInvoiceData_FechaParsedaCorrecta(t *testing.T) {
|
||
|
|
in := facturaValida()
|
||
|
|
data, err := TransformToInvoiceData(in)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("error inesperado: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
esperada := time.Date(2026, 5, 28, 0, 0, 0, 0, time.UTC)
|
||
|
|
if !data.Fecha.Equal(esperada) {
|
||
|
|
t.Errorf("Fecha: esperado %v, obtuvo %v", esperada, data.Fecha)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestTransformToInvoiceData_CuotaTotalSumada(t *testing.T) {
|
||
|
|
in := facturaValida()
|
||
|
|
in.Factura.IVA = []IVAInput{
|
||
|
|
{Base: 100, Cuota: 21, Tipo: 21},
|
||
|
|
{Base: 200, Cuota: 10, Tipo: 5},
|
||
|
|
}
|
||
|
|
data, err := TransformToInvoiceData(in)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("error inesperado: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
if data.CuotaTotal != 31.0 {
|
||
|
|
t.Errorf("CuotaTotal: esperado 31.0, obtuvo %f", data.CuotaTotal)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestTransformToInvoiceData_DescripcionPorDefecto(t *testing.T) {
|
||
|
|
in := facturaValida()
|
||
|
|
in.Factura.Descripcion = ""
|
||
|
|
data, err := TransformToInvoiceData(in)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("error inesperado: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
if data.Descripcion != "Factura" {
|
||
|
|
t.Errorf("descripción por defecto: esperado 'Factura', obtuvo %q", data.Descripcion)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestTransformToInvoiceData_SinDestinatario(t *testing.T) {
|
||
|
|
in := facturaValida()
|
||
|
|
in.Factura.Destinatario = nil
|
||
|
|
data, err := TransformToInvoiceData(in)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("error inesperado: %v", err)
|
||
|
|
}
|
||
|
|
if data.Destinatario != nil {
|
||
|
|
t.Error("sin destinatario en entrada, data.Destinatario debería ser nil")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestTransformToInvoiceData_ConDestinatario(t *testing.T) {
|
||
|
|
in := facturaValida()
|
||
|
|
in.Factura.Destinatario = &DestinatarioInput{Nombre: "Cliente SA", NIF: "B11111118"}
|
||
|
|
data, err := TransformToInvoiceData(in)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("error inesperado: %v", err)
|
||
|
|
}
|
||
|
|
if data.Destinatario == nil {
|
||
|
|
t.Fatal("destinatario no debería ser nil")
|
||
|
|
}
|
||
|
|
if data.Destinatario.Nombre != "Cliente SA" {
|
||
|
|
t.Errorf("nombre destinatario: esperado 'Cliente SA', obtuvo %q", data.Destinatario.Nombre)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestTransformToInvoiceData_IVAClaveRegimenDefecto(t *testing.T) {
|
||
|
|
in := facturaValida()
|
||
|
|
data, err := TransformToInvoiceData(in)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("error inesperado: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
for i, iva := range data.IVA {
|
||
|
|
if iva.ClaveRegimen != "01" {
|
||
|
|
t.Errorf("IVA[%d].ClaveRegimen: esperado '01', obtuvo %q", i, iva.ClaveRegimen)
|
||
|
|
}
|
||
|
|
if iva.Calificacion != "S1" {
|
||
|
|
t.Errorf("IVA[%d].Calificacion: esperado 'S1', obtuvo %q", i, iva.Calificacion)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestTransformToInvoiceData_SistemaDefecto(t *testing.T) {
|
||
|
|
in := facturaValida()
|
||
|
|
data, err := TransformToInvoiceData(in)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("error inesperado: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
if data.Sistema.TipoUsoVerifactu != "S" {
|
||
|
|
t.Errorf("TipoUsoVerifactu: esperado 'S', obtuvo %q", data.Sistema.TipoUsoVerifactu)
|
||
|
|
}
|
||
|
|
if data.Sistema.TipoUsoMultiOT != "N" {
|
||
|
|
t.Errorf("TipoUsoMultiOT: esperado 'N', obtuvo %q", data.Sistema.TipoUsoMultiOT)
|
||
|
|
}
|
||
|
|
if data.Sistema.IDSistema != "1" {
|
||
|
|
t.Errorf("IDSistema: esperado '1', obtuvo %q", data.Sistema.IDSistema)
|
||
|
|
}
|
||
|
|
}
|