1
2
3
4
5
6
7 package unified
8
9 import (
10 "context"
11 "testing"
12
13 "go.mongodb.org/mongo-driver/bson"
14 "go.mongodb.org/mongo-driver/internal/assert"
15 )
16
17 func TestEntityMap(t *testing.T) {
18 record := bson.D{{"foo", 1}}
19 doc, err := bson.Marshal(record)
20 assert.Nil(t, err, "error marshaling example doc %v", err)
21 t.Run("bson array entity", func(t *testing.T) {
22 name := "errors"
23 notFoundName := "failures"
24 notFoundErr := newEntityNotFoundError("BSON array", "failures")
25 em := newEntityMap()
26
27 err = em.addBSONArrayEntity(name)
28 assert.Nil(t, err, "addBSONArrayEntity error: %v", err)
29
30 err = em.addBSONArrayEntity(name)
31 assert.Nil(t, err, "addBSONArrayEntity error: %v", err)
32
33 err = em.appendBSONArrayEntity(name, doc)
34 assert.Nil(t, err, "appendBSONArrayEntity error: %v", err)
35
36 err = em.appendBSONArrayEntity(notFoundName, doc)
37 assert.Equal(t, err, notFoundErr, "expected error %v, got %v", notFoundErr, err)
38
39
40 _, err = em.BSONArray(name)
41 assert.Equal(t, err, ErrEntityMapOpen, "expected error %v, got %v", ErrEntityMapOpen, err)
42
43 em.close(context.Background())
44
45 retDocs, err := em.BSONArray(name)
46 assert.Nil(t, err, "BSONArray error: %v", err)
47 assert.Equal(t, bson.Raw(doc), retDocs[0], "expected %s, got %s", bson.Raw(doc), retDocs[0])
48
49 _, err = em.BSONArray(notFoundName)
50 assert.Equal(t, err, notFoundErr, "expected error %v, got %v", notFoundErr, err)
51 })
52 t.Run("events entity", func(t *testing.T) {
53 name := "events"
54 em := newEntityMap()
55 err = em.addEventsEntity(name)
56 assert.Nil(t, err, "addEventsEntity error: %v", err)
57 err = em.addEventsEntity(name)
58 assert.NotNil(t, err, "expected error for duplicate entity name")
59
60 em.appendEventsEntity(name, doc)
61
62
63 _, err := em.EventList(name)
64 assert.Equal(t, err, ErrEntityMapOpen, "expected error %v, got %v", ErrEntityMapOpen, err)
65
66 em.close(context.Background())
67
68 retDocs, err := em.EventList(name)
69 assert.Nil(t, err, "EventList error: %v", err)
70 assert.Equal(t, bson.Raw(doc), retDocs[0], "expected %s, got %s", bson.Raw(doc), retDocs[0])
71
72 _, err = em.EventList("bar")
73 notFoundErr := newEntityNotFoundError("event list", "bar")
74 assert.Equal(t, err, notFoundErr, "expected error %v, got %v", notFoundErr, err)
75 })
76 t.Run("iterations entity", func(t *testing.T) {
77 name := "iters"
78 notFoundName := "bar"
79 notFoundErr := newEntityNotFoundError("iterations", "bar")
80 em := newEntityMap()
81 err = em.addIterationsEntity(name)
82 assert.Nil(t, err, "addIterationsEntity error: %v", err)
83 err = em.addIterationsEntity(name)
84 assert.NotNil(t, err, "expected error for duplicate entity name")
85
86 err = em.incrementIterations(name)
87 assert.Nil(t, err, "incrementIterations error: %v", err)
88
89 err = em.incrementIterations(notFoundName)
90 assert.Equal(t, err, notFoundErr, "expected error %v, got %v", notFoundErr, err)
91
92 retVal, err := em.Iterations(name)
93 assert.Nil(t, err, "expected nil error, got %v", err)
94 assert.Equal(t, int32(1), retVal, "expected %v, got %v", int32(1), retVal)
95
96 _, err = em.Iterations(notFoundName)
97 assert.Equal(t, err, notFoundErr, "expected error %v, got %v", notFoundErr, err)
98 })
99 t.Run("successes entity", func(t *testing.T) {
100 name := "successes"
101 notFoundName := "bar"
102 notFoundErr := newEntityNotFoundError("successes", "bar")
103 em := newEntityMap()
104 err = em.addSuccessesEntity(name)
105 assert.Nil(t, err, "addSuccessesEntity error: %v", err)
106 err = em.addSuccessesEntity(name)
107 assert.NotNil(t, err, "expected error for duplicate entity name")
108
109 err = em.incrementSuccesses(name)
110 assert.Nil(t, err, "incrementSuccesses error: %v", err)
111
112 err = em.incrementSuccesses(notFoundName)
113 assert.Equal(t, err, notFoundErr, "expected error %v, got %v", notFoundErr, err)
114
115 retVal, err := em.Successes(name)
116 assert.Nil(t, err, "Successes error: %v", err)
117 assert.Equal(t, int32(1), retVal, "expected %v, got %v", int32(1), retVal)
118
119 _, err = em.Successes(notFoundName)
120 assert.Equal(t, err, notFoundErr, "expected error %v, got %v", notFoundErr, err)
121 })
122 }
123
View as plain text