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