diff --git a/src/lib/query.ts b/src/lib/query.ts index 1358ce2b..ed0647b9 100644 --- a/src/lib/query.ts +++ b/src/lib/query.ts @@ -301,7 +301,24 @@ export class Query extends BaseQuery { } /** - * @method equalTo + * @method notEqualTo + * @memberof Query + * @description Returns the raw (JSON) query based on the filters applied on Query object. + * @example + * import contentstack from '@contentstack/delivery-sdk' + * + * const stack = contentstack.Stack({ apiKey: "apiKey", deliveryToken: "deliveryToken", environment: "environment" }); + * const query = await stack.contentType('contenttype_uid').Entry().query().notEqualTo('fieldUid', 'value').find(); + * + * @returns {Query} + */ + notEqualTo(key: string, value: string | number | boolean): Query { + this._parameters[key] = { '$ne': value }; + return this;; + } + + /** + * @method referenceIn * @memberof Query * @description Returns the raw (JSON) query based on the filters applied on Query object. * @example diff --git a/test/api/entry-queryables.spec.ts b/test/api/entry-queryables.spec.ts index 8bef8853..645bdba2 100644 --- a/test/api/entry-queryables.spec.ts +++ b/test/api/entry-queryables.spec.ts @@ -117,6 +117,17 @@ describe('Query Operators API test cases', () => { } }); + it('should return entry not equal to the condition - notEqualTo', async () => { + const query = await makeEntries('contenttype_uid').query().notEqualTo('title', 'value').find(); + + if (query.entries) { + expect(query.entries[0]._version).toBeDefined(); + expect(query.entries[0].locale).toBeDefined(); + expect(query.entries[0].uid).toBeDefined(); + expect(query.entries[0].title).not.toBe('value'); + } + }); + it('should return entry for referencedIn query', async () => { const query = makeEntries('contenttype_uid').query().where('title', QueryOperation.EQUALS, 'value'); const entryQuery = await makeEntries('contenttype_uid').query().referenceIn('reference_uid', query).find(); @@ -127,6 +138,7 @@ describe('Query Operators API test cases', () => { expect(entryQuery.entries[0].title).toBe('test'); } }); + it('should return entry for referenceNotIn query', async () => { const query = makeEntries('contenttype_uid').query().where('title', QueryOperation.EQUALS, 'value'); const entryQuery = await makeEntries('contenttype_uid').query().referenceNotIn('reference_uid', query).find(); diff --git a/test/unit/entry-queryable.spec.ts b/test/unit/entry-queryable.spec.ts index 03885deb..ed9547af 100644 --- a/test/unit/entry-queryable.spec.ts +++ b/test/unit/entry-queryable.spec.ts @@ -53,6 +53,10 @@ describe('Query Operators API test cases', () => { const query = contentType.Entry().query().equalTo('fieldUID', 'value'); expect(query._parameters).toStrictEqual({ 'fieldUID': 'value' }); }); + it('should return entry equal to the condition - notEqualTo', async () => { + const query = contentType.Entry().query().notEqualTo('fieldUID', 'value'); + expect(query._parameters).toStrictEqual({ 'fieldUID': {'$ne': 'value'} }); + }); it('should return entry for referenceIn query', async () => { const query1 = contentType.Entry().query().where('fieldUID', QueryOperation.EQUALS, 'value'); const entryQuery = await contentType.Entry().query().referenceIn('reference_uid', query1);