mirror of
https://github.com/lukaszraczylo/go-simple-graphql.git
synced 2026-10-12 00:45:31 +00:00
184 lines
4.1 KiB
Go
184 lines
4.1 KiB
Go
package gql
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func (suite *Tests) TestBaseClient_convertToJSON() {
|
|
type args struct {
|
|
v any
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want []byte
|
|
}{
|
|
{
|
|
name: "TestBaseClient_convertToJSON_query",
|
|
args: args{
|
|
v: `query { viewer { login } }`,
|
|
},
|
|
want: []byte(`"query { viewer { login } }"`),
|
|
},
|
|
{
|
|
name: "TestBaseClient_convertToJSON_variables",
|
|
args: args{
|
|
v: map[string]interface{}{
|
|
"login": "lukaszraczylo",
|
|
"first": 10,
|
|
},
|
|
},
|
|
want: []byte(`{"first":10,"login":"lukaszraczylo"}`),
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
suite.T().Run(tt.name, func(t *testing.T) {
|
|
b := NewConnection()
|
|
if got := b.convertToJSON(tt.args.v); !reflect.DeepEqual(got, tt.want) {
|
|
assert.Equal(tt.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *Tests) TestBaseClient_compileQuery() {
|
|
type args struct {
|
|
query_partials []any
|
|
}
|
|
tests := []struct {
|
|
wantQ *Query
|
|
name string
|
|
args args
|
|
}{
|
|
{
|
|
name: "TestBaseClient_compileQuery_query",
|
|
args: args{
|
|
query_partials: []any{
|
|
`query { viewer { login } }`,
|
|
},
|
|
},
|
|
wantQ: &Query{
|
|
Query: `query { viewer { login } }`,
|
|
JsonQuery: []byte(`{"query":"query { viewer { login } }"}`),
|
|
},
|
|
},
|
|
{
|
|
name: "TestBaseClient_compileQuery_with_variables",
|
|
args: args{
|
|
query_partials: []any{
|
|
`query { viewer { login } }`,
|
|
map[string]interface{}{
|
|
"login": "lukaszraczylo",
|
|
"first": 10,
|
|
},
|
|
},
|
|
},
|
|
wantQ: &Query{
|
|
Query: `query { viewer { login } }`,
|
|
Variables: map[string]interface{}{
|
|
"login": "lukaszraczylo",
|
|
"first": 10,
|
|
},
|
|
JsonQuery: []byte(`{"variables":{"first":10,"login":"lukaszraczylo"},"query":"query { viewer { login } }"}`),
|
|
},
|
|
},
|
|
{
|
|
name: "TestBaseClient_compileQuery_variables_without_query",
|
|
args: args{
|
|
query_partials: []any{
|
|
map[string]interface{}{
|
|
"login": "lukaszraczylo",
|
|
"first": 10,
|
|
},
|
|
},
|
|
},
|
|
wantQ: nil,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
suite.T().Run(tt.name, func(t *testing.T) {
|
|
b := NewConnection()
|
|
got := b.compileQuery(tt.args.query_partials...)
|
|
assert.Equal(tt.wantQ, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *Tests) TestBaseClient_Query() {
|
|
type args struct {
|
|
variables map[string]interface{}
|
|
headers map[string]interface{}
|
|
query string
|
|
}
|
|
tests := []struct {
|
|
args args
|
|
wantReturned_value any
|
|
name string
|
|
wantType string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "TestBaseClient_Query_viewer",
|
|
args: args{
|
|
query: "query { viewer { login } }",
|
|
variables: nil,
|
|
headers: map[string]interface{}{
|
|
"x-apollo-operation-name": "ViewerQuery",
|
|
"content-type": "application/json",
|
|
},
|
|
},
|
|
wantReturned_value: `{"viewer":{"login":"mockuser"}}`, // Adjusted expected value
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "TestBaseClient_Query_dragons",
|
|
args: args{
|
|
query: `query Dragons {
|
|
dragons {
|
|
name
|
|
}
|
|
}`,
|
|
variables: nil,
|
|
headers: map[string]interface{}{
|
|
"x-apollo-operation-name": "DragonsQuery",
|
|
"content-type": "application/json",
|
|
},
|
|
},
|
|
wantReturned_value: `{"dragons":[{"name":"Mock Dragon 1"},{"name":"Mock Dragon 2"}]}`, // Adjusted expected value
|
|
wantErr: false,
|
|
},
|
|
|
|
{
|
|
name: "TestBaseClient_Query_invalid_query",
|
|
args: args{
|
|
query: "query { potato { login } ",
|
|
variables: nil,
|
|
headers: map[string]interface{}{
|
|
"x-apollo-operation-name": "InvalidQuery",
|
|
"content-type": "application/json",
|
|
},
|
|
},
|
|
wantReturned_value: nil,
|
|
wantErr: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
suite.T().Run(tt.name, func(t *testing.T) {
|
|
b := NewConnection()
|
|
b.SetEndpoint(mockServer.URL)
|
|
b.SetHTTPClient(mockServer.Client())
|
|
if tt.wantType != "" {
|
|
b.SetOutput(tt.wantType)
|
|
}
|
|
gotReturned_value, err := b.Query(tt.args.query, tt.args.variables, tt.args.headers)
|
|
if tt.wantErr {
|
|
assert.Error(err)
|
|
} else {
|
|
assert.NoError(err)
|
|
}
|
|
assert.Equal(tt.wantReturned_value, gotReturned_value)
|
|
})
|
|
}
|
|
}
|