github.com/maeglindeveloper/gqlgen@v0.13.1-0.20210413081235-57808b12a0a0/example/chat/chat_test.go (about) 1 package chat 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/99designs/gqlgen/client" 8 "github.com/99designs/gqlgen/graphql/handler" 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestChatSubscriptions(t *testing.T) { 14 c := client.New(handler.NewDefaultServer(NewExecutableSchema(New()))) 15 16 sub := c.Websocket(`subscription @user(username:"vektah") { messageAdded(roomName:"#gophers") { text createdBy } }`) 17 defer sub.Close() 18 19 go func() { 20 var resp interface{} 21 time.Sleep(10 * time.Millisecond) 22 err := c.Post(`mutation { 23 a:post(text:"Hello!", roomName:"#gophers", username:"vektah") { id } 24 b:post(text:"Hello Vektah!", roomName:"#gophers", username:"andrey") { id } 25 c:post(text:"Whats up?", roomName:"#gophers", username:"vektah") { id } 26 }`, &resp) 27 assert.NoError(t, err) 28 }() 29 30 var msg struct { 31 resp struct { 32 MessageAdded struct { 33 Text string 34 CreatedBy string 35 } 36 } 37 err error 38 } 39 40 msg.err = sub.Next(&msg.resp) 41 require.NoError(t, msg.err, "sub.Next") 42 require.Equal(t, "Hello!", msg.resp.MessageAdded.Text) 43 require.Equal(t, "vektah", msg.resp.MessageAdded.CreatedBy) 44 45 msg.err = sub.Next(&msg.resp) 46 require.NoError(t, msg.err, "sub.Next") 47 require.Equal(t, "Whats up?", msg.resp.MessageAdded.Text) 48 require.Equal(t, "vektah", msg.resp.MessageAdded.CreatedBy) 49 }