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 TestPercolatorQuery(t *testing.T) { 13 q := NewPercolatorQuery(). 14 Field("query"). 15 DocumentType("doctype"). 16 Document(map[string]interface{}{ 17 "message": "Some message", 18 }) 19 src, err := q.Source() 20 if err != nil { 21 t.Fatal(err) 22 } 23 data, err := json.Marshal(src) 24 if err != nil { 25 t.Fatalf("marshaling to JSON failed: %v", err) 26 } 27 got := string(data) 28 expected := `{"percolate":{"document":{"message":"Some message"},"document_type":"doctype","field":"query"}}` 29 if got != expected { 30 t.Errorf("expected\n%s\n,got:\n%s", expected, got) 31 } 32} 33 34func TestPercolatorQueryWithDetails(t *testing.T) { 35 q := NewPercolatorQuery(). 36 Field("query"). 37 DocumentType("doctype"). 38 Document(map[string]interface{}{ 39 "message": "Some message", 40 }). 41 IndexedDocumentIndex("index"). 42 IndexedDocumentType("type"). 43 IndexedDocumentId("1"). 44 IndexedDocumentRouting("route"). 45 IndexedDocumentPreference("one"). 46 IndexedDocumentVersion(1) 47 src, err := q.Source() 48 if err != nil { 49 t.Fatal(err) 50 } 51 data, err := json.Marshal(src) 52 if err != nil { 53 t.Fatalf("marshaling to JSON failed: %v", err) 54 } 55 got := string(data) 56 expected := `{"percolate":{"document":{"message":"Some message"},"document_type":"doctype","field":"query","id":"1","index":"index","preference":"one","routing":"route","type":"type","version":1}}` 57 if got != expected { 58 t.Errorf("expected\n%s\n,got:\n%s", expected, got) 59 } 60} 61 62func TestPercolatorQueryWithMissingFields(t *testing.T) { 63 q := NewPercolatorQuery() // no Field, Document, or Query 64 _, err := q.Source() 65 if err == nil { 66 t.Fatal("expected error, got nil") 67 } 68} 69