Initial commit
This commit is contained in:
commit
c5111cb551
20 changed files with 1764 additions and 0 deletions
102
clients/kraken_test.go
Normal file
102
clients/kraken_test.go
Normal file
|
@ -0,0 +1,102 @@
|
|||
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"])
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue