102 lines
2 KiB
Go
102 lines
2 KiB
Go
package clients
|
|
|
|
import (
|
|
"btclock/broker"
|
|
"btclock/models"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestKrakenClient_HandleTickerMessage(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input map[string]any
|
|
expectedTicker models.Ticker
|
|
}{
|
|
{
|
|
name: "valid ticker message",
|
|
input: map[string]any{
|
|
"data": []any{
|
|
map[string]any{
|
|
"symbol": "BTC/USD",
|
|
"last": 50000.0,
|
|
"bid": 49900.0,
|
|
"ask": 50100.0,
|
|
},
|
|
},
|
|
},
|
|
expectedTicker: models.Ticker{
|
|
Symbol: "BTC/USD",
|
|
Last: 50000.0,
|
|
Bid: 49900.0,
|
|
Ask: 50100.0,
|
|
},
|
|
},
|
|
{
|
|
name: "invalid data format",
|
|
input: map[string]any{
|
|
"data": "invalid",
|
|
},
|
|
expectedTicker: models.Ticker{},
|
|
},
|
|
{
|
|
name: "empty data array",
|
|
input: map[string]any{
|
|
"data": []any{},
|
|
},
|
|
expectedTicker: models.Ticker{},
|
|
},
|
|
{
|
|
name: "missing required fields",
|
|
input: map[string]any{
|
|
"data": []any{
|
|
map[string]any{
|
|
"symbol": "BTC/USD",
|
|
// missing last, bid, ask
|
|
},
|
|
},
|
|
},
|
|
expectedTicker: models.Ticker{},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := handleTickerMessage(tt.input)
|
|
assert.Equal(t, tt.expectedTicker, result)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestKrakenClient_Init(t *testing.T) {
|
|
broker := broker.NewEventBroker()
|
|
client := NewKrakenClient()
|
|
|
|
err := client.Init(broker)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, broker, client.broker)
|
|
}
|
|
|
|
func TestKrakenClient_ID(t *testing.T) {
|
|
client := NewKrakenClient()
|
|
assert.Equal(t, "kraken", client.ID())
|
|
}
|
|
|
|
func TestKrakenTickerEvent_Name(t *testing.T) {
|
|
event := KrakenTickerEvent{
|
|
Symbol: "BTC/USD",
|
|
Last: 50000.0,
|
|
}
|
|
assert.Equal(t, "ticker", event.Name())
|
|
}
|
|
|
|
func TestKrakenTickerEvent_Payload(t *testing.T) {
|
|
event := KrakenTickerEvent{
|
|
Symbol: "BTC/USD",
|
|
Last: 50000.0,
|
|
}
|
|
payload := event.Payload().(map[string]interface{})
|
|
assert.Equal(t, "BTC/USD", payload["symbol"])
|
|
assert.Equal(t, 50000.0, payload["last"])
|
|
}
|