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  }