@@ -8,8 +8,60 @@ import (
8
8
"context"
9
9
"encoding/json"
10
10
"testing"
11
+ "time"
11
12
)
12
13
14
+ func TestUpdateWithDoc (t * testing.T ) {
15
+ client := setupTestClientAndCreateIndexAndAddDocs (t ) // , SetTraceLog(log.New(os.Stdout, "", 0)))
16
+
17
+ // Get original
18
+ getRes , err := client .Get ().Index (testIndexName ).Id ("1" ).Do (context .TODO ())
19
+ if err != nil {
20
+ t .Fatal (err )
21
+ }
22
+ var original tweet
23
+ if err := json .Unmarshal (getRes .Source , & original ); err != nil {
24
+ t .Fatal (err )
25
+ }
26
+
27
+ // Partial update
28
+ ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
29
+ defer cancel ()
30
+ updRes , err := client .Update ().
31
+ Index (testIndexName ).
32
+ Id ("1" ).
33
+ Doc (map [string ]interface {}{
34
+ "message" : "Updated message text." ,
35
+ }).
36
+ Do (ctx )
37
+ if err != nil {
38
+ t .Fatal (err )
39
+ }
40
+ if updRes == nil {
41
+ t .Fatal ("response is nil" )
42
+ }
43
+ if want , have := "updated" , updRes .Result ; want != have {
44
+ t .Fatalf ("want Result = %q, have %v" , want , have )
45
+ }
46
+
47
+ // Get new version
48
+ getRes , err = client .Get ().Index (testIndexName ).Id ("1" ).Do (context .TODO ())
49
+ if err != nil {
50
+ t .Fatal (err )
51
+ }
52
+ var updated tweet
53
+ if err := json .Unmarshal (getRes .Source , & updated ); err != nil {
54
+ t .Fatal (err )
55
+ }
56
+
57
+ if want , have := original .User , updated .User ; want != have {
58
+ t .Fatalf ("want User = %q, have %v" , want , have )
59
+ }
60
+ if want , have := "Updated message text." , updated .Message ; want != have {
61
+ t .Fatalf ("want Message = %q, have %v" , want , have )
62
+ }
63
+ }
64
+
13
65
func TestUpdateWithScript (t * testing.T ) {
14
66
client := setupTestClientAndCreateIndexAndAddDocs (t ) // , SetTraceLog(log.New(os.Stdout, "", 0)))
15
67
0 commit comments