package gql import ( "testing" ) func Benchmark_GraphQL_Query(t *testing.B) { if testing.Short() { t.Skip("Skipping test in short / CI mode") } type args struct { queryContent string queryVariables interface{} } tests := []struct { name string endpoint string isLocal bool args args wantResult string mockedReply string wantErr bool }{ { name: "Valid query", endpoint: "http://hasura.local/v1/graphql", isLocal: false, args: args{ queryContent: `query listUserBots { tbl_bots(limit: 1) { bot_name } }`, queryVariables: nil, }, wantResult: `{"tbl_bots":[{"bot_name":"littleMentionBot"}]}`, mockedReply: `{"data":{"tbl_bots":[{"bot_name":"littleMentionBot"}]}}`, wantErr: false, }, { name: "Invalid query", endpoint: "http://hasura.local/v1/graphql", isLocal: false, args: args{ queryContent: `query listUserBots { tbl_botz(limit: 1) { bot_name } }`, queryVariables: nil, }, mockedReply: `{"errors":[{"message":"Unknown field \"tbl_botz\" on type \"Query\""}]}`, wantResult: ``, wantErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.B) { g := NewConnection() server, serverURL := mockGraphQLServerResponses(tt.mockedReply) g.Endpoint = serverURL for n := 0; n < t.N; n++ { g.Query(tt.args.queryContent, tt.args.queryVariables, nil) } server.Close() }) } }