package main

import (
	"testing"
	"time"

	pb "code.hackerspace.pl/hscloud/bgpwtf/invoice/proto"
)

// Fake test data for test in this file.
var (
	itemInternet1 = &pb.Item{
		Title:     "Dostęp do Internetu - Umowa FOOBAR/10 - Opłata Abonentowa 2020/08",
		Count:     1,
		UnitPrice: 4200,
		Vat:       23000,
	}
	itemInternet2 = &pb.Item{
		Title:     "Dostęp do Internetu - Umowa FOOBAR/10 - Opłata Abonentowa 2020/09",
		Count:     1,
		UnitPrice: 4200,
		Vat:       23000,
	}
	itemHardware = &pb.Item{
		Title:     "Thinkpad x230, i7, 16GB RAM, Refurbished",
		Count:     1,
		UnitPrice: 10000,
		Vat:       23000,
		GtuCode:   []pb.GTUCode{pb.GTUCode_GTU_05},
	}
	billing1 = []string{
		"Wykop Sp. z o. o.",
		"Zakręt 8",
		"60-351 Poznań",
	}
	billing2 = []string{
		"TEH Adam Karolczak",
		"Zgoda 18/2",
		"95-200 Pabianice",
	}
	vatID1 = "PL8086133742"
	vatID2 = "DE133742429"
	iban   = "PL 59 1090 2402 9746 7956 2256 2375"
	swift  = "WLPPZLPAXXX"
)

func TestCalculate(t *testing.T) {
	now := time.Now()
	for _, te := range []struct {
		description string
		data        *pb.InvoiceData
		want        *pb.Invoice
	}{
		{
			description: "Invoice without JPK_V7 codes",
			data: &pb.InvoiceData{
				Item:            []*pb.Item{itemInternet1, itemInternet2},
				InvoicerBilling: billing1,
				CustomerBilling: billing2,
				InvoicerVatId:   vatID1,
				CustomerVatId:   vatID2,
				Date:            now.UnixNano(),
				DaysDue:         21,
				Iban:            iban,
				Swift:           swift,
				Unit:            "PLN",
			},
			want: &pb.Invoice{
				TotalNet: 8400,
				Total:    10332,
				Unit:     "PLN",
			},
		},
		{
			description: "Invoice with JPK_V7 codes",
			data: &pb.InvoiceData{
				// Repeated item with GTU code GTU_5, to ensure result doesn't
				// have repeated codes.
				Item:            []*pb.Item{itemInternet1, itemHardware, itemHardware},
				InvoicerBilling: billing1,
				CustomerBilling: billing2,
				InvoicerVatId:   vatID1,
				CustomerVatId:   vatID2,
				Date:            now.UnixNano(),
				DaysDue:         21,
				Iban:            iban,
				Swift:           swift,
				Unit:            "PLN",
			},
			want: &pb.Invoice{
				TotalNet: 24200,
				Total:    29766,
				Unit:     "PLN",
				GtuCode:  []pb.GTUCode{pb.GTUCode_GTU_05},
			},
		},
	} {
		t.Run(te.description, func(t *testing.T) {
			invoice := &pb.Invoice{
				Data: te.data,
				Date: te.data.Date,
			}
			calculateInvoiceData(invoice)
			if want, got := te.want.TotalNet, invoice.TotalNet; want != got {
				t.Errorf("got TotalNet %d, wanted %d", got, want)
			}
			if want, got := te.want.Total, invoice.Total; want != got {
				t.Errorf("got Total %d, wanted %d", got, want)
			}
			if want, got := te.want.Unit, invoice.Unit; want != got {
				t.Errorf("got Unit %q, wanted %q", got, want)
			}
			due := time.Duration(int64(time.Hour*24) * te.data.DaysDue)
			if want, got := now.Add(due).UnixNano(), invoice.DueDate; want != got {
				t.Errorf("got DueDate %d, wanted %d", got, want)
			}
			if want, got := len(te.want.GtuCode), len(invoice.GtuCode); want != got {
				t.Errorf("got %d GTU codes, wanted %d", got, want)
			} else {
				for i, want := range te.want.GtuCode {
					got := invoice.GtuCode[i]
					if want != got {
						t.Errorf("GTU code %d: wanted %s, got %s", i, want.String(), got.String())
					}
				}
			}
		})
	}
}
