github.com/cayleygraph/cayley@v0.7.7/server/http/api_v2_test.go (about)

     1  package cayleyhttp
     2  
     3  import (
     4  	"net/http/httptest"
     5  	"sort"
     6  	"testing"
     7  
     8  	"github.com/cayleygraph/cayley/client"
     9  	"github.com/cayleygraph/cayley/graph"
    10  	"github.com/cayleygraph/cayley/graph/graphtest"
    11  	"github.com/cayleygraph/cayley/graph/memstore"
    12  	"github.com/cayleygraph/cayley/writer"
    13  	"github.com/cayleygraph/quad"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func makeHandle(t testing.TB, quads ...quad.Quad) *graph.Handle {
    18  	qs := memstore.New(quads...)
    19  	wr, err := writer.NewSingleReplication(qs, nil)
    20  	require.NoError(t, err)
    21  	return &graph.Handle{qs, wr}
    22  }
    23  
    24  func makeServerV2(t testing.TB, quads ...quad.Quad) (string, func()) {
    25  	h := makeHandle(t, quads...)
    26  
    27  	api2 := NewAPIv2(h)
    28  	srv := httptest.NewServer(api2)
    29  	addr := srv.Listener.Addr()
    30  	return "http://" + addr.String(), func() {
    31  		srv.Close()
    32  		h.Close()
    33  	}
    34  }
    35  
    36  func TestV2Write(t *testing.T) {
    37  	addr, closer := makeServerV2(t)
    38  	defer closer()
    39  
    40  	quads := graphtest.MakeQuadSet()
    41  	cli := client.New(addr)
    42  	qw, err := cli.QuadWriter()
    43  	require.NoError(t, err)
    44  	defer qw.Close()
    45  	n, err := quad.Copy(qw, quad.NewReader(quads))
    46  	require.NoError(t, err)
    47  	require.Equal(t, int(len(quads)), n)
    48  	err = qw.Close()
    49  	require.NoError(t, err)
    50  }
    51  
    52  func TestV2Read(t *testing.T) {
    53  	expect := graphtest.MakeQuadSet()
    54  	addr, closer := makeServerV2(t, expect...)
    55  	defer closer()
    56  
    57  	cli := client.New(addr)
    58  	qr, err := cli.QuadReader()
    59  	require.NoError(t, err)
    60  	defer qr.Close()
    61  	quads, err := quad.ReadAll(qr)
    62  	require.NoError(t, err)
    63  	sort.Sort(quad.ByQuadString(quads))
    64  	sort.Sort(quad.ByQuadString(expect))
    65  	require.Equal(t, expect, quads)
    66  }