eia-api-go/pkg/eia/eia_reflection_test.go

138 lines
2.9 KiB
Go
Raw Normal View History

2024-12-05 17:59:02 +00:00
package eia
import (
2024-12-05 20:24:08 +00:00
"context"
2024-12-05 17:59:02 +00:00
"reflect"
"testing"
2024-12-05 20:24:08 +00:00
"k8s.io/utils/ptr"
eiaapi "gitea.libretechconsulting.com/50W/eia-api-go/api"
2024-12-05 17:59:02 +00:00
)
func TestGetRoutes(t *testing.T) {
type args struct {
suffixes []string
}
tests := []struct {
name string
args args
want []string
}{
{
name: "List known routes",
args: args{
suffixes: []string{
"Aeo",
"Electricity",
"Gas",
},
},
want: []string{
"GetV2Aeo",
"GetV2Electricity",
"GetV2NaturalGas",
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := GetRoutes(tt.args.suffixes...); !reflect.DeepEqual(got, tt.want) {
t.Errorf("GetRoutes() = %v, want %v", got, tt.want)
}
})
}
}
2024-12-05 20:24:08 +00:00
func Test_prepMethodArgs(t *testing.T) {
client, _ := eiaapi.NewClient("test.test")
type args struct {
method reflect.Value
name string
subs *MethodSubs
}
tests := []struct {
name string
args args
want []reflect.Value
}{
{
name: "Test substitute GetV2AeoRoute1FacetFacetId params",
args: args{
name: "GetV2AeoRoute1FacetFacetId",
method: reflect.ValueOf(
client.GetV2AeoRoute1FacetFacetId,
),
subs: &MethodSubs{
TypedParams: map[reflect.Type]reflect.Value{
reflect.TypeOf((*context.Context)(nil)).Elem(): reflect.ValueOf(context.TODO()),
},
StrTypedParams: map[string]reflect.Value{
"FacetId": reflect.ValueOf(eiaapi.FacetId("seriesId")),
"Route1": reflect.ValueOf(eiaapi.Route1("2023")),
},
},
},
want: []reflect.Value{
reflect.ValueOf(context.TODO()),
reflect.ValueOf(eiaapi.Route1("2023")),
reflect.ValueOf(eiaapi.FacetId("seriesId")),
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := prepMethodArgs(tt.args.method, tt.args.name, tt.args.subs); !reflect.DeepEqual(got, tt.want) {
t.Errorf("prepMethodArgs() = %v, want %v", got, tt.want)
}
})
}
}
func Test_getRR(t *testing.T) {
sampleRouteResponse := eiaapi.RouteResponse{
Request: &eiaapi.RouteRequest{},
Response: &eiaapi.Routes{
Description: ptr.To("Annual Energy Outlook"),
Id: ptr.To("aeo"),
Name: ptr.To("aeo"),
Routes: ptr.To([]eiaapi.Routes{
{
Id: ptr.To("2023"),
Name: ptr.To("2023"),
},
}),
},
}
type args struct {
json200 reflect.Value
}
tests := []struct {
name string
args args
want eiaapi.RouteResponse
wantErr bool
}{
{
name: "Extract routes response",
args: args{
json200: reflect.ValueOf(&sampleRouteResponse),
},
want: sampleRouteResponse,
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := getRR(tt.args.json200)
if (err != nil) != tt.wantErr {
t.Errorf("getRR() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(*got, tt.want) {
t.Errorf("getRR() = %v, want %v", got, tt.want)
}
})
}
}