Add service test
This commit is contained in:
parent
9fd6c01458
commit
f941eb7a03
71
domain/services_test.go
Normal file
71
domain/services_test.go
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
package domain
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/shopspring/decimal"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCurrencyConverter_Convert(t *testing.T) {
|
||||||
|
converter := NewCurrencyConverter()
|
||||||
|
|
||||||
|
usd, _ := NewCurrency("USD", "US Dollar", 2)
|
||||||
|
btc, _ := NewCurrency("BTC", "Bitcoin", 8)
|
||||||
|
eur, _ := NewCurrency("EUR", "Euro", 2)
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
money Money
|
||||||
|
rate Rate
|
||||||
|
wantErr bool
|
||||||
|
wantCode string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "successful conversion",
|
||||||
|
money: func() Money {
|
||||||
|
m, _ := NewMoney("100", usd)
|
||||||
|
return m
|
||||||
|
}(),
|
||||||
|
rate: func() Rate {
|
||||||
|
r, _ := NewRate(usd, btc, decimal.NewFromFloat(0.00002), "test")
|
||||||
|
return r
|
||||||
|
}(),
|
||||||
|
wantErr: false,
|
||||||
|
wantCode: "BTC",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "currency mismatch",
|
||||||
|
money: func() Money {
|
||||||
|
m, _ := NewMoney("100", eur)
|
||||||
|
return m
|
||||||
|
}(),
|
||||||
|
rate: func() Rate {
|
||||||
|
r, _ := NewRate(usd, btc, decimal.NewFromFloat(0.00002), "test")
|
||||||
|
return r
|
||||||
|
}(),
|
||||||
|
wantErr: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
result, err := converter.Convert(tt.money, tt.rate)
|
||||||
|
|
||||||
|
if tt.wantErr {
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("Convert() expected error but got none")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Convert() unexpected error: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.Currency.Code != tt.wantCode {
|
||||||
|
t.Errorf("Convert() currency = %s, want %s", result.Currency.Code, tt.wantCode)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue