1
+ import { stackInstance } from '../utils/stack-instance' ;
2
+ import { Entries } from '../../src/lib/entries' ;
3
+ import { TEntry } from './types' ;
4
+ import { QueryOperation } from '../../src/lib/types' ;
5
+ import { Query } from '../../src/lib/query' ;
6
+
7
+ const stack = stackInstance ( ) ;
8
+
9
+ describe ( 'Query Operators API test cases' , ( ) => {
10
+ it ( 'should get entries which matches the fieldUid and values' , async ( ) => {
11
+ const query = await makeEntries ( 'contenttype_uid' ) . query ( ) . containedIn ( 'title' , [ 'value' ] ) . find < TEntry > ( )
12
+ if ( query . entries ) {
13
+ expect ( query . entries [ 0 ] . _version ) . toBeDefined ( ) ;
14
+ expect ( query . entries [ 0 ] . title ) . toBeDefined ( ) ;
15
+ expect ( query . entries [ 0 ] . uid ) . toBeDefined ( ) ;
16
+ expect ( query . entries [ 0 ] . created_at ) . toBeDefined ( ) ;
17
+ }
18
+ } ) ;
19
+
20
+ it ( 'should get entries which does not match the fieldUid and values' , async ( ) => {
21
+ const query = await makeEntries ( 'contenttype_uid' ) . query ( ) . notContainedIn ( 'title' , [ 'test' , 'test2' ] ) . find < TEntry > ( )
22
+ if ( query . entries ) {
23
+ expect ( query . entries [ 0 ] . _version ) . toBeDefined ( ) ;
24
+ expect ( query . entries [ 0 ] . title ) . toBeDefined ( ) ;
25
+ expect ( query . entries [ 0 ] . uid ) . toBeDefined ( ) ;
26
+ expect ( query . entries [ 0 ] . created_at ) . toBeDefined ( ) ;
27
+ }
28
+ } ) ;
29
+
30
+ it ( 'should get entries which does not match the fieldUid - notExists' , async ( ) => {
31
+ const query = await makeEntries ( 'contenttype_uid' ) . query ( ) . notExists ( 'multi_line' ) . find < TEntry > ( )
32
+ if ( query . entries ) {
33
+ expect ( query . entries [ 0 ] . _version ) . toBeDefined ( ) ;
34
+ expect ( query . entries [ 0 ] . title ) . toBeDefined ( ) ;
35
+ expect ( query . entries [ 0 ] . uid ) . toBeDefined ( ) ;
36
+ expect ( query . entries [ 0 ] . created_at ) . toBeDefined ( ) ;
37
+ expect ( ( query . entries [ 0 ] as any ) . multi_line ) . not . toBeDefined ( )
38
+ }
39
+ } ) ;
40
+
41
+ it ( 'should return entries matching any of the conditions - or' , async ( ) => {
42
+ const query1 : Query = await makeEntries ( 'contenttype_uid' ) . query ( ) . containedIn ( 'title' , [ 'value' ] ) ;
43
+ const query2 : Query = await makeEntries ( 'contenttype_uid' ) . query ( ) . where ( 'title' , QueryOperation . EQUALS , 'value2' ) ;
44
+ const query = await makeEntries ( 'contenttype_uid' ) . query ( ) . or ( query1 , query2 ) . find < TEntry > ( ) ;
45
+
46
+ if ( query . entries ) {
47
+ expect ( query . entries . length ) . toBeGreaterThan ( 0 ) ;
48
+ expect ( query . entries [ 0 ] . _version ) . toBeDefined ( ) ;
49
+ expect ( query . entries [ 0 ] . locale ) . toBeDefined ( ) ;
50
+ expect ( query . entries [ 0 ] . uid ) . toBeDefined ( ) ;
51
+ expect ( query . entries [ 0 ] . title ) . toBe ( 'value2' ) ;
52
+ expect ( query . entries [ 1 ] . _version ) . toBeDefined ( ) ;
53
+ expect ( query . entries [ 1 ] . locale ) . toBeDefined ( ) ;
54
+ expect ( query . entries [ 1 ] . uid ) . toBeDefined ( ) ;
55
+ expect ( query . entries [ 1 ] . title ) . toBe ( 'value' ) ;
56
+ }
57
+ } ) ;
58
+
59
+ it ( 'should return entries when at least 1 entry condition is matching - or' , async ( ) => {
60
+ const query1 : Query = await makeEntries ( 'contenttype_uid' ) . query ( ) . containedIn ( 'title' , [ 'value0' ] ) ;
61
+ const query2 : Query = await makeEntries ( 'contenttype_uid' ) . query ( ) . where ( 'title' , QueryOperation . EQUALS , 'value2' ) ;
62
+ const query = await makeEntries ( 'contenttype_uid' ) . query ( ) . or ( query1 , query2 ) . find < TEntry > ( ) ;
63
+
64
+ if ( query . entries ) {
65
+ expect ( query . entries . length ) . toBeGreaterThan ( 0 ) ;
66
+ expect ( query . entries [ 0 ] . _version ) . toBeDefined ( ) ;
67
+ expect ( query . entries [ 0 ] . locale ) . toBeDefined ( ) ;
68
+ expect ( query . entries [ 0 ] . uid ) . toBeDefined ( ) ;
69
+ expect ( query . entries [ 0 ] . title ) . toBe ( 'value2' ) ;
70
+ }
71
+ } ) ;
72
+
73
+ it ( 'should return entry both conditions are matching - and' , async ( ) => {
74
+ const query1 : Query = await makeEntries ( 'contenttype_uid' ) . query ( ) . containedIn ( 'title' , [ 'value' ] ) ;
75
+ const query2 : Query = await makeEntries ( 'contenttype_uid' ) . query ( ) . where ( 'locale' , QueryOperation . EQUALS , 'en-us' ) ;
76
+ const query = await makeEntries ( 'contenttype_uid' ) . query ( ) . and ( query1 , query2 ) . find < TEntry > ( ) ;
77
+
78
+ if ( query . entries ) {
79
+ expect ( query . entries . length ) . toBeGreaterThan ( 0 ) ;
80
+ expect ( query . entries [ 0 ] . _version ) . toBeDefined ( ) ;
81
+ expect ( query . entries [ 0 ] . locale ) . toBeDefined ( ) ;
82
+ expect ( query . entries [ 0 ] . uid ) . toBeDefined ( ) ;
83
+ expect ( query . entries [ 0 ] . title ) . toBe ( 'value' ) ;
84
+ }
85
+ } ) ;
86
+
87
+ it ( 'should return null when any one condition is not matching - and' , async ( ) => {
88
+ const query1 : Query = await makeEntries ( 'contenttype_uid' ) . query ( ) . containedIn ( 'title' , [ 'value0' ] ) ;
89
+ const query2 : Query = await makeEntries ( 'contenttype_uid' ) . query ( ) . where ( 'locale' , QueryOperation . EQUALS , 'fr-fr' ) ;
90
+ const query = await makeEntries ( 'contenttype_uid' ) . query ( ) . and ( query1 , query2 ) . find < TEntry > ( ) ;
91
+
92
+ if ( query . entries ) {
93
+ expect ( query . entries ) . toHaveLength ( 0 ) ;
94
+
95
+ }
96
+ } ) ;
97
+
98
+ it ( 'should return entry equal to the condition - equalTo' , async ( ) => {
99
+ const query = await makeEntries ( 'contenttype_uid' ) . query ( ) . equalTo ( 'title' , 'value' ) . find < TEntry > ( ) ;
100
+
101
+ if ( query . entries ) {
102
+ expect ( query . entries [ 0 ] . _version ) . toBeDefined ( ) ;
103
+ expect ( query . entries [ 0 ] . locale ) . toBeDefined ( ) ;
104
+ expect ( query . entries [ 0 ] . uid ) . toBeDefined ( ) ;
105
+ expect ( query . entries [ 0 ] . title ) . toBe ( 'value' ) ;
106
+ }
107
+ } ) ;
108
+
109
+ it ( 'should return entry for referencedIn query' , async ( ) => {
110
+ const query = makeEntries ( 'contenttype_uid' ) . query ( ) . where ( 'title' , QueryOperation . EQUALS , 'value' ) ;
111
+ const entryQuery = await makeEntries ( 'contenttype_uid' ) . query ( ) . referenceIn ( 'reference_uid' , query ) . find < TEntry > ( ) ;
112
+ if ( entryQuery . entries ) {
113
+ expect ( entryQuery . entries [ 0 ] . _version ) . toBeDefined ( ) ;
114
+ expect ( entryQuery . entries [ 0 ] . locale ) . toBeDefined ( ) ;
115
+ expect ( entryQuery . entries [ 0 ] . uid ) . toBeDefined ( ) ;
116
+ expect ( entryQuery . entries [ 0 ] . title ) . toBe ( 'test' ) ;
117
+ }
118
+ } ) ;
119
+ } ) ;
120
+
121
+ function makeEntries ( contentTypeUid = '' ) : Entries {
122
+ const entries = stack . ContentType ( contentTypeUid ) . Entry ( ) ;
123
+ return entries ;
124
+ }
0 commit comments