tool/exchange_wrapper_coverage: fix regression and implement reflection (#837)

* cmd/tools/exchange: fix regression and implement reflection so as this can dynamically scale to our interface

* exchanges: add comment and fix whoopsie

* exchanges: fix linter issues

* wrapper_cov_tool: add actual full interface method count to get a better perceived deployment

* exchanges/tool: addr glorious nits

* kraken: remove string in test

* exchange_template_tool: fix tmpl issue
This commit is contained in:
Ryan O'Hara-Reid
2021-11-17 15:41:21 +11:00
committed by GitHub
parent 7c7aebe22f
commit da3402476e
67 changed files with 878 additions and 239 deletions

View File

@@ -2,8 +2,10 @@ package exmo
import (
"context"
"errors"
"log"
"os"
"sync"
"testing"
"time"
@@ -51,6 +53,20 @@ func TestMain(m *testing.M) {
os.Exit(m.Run())
}
func TestStart(t *testing.T) {
t.Parallel()
err := e.Start(nil)
if !errors.Is(err, common.ErrNilPointer) {
t.Fatalf("received: '%v' but expected: '%v'", err, common.ErrNilPointer)
}
var testWg sync.WaitGroup
err = e.Start(&testWg)
if err != nil {
t.Fatal(err)
}
testWg.Wait()
}
func TestGetTrades(t *testing.T) {
t.Parallel()
_, err := e.GetTrades(context.Background(), "BTC_USD")

View File

@@ -124,6 +124,9 @@ func (e *EXMO) SetDefaults() {
// Setup takes in the supplied exchange configuration details and sets params
func (e *EXMO) Setup(exch *config.Exchange) error {
if err := exch.Validate(); err != nil {
return err
}
if !exch.Enabled {
e.SetEnabled(false)
return nil
@@ -132,12 +135,16 @@ func (e *EXMO) Setup(exch *config.Exchange) error {
}
// Start starts the EXMO go routine
func (e *EXMO) Start(wg *sync.WaitGroup) {
func (e *EXMO) Start(wg *sync.WaitGroup) error {
if wg == nil {
return fmt.Errorf("%T %w", wg, common.ErrNilPointer)
}
wg.Add(1)
go func() {
e.Run()
wg.Done()
}()
return nil
}
// Run implements the EXMO wrapper
@@ -598,6 +605,9 @@ func (e *EXMO) WithdrawFiatFundsToInternationalBank(_ context.Context, _ *withdr
// GetFeeByType returns an estimate of fee based on type of transaction
func (e *EXMO) GetFeeByType(ctx context.Context, feeBuilder *exchange.FeeBuilder) (float64, error) {
if feeBuilder == nil {
return 0, fmt.Errorf("%T %w", feeBuilder, common.ErrNilPointer)
}
if !e.AllowAuthenticatedRequest() && // Todo check connection status
feeBuilder.FeeType == exchange.CryptocurrencyTradeFee {
feeBuilder.FeeType = exchange.OfflineTradeFee