github.com/etecs-ru/gnomock@v0.13.2/preset/elastic/readme.md (about) 1 # Gnomock Elasticsearch 2 3 Gnomock Elasticsearch is a [Gnomock](https://github.com/orlangure/gnomock) 4 preset for running tests against a real Elasticsearch container, without mocks. 5 6 ```go 7 package elastic_test 8 9 import ( 10 "encoding/json" 11 "fmt" 12 "testing" 13 14 "github.com/elastic/go-elasticsearch/v7" 15 "github.com/orlangure/gnomock" 16 "github.com/orlangure/gnomock/preset/elastic" 17 "github.com/stretchr/testify/require" 18 ) 19 20 func TestPreset(t *testing.T) { 21 t.Parallel() 22 23 p := elastic.Preset( 24 elastic.WithInputFile("./testdata/titles"), 25 elastic.WithInputFile("./testdata/names"), 26 ) 27 28 c, err := gnomock.Start(p) 29 require.NoError(t, err) 30 31 defer func() { require.NoError(t, gnomock.Stop(c)) }() 32 33 cfg := elasticsearch.Config{ 34 Addresses: []string{fmt.Sprintf("http://%s", c.DefaultAddress())}, 35 } 36 37 client, err := elasticsearch.NewClient(cfg) 38 require.NoError(t, err) 39 40 res, err := client.Search( 41 client.Search.WithIndex("titles"), 42 client.Search.WithQuery("gnomock"), 43 ) 44 require.NoError(t, err) 45 require.False(t, res.IsError(), res.String()) 46 47 var out struct { 48 Hits struct { 49 Total struct { 50 Value int `json:"value"` 51 } `json:"total"` 52 } `json:"hits"` 53 } 54 require.NoError(t, json.NewDecoder(res.Body).Decode(&out)) 55 require.NoError(t, res.Body.Close()) 56 require.Equal(t, 1, out.Hits.Total.Value) 57 58 res, err = client.Search( 59 client.Search.WithIndex("titles"), 60 client.Search.WithQuery("unknown"), 61 ) 62 require.NoError(t, err) 63 require.False(t, res.IsError(), res.String()) 64 65 require.NoError(t, json.NewDecoder(res.Body).Decode(&out)) 66 require.NoError(t, res.Body.Close()) 67 require.Equal(t, 0, out.Hits.Total.Value) 68 } 69 ``` 70