evcc-io/tariff/octopus/graphql/api_test.go

54 lines
1.5 KiB
Go

package graphql
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestOctopusGraphQLAccountFiltration(t *testing.T) {
validAccountNumber := "A-AAAAAAAA"
var noAccounts []krakenAccount
oneAccount := []krakenAccount{
{Number: validAccountNumber},
}
multipleAccounts := []krakenAccount{
{Number: validAccountNumber},
{Number: "X-XXXXXXXX"},
{Number: "Y-YYYYYYYY"},
{Number: "Z-ZZZZZZZZ"},
}
var accNum string
// No accounts (invalid state)
_, err := filterAccount(noAccounts, "")
require.ErrorIs(t, err, ErrNoAccounts)
// One account, no filtration
accNum, err = filterAccount(oneAccount, "")
require.NoError(t, err)
require.Equal(t, accNum, validAccountNumber)
// One account, valid filtration
accNum, err = filterAccount(oneAccount, validAccountNumber)
require.NoError(t, err)
require.Equal(t, accNum, validAccountNumber)
// One account, invalid filtration (invalid state)
_, err = filterAccount(oneAccount, "0-00000000")
require.ErrorIs(t, err, ErrAccountNotFound)
// Multiple accounts, no filtration (invalid state)
_, err = filterAccount(multipleAccounts, "")
require.ErrorIs(t, err, ErrMultipleAccounts)
// Multiple accounts, valid filtration
accNum, err = filterAccount(multipleAccounts, validAccountNumber)
require.NoError(t, err)
require.Equal(t, accNum, validAccountNumber)
// Multiple accounts, invalid filtration (invalid state)
_, err = filterAccount(multipleAccounts, "0-00000000")
require.ErrorIs(t, err, ErrAccountNotFound)
}