From 74b882640e422f7e3db0205dcbb3e4d007a974e7 Mon Sep 17 00:00:00 2001 From: Damien Tournoud Date: Wed, 13 Dec 2017 13:45:58 -0800 Subject: [PATCH] mapping: Fix closestDocMapping selecting wrong mapping --- mapping/document.go | 1 + mapping/mapping_test.go | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/mapping/document.go b/mapping/document.go index d62675e5..d4c9a8f9 100644 --- a/mapping/document.go +++ b/mapping/document.go @@ -179,6 +179,7 @@ OUTER: continue OUTER } } + break } return current } diff --git a/mapping/mapping_test.go b/mapping/mapping_test.go index 5cd86015..735aef05 100644 --- a/mapping/mapping_test.go +++ b/mapping/mapping_test.go @@ -991,3 +991,26 @@ func TestMappingForNilTextMarshaler(t *testing.T) { } } + +func TestClosestDocDynamicMapping(t *testing.T) { + mapping := NewIndexMapping() + mapping.IndexDynamic = false + mapping.DefaultMapping = NewDocumentStaticMapping() + mapping.DefaultMapping.AddFieldMappingsAt("foo", NewTextFieldMapping()) + + doc := document.NewDocument("x") + err := mapping.MapDocument(doc, map[string]interface{}{ + "foo": "value", + "bar": map[string]string{ + "foo": "value2", + "baz": "value3", + }, + }) + if err != nil { + t.Fatal(err) + } + + if len(doc.Fields) != 1 { + t.Fatalf("expected 1 field, got: %d", len(doc.Fields)) + } +}