1// Copyright 2012-present Oliver Eilhard. All rights reserved. 2// Use of this source code is governed by a MIT-license. 3// See http://olivere.mit-license.org/license.txt for details. 4 5package elastic 6 7import ( 8 "encoding/json" 9 "testing" 10) 11 12func TestCardinalityAggregation(t *testing.T) { 13 agg := NewCardinalityAggregation().Field("author.hash") 14 src, err := agg.Source() 15 if err != nil { 16 t.Fatal(err) 17 } 18 data, err := json.Marshal(src) 19 if err != nil { 20 t.Fatalf("marshaling to JSON failed: %v", err) 21 } 22 got := string(data) 23 expected := `{"cardinality":{"field":"author.hash"}}` 24 if got != expected { 25 t.Errorf("expected\n%s\n,got:\n%s", expected, got) 26 } 27} 28 29func TestCardinalityAggregationWithOptions(t *testing.T) { 30 agg := NewCardinalityAggregation().Field("author.hash").PrecisionThreshold(100).Rehash(true) 31 src, err := agg.Source() 32 if err != nil { 33 t.Fatal(err) 34 } 35 data, err := json.Marshal(src) 36 if err != nil { 37 t.Fatalf("marshaling to JSON failed: %v", err) 38 } 39 got := string(data) 40 expected := `{"cardinality":{"field":"author.hash","precision_threshold":100,"rehash":true}}` 41 if got != expected { 42 t.Errorf("expected\n%s\n,got:\n%s", expected, got) 43 } 44} 45 46func TestCardinalityAggregationWithFormat(t *testing.T) { 47 agg := NewCardinalityAggregation().Field("author.hash").Format("00000") 48 src, err := agg.Source() 49 if err != nil { 50 t.Fatal(err) 51 } 52 data, err := json.Marshal(src) 53 if err != nil { 54 t.Fatalf("marshaling to JSON failed: %v", err) 55 } 56 got := string(data) 57 expected := `{"cardinality":{"field":"author.hash","format":"00000"}}` 58 if got != expected { 59 t.Errorf("expected\n%s\n,got:\n%s", expected, got) 60 } 61} 62 63func TestCardinalityAggregationWithMetaData(t *testing.T) { 64 agg := NewCardinalityAggregation().Field("author.hash").Meta(map[string]interface{}{"name": "Oliver"}) 65 src, err := agg.Source() 66 if err != nil { 67 t.Fatal(err) 68 } 69 data, err := json.Marshal(src) 70 if err != nil { 71 t.Fatalf("marshaling to JSON failed: %v", err) 72 } 73 got := string(data) 74 expected := `{"cardinality":{"field":"author.hash"},"meta":{"name":"Oliver"}}` 75 if got != expected { 76 t.Errorf("expected\n%s\n,got:\n%s", expected, got) 77 } 78} 79