Skip to content

Commit 1d05d7a

Browse files
test: ✅ added unit and api tests for or operator
1 parent 49d12fb commit 1d05d7a

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

test/api/entry-queryables.spec.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { stackInstance } from '../utils/stack-instance';
22
import { Entries } from '../../src/lib/entries';
33
import { TEntry } from './types';
4+
import { QueryOperation } from 'src/lib/types';
5+
import { Query } from 'src/lib/query';
46

57
const stack = stackInstance();
68

@@ -35,10 +37,26 @@ describe('Query Operators API test cases', () => {
3537
expect((query.entries[0] as any).multi_line).not.toBeDefined()
3638
}
3739
});
38-
});
40+
it('should return entries matching any of the conditions', async () => {
41+
const query1: Query = await makeEntries('contenttype_uid').query().containedIn('title', ['value']);
42+
const query2: Query = await makeEntries('contenttype_uid').query().where('title', QueryOperation.EQUALS, 'value2');
43+
const query = await makeEntries('contenttype_uid').query().or(query1, query2).find<TEntry>();
44+
45+
if (query.entries) {
46+
expect(query.entries).toHaveLength(2);
47+
expect(query.entries[0]._version).toBeDefined();
48+
expect(query.entries[0].locale).toBeDefined();
49+
expect(query.entries[0].uid).toBeDefined();
50+
expect(query.entries[0].title).toBe('value2');
51+
expect(query.entries[1]._version).toBeDefined();
52+
expect(query.entries[1].locale).toBeDefined();
53+
expect(query.entries[1].uid).toBeDefined();
54+
expect(query.entries[1].title).toBe('value');
55+
}
56+
});
57+
});
3958

40-
function makeEntries(contentTypeUid = ''): Entries {
59+
function makeEntries(contentTypeUid = ''): Entries {
4160
const entries = stack.ContentType(contentTypeUid).Entry();
42-
4361
return entries;
44-
}
62+
}

test/unit/entry-queryable.spec.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { AxiosInstance, httpClient } from '@contentstack/core';
22
import { ContentType } from '../../src/lib/content-type';
33
import MockAdapter from 'axios-mock-adapter';
44
import { MOCK_CLIENT_OPTIONS } from '../utils/constant';
5+
import { Query } from 'src/lib/query';
6+
import { QueryOperation } from 'src/lib/types';
57

68

79
describe('Query Operators API test cases', () => {
@@ -29,4 +31,10 @@ describe('Query Operators API test cases', () => {
2931
const query = contentType.Entry().query().notExists('fieldUID');
3032
expect(query._parameters).toStrictEqual({'fieldUID': {'$exists': false}});
3133
});
34+
it('should return entries matching any of the conditions', async () => {
35+
const query1: Query = await contentType.Entry().query().containedIn('fieldUID', ['value']);
36+
const query2: Query = await contentType.Entry().query().where('fieldUID', QueryOperation.EQUALS, 'value2');
37+
const query = await contentType.Entry().query().or(query1, query2);
38+
expect(query._parameters).toStrictEqual({ '$or': [ {'fieldUID': {'$in': ['value']}}, { 'fieldUID': 'value2' } ] });
39+
});
3240
});

0 commit comments

Comments
 (0)