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