@@ -5,15 +5,21 @@ import { EJSON } from 'bson'
5
5
6
6
import { createCachingMethods , idToString } from '../cache'
7
7
8
+ const hexId = 'aaaa0000bbbb0000cccc0000'
9
+
8
10
const docs = {
9
- id1 : {
10
- _id : 'aaaa0000bbbb0000cccc0000'
11
+ one : {
12
+ _id : ObjectId ( hexId )
11
13
} ,
12
- id2 : {
14
+ two : {
13
15
_id : ObjectId ( )
14
16
}
15
17
}
16
18
19
+ const stringDoc = {
20
+ _id : 's2QBCnv6fXv5YbjAP'
21
+ }
22
+
17
23
const collectionName = 'test'
18
24
const cacheKey = id => `mongo-${ collectionName } -${ idToString ( id ) } `
19
25
@@ -32,12 +38,16 @@ describe('createCachingMethods', () => {
32
38
( ) =>
33
39
resolve (
34
40
ids . map ( id => {
35
- if ( id . equals ( new ObjectId ( docs . id1 . _id ) ) ) {
36
- return docs . id1
41
+ if ( id === stringDoc . _id ) {
42
+ return stringDoc
43
+ }
44
+
45
+ if ( id . equals ( docs . one . _id ) ) {
46
+ return docs . one
37
47
}
38
48
39
- if ( id . equals ( docs . id2 . _id ) ) {
40
- return docs . id2
49
+ if ( id . equals ( docs . two . _id ) ) {
50
+ return docs . two
41
51
}
42
52
} )
43
53
) ,
@@ -59,16 +69,22 @@ describe('createCachingMethods', () => {
59
69
} )
60
70
61
71
it ( 'finds one' , async ( ) => {
62
- const doc = await api . findOneById ( docs . id1 . _id )
63
- expect ( doc ) . toBe ( docs . id1 )
72
+ const doc = await api . findOneById ( docs . one . _id )
73
+ expect ( doc ) . toBe ( docs . one )
74
+ expect ( collection . find . mock . calls . length ) . toBe ( 1 )
75
+ } )
76
+
77
+ it ( 'finds one with string id' , async ( ) => {
78
+ const doc = await api . findOneById ( stringDoc . _id )
79
+ expect ( doc ) . toBe ( stringDoc )
64
80
expect ( collection . find . mock . calls . length ) . toBe ( 1 )
65
81
} )
66
82
67
83
it ( 'finds two with batching' , async ( ) => {
68
- const foundDocs = await api . findManyByIds ( [ docs . id1 . _id , docs . id2 . _id ] )
84
+ const foundDocs = await api . findManyByIds ( [ docs . one . _id , docs . two . _id ] )
69
85
70
- expect ( foundDocs [ 0 ] ) . toBe ( docs . id1 )
71
- expect ( foundDocs [ 1 ] ) . toBe ( docs . id2 )
86
+ expect ( foundDocs [ 0 ] ) . toBe ( docs . one )
87
+ expect ( foundDocs [ 1 ] ) . toBe ( docs . two )
72
88
73
89
expect ( collection . find . mock . calls . length ) . toBe ( 1 )
74
90
} )
@@ -82,31 +98,31 @@ describe('createCachingMethods', () => {
82
98
// })
83
99
84
100
it ( `doesn't cache without ttl` , async ( ) => {
85
- await api . findOneById ( docs . id1 . _id )
101
+ await api . findOneById ( docs . one . _id )
86
102
87
- const value = await cache . get ( cacheKey ( docs . id1 . _id ) )
103
+ const value = await cache . get ( cacheKey ( docs . one . _id ) )
88
104
expect ( value ) . toBeUndefined ( )
89
105
} )
90
106
91
107
it ( `caches` , async ( ) => {
92
- await api . findOneById ( docs . id1 . _id , { ttl : 1 } )
93
- const value = await cache . get ( cacheKey ( docs . id1 . _id ) )
94
- expect ( value ) . toEqual ( EJSON . stringify ( docs . id1 ) )
108
+ await api . findOneById ( docs . one . _id , { ttl : 1 } )
109
+ const value = await cache . get ( cacheKey ( docs . one . _id ) )
110
+ expect ( value ) . toEqual ( EJSON . stringify ( docs . one ) )
95
111
96
- await api . findOneById ( docs . id1 . _id )
112
+ await api . findOneById ( docs . one . _id )
97
113
expect ( collection . find . mock . calls . length ) . toBe ( 1 )
98
114
} )
99
115
100
116
it ( `caches with ttl` , async ( ) => {
101
- await api . findOneById ( docs . id1 . _id , { ttl : 1 } )
117
+ await api . findOneById ( docs . one . _id , { ttl : 1 } )
102
118
await wait ( 1001 )
103
119
104
- const value = await cache . get ( cacheKey ( docs . id1 . _id ) )
120
+ const value = await cache . get ( cacheKey ( docs . one . _id ) )
105
121
expect ( value ) . toBeUndefined ( )
106
122
} )
107
123
108
124
it ( `deletes from cache` , async ( ) => {
109
- for ( const doc of [ docs . id1 , docs . id2 ] ) {
125
+ for ( const doc of [ docs . one , docs . two , stringDoc ] ) {
110
126
await api . findOneById ( doc . _id , { ttl : 1 } )
111
127
112
128
const valueBefore = await cache . get ( cacheKey ( doc . _id ) )
@@ -120,7 +136,7 @@ describe('createCachingMethods', () => {
120
136
} )
121
137
122
138
it ( 'deletes from DataLoader cache' , async ( ) => {
123
- for ( const id of [ docs . id1 . _id , docs . id2 . _id ] ) {
139
+ for ( const id of [ docs . one . _id , docs . two . _id , stringDoc . _id ] ) {
124
140
await api . findOneById ( id )
125
141
expect ( collection . find ) . toHaveBeenCalled ( )
126
142
collection . find . mockClear ( )
0 commit comments