| 30 | } |
| 31 | |
| 32 | func TestNewEsFactory(t *testing.T) { |
| 33 | if os.Getenv("ELASTICSEARCH_ADDR") == "" { |
| 34 | t.Skip("set env ELASTICSEARCH_ADDR to run TestNewEsFactory") |
| 35 | return |
| 36 | } |
| 37 | addrs := strings.Split(os.Getenv("ELASTICSEARCH_ADDR"), ",") |
| 38 | t.Run("normal construction", func(t *testing.T) { |
| 39 | esFactory, cleanup := provideEsFactory(&providersOption{})(factoryIn{ |
| 40 | Conf: config.MapAdapter{"es": map[string]interface{}{ |
| 41 | "default": map[string]interface{}{"url": addrs}, |
| 42 | "alternative": map[string]interface{}{"url": addrs}, |
| 43 | }}, |
| 44 | Logger: log.NewNopLogger(), |
| 45 | Populator: Populator{}, |
| 46 | }) |
| 47 | def, err := esFactory.Make("default") |
| 48 | assert.NoError(t, err) |
| 49 | assert.NotNil(t, def) |
| 50 | alt, err := esFactory.Make("alternative") |
| 51 | assert.NoError(t, err) |
| 52 | assert.NotNil(t, alt) |
| 53 | assert.NotNil(t, cleanup) |
| 54 | cleanup() |
| 55 | }) |
| 56 | t.Run("with options", func(t *testing.T) { |
| 57 | var calledConstructor bool |
| 58 | var calledConfig bool |
| 59 | esFactory, cleanup := provideEsFactory( |
| 60 | |
| 61 | &providersOption{ |
| 62 | clientConstructor: func(args ClientArgs) (*elastic.Client, error) { |
| 63 | calledConstructor = true |
| 64 | return newClient(args) |
| 65 | }, |
| 66 | interceptor: func(name string, opt *Config) { |
| 67 | calledConfig = true |
| 68 | }, |
| 69 | }, |
| 70 | )( |
| 71 | factoryIn{ |
| 72 | Conf: config.MapAdapter{"es": map[string]Config{ |
| 73 | "default": {URL: addrs}, |
| 74 | }}, |
| 75 | Logger: log.NewNopLogger(), |
| 76 | Populator: Populator{}, |
| 77 | }, |
| 78 | ) |
| 79 | def, err := esFactory.Make("default") |
| 80 | assert.NoError(t, err) |
| 81 | assert.NotNil(t, def) |
| 82 | assert.True(t, calledConstructor) |
| 83 | assert.True(t, calledConfig) |
| 84 | cleanup() |
| 85 | }) |
| 86 | |
| 87 | t.Run("should not connect to ES", func(t *testing.T) { |
| 88 | esFactory, cleanup := provideEsFactory(&providersOption{})(factoryIn{ |
| 89 | Conf: config.MapAdapter{"es": map[string]interface{}{ |