@@ -40,35 +40,59 @@ beforeEach(() => {
40
40
manager = new QueryManager ( store . fork ( ) )
41
41
} )
42
42
43
- // test('QueryManager._extractTerms(...) returns an ordered array of terms', () => {
44
- // const account = { type: 'account', id: '1' }
43
+ describe ( 'QueryManager.query(...)' , ( ) => {
44
+ test ( 'Makes a new query when no queries are going on' , ( ) => {
45
+ const account = { type : 'account' , id : '1' }
46
+
47
+ const query = ( q : QueryBuilder ) => q . findRecord ( account )
45
48
46
- // const query = (q: QueryBuilder) => q.findRecord(account)/ const queries = { Cccount: query, Account: query, Bccount: query, }
49
+ manager . query ( query )
50
+
51
+ expect ( Object . keys ( manager . _queryRefs ) . length ) . toBe ( 1 )
52
+ } )
47
53
48
- // const terms = manager._extractTermsOrExpression(queries)
54
+ test ( 'No new query will be made when an identical query already exists' , ( ) => {
55
+ const account = { type : 'account' , id : '1' }
49
56
50
- // expect(terms).toMatchObject([
51
- // { key: 'Account', expression: { op: 'findRecord', record: {Account: account } },
52
- // { key: 'Bccount', expression: { op: 'findRecord', record: {Account: account } },
53
- // { key: 'Cccount', expression: { op: 'findRecord', record: {Account: account } }
54
- // ])
55
- // })
57
+ const query = ( q : QueryBuilder ) => q . findRecord ( account )
56
58
57
- test ( 'QueryManager.query(...) makes a new query when no queries are going on' , ( ) => {
58
- const account = { type : 'account' , id : '1' }
59
+ manager . query ( query )
59
60
60
- const query = ( q : QueryBuilder ) => q . findRecord ( account )
61
- const listener = jest . fn ( )
61
+ expect ( Object . keys ( manager . _queryRefs ) . length ) . toBe ( 1 )
62
62
63
- manager . subscribe ( query , listener )
63
+ manager . query ( query )
64
64
65
- expect ( Object . keys ( manager . _queryRefs ) . length ) . toBe ( 0 )
65
+ expect ( Object . keys ( manager . _queryRefs ) . length ) . toBe ( 1 )
66
+ } )
66
67
67
- manager . query ( query )
68
+ test ( 'Able to pass in options to make a unique query' , ( ) => {
69
+ const account = { type : 'account' , id : '1' }
68
70
69
- expect ( Object . keys ( manager . _queryRefs ) . length ) . toBe ( 1 )
71
+ const query = ( q : QueryBuilder ) => q . findRecord ( account )
72
+
73
+ const listener1 = jest . fn ( )
74
+ const listener2 = jest . fn ( )
75
+
76
+ const options = {
77
+ label : 'Find all contacts' ,
78
+ sources : {
79
+ remote : {
80
+ include : [ 'phone-numbers' ]
81
+ }
82
+ }
83
+ }
84
+
85
+ manager . query ( query )
86
+
87
+ expect ( Object . keys ( manager . _queryRefs ) . length ) . toBe ( 1 )
88
+
89
+ manager . query ( query , options )
90
+
91
+ expect ( Object . keys ( manager . _queryRefs ) . length ) . toBe ( 2 )
92
+ } )
70
93
} )
71
94
95
+
72
96
describe ( 'queryCache(...)' , ( ) => {
73
97
test ( 'The record object is null if no match is found' , ( ) => {
74
98
const account = { type : 'account' , id : '1' }
0 commit comments