From 558e1198e97479442a93d569b8276583a59ee859 Mon Sep 17 00:00:00 2001 From: harshithad0703 Date: Tue, 26 Mar 2024 15:44:38 +0530 Subject: [PATCH 1/3] feat: notEqual to query operator implementation and test cases --- src/lib/query.ts | 19 ++++++++++++++++++- test/api/entry-queryables.spec.ts | 12 ++++++++++++ test/unit/entry-queryable.spec.ts | 4 ++++ 3 files changed, 34 insertions(+), 1 deletion(-) 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); From ceb081f6bd67c2aa8c6786872ca4807152069fbf Mon Sep 17 00:00:00 2001 From: harshithad0703 Date: Thu, 4 Apr 2024 10:54:19 +0530 Subject: [PATCH 2/3] chore: :package: version bump and updatae changeLog --- CHANGELOG.md | 5 +++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd0e10cb..7926f84d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## Change log +### Version: 4.0.0-beta.6 +#### Date: April-09-2024 +##### New Features: +- Query operators implementation-3 + ### Version: 4.0.0-beta.5 #### Date: March-26-2024 ##### New Features: diff --git a/package-lock.json b/package-lock.json index 4396f0a7..9769bb02 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@contentstack/delivery-sdk", - "version": "4.0.0-beta.5", + "version": "4.0.0-beta.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@contentstack/delivery-sdk", - "version": "4.0.0-beta.5", + "version": "4.0.0-beta.6", "dependencies": { "@contentstack/core": "^1.0.1", "@contentstack/utils": "^1.3.3", diff --git a/package.json b/package.json index a4f297a8..34e4489d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/delivery-sdk", - "version": "4.0.0-beta.5", + "version": "4.0.0-beta.6", "type": "commonjs", "main": "./dist/cjs/src/index.js", "types": "./dist/types/src/index.d.ts", From 593bd58f1be863e06cb7e5ae6872b10ab92bfbf7 Mon Sep 17 00:00:00 2001 From: harshithad0703 Date: Fri, 5 Apr 2024 19:11:42 +0530 Subject: [PATCH 3/3] fix: changed tag to latest in npm workflow --- .github/workflows/npm-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 6e407e03..900f449c 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -29,6 +29,6 @@ jobs: registry-url: 'https://npm.pkg.github.com' scope: '@contentstack' - run: npm ci - - run: npm publish --tag beta + - run: npm publish --tag latest env: NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}