diff --git a/CHANGELOG.md b/CHANGELOG.md index 43227268..a59821a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ # Changelog +## [v1.19.2](https://github.com/contentstack/contentstack-management-javascript/tree/v1.19.2) (2025-01-27) + - Enhancement + - Added support for nested global fields. ## [v1.18.4](https://github.com/contentstack/contentstack-management-javascript/tree/v1.18.4) (2024-11-22) - Enhancement - Added support for response headers. diff --git a/lib/entity.js b/lib/entity.js index 5206e474..2203ccdf 100644 --- a/lib/entity.js +++ b/lib/entity.js @@ -105,10 +105,11 @@ export const create = ({ http, params }) => { } } -export const query = ({ http, wrapperCollection }) => { +export const query = ({ http, wrapperCollection, apiVersion }) => { return function (params = {}) { const headers = { - ...cloneDeep(this.stackHeaders) + ...cloneDeep(this.stackHeaders), + ...(apiVersion != null ? { api_version: apiVersion } : {}) } if (this.organization_uid) { headers.organization_uid = this.organization_uid diff --git a/lib/stack/globalField/index.js b/lib/stack/globalField/index.js index 2389c0ba..12d00ac1 100644 --- a/lib/stack/globalField/index.js +++ b/lib/stack/globalField/index.js @@ -14,8 +14,7 @@ export function GlobalField (http, data = {}) { this.apiVersion = data.api_version || undefined; if (this.apiVersion) { - http.defaults.headers.api_version = this.apiVersion; - http.httpClientParams.headers.api_version = this.apiVersion; + this.stackHeaders.api_version = this.apiVersion; } this.urlPath = `/global_fields` @@ -40,7 +39,32 @@ export function GlobalField (http, data = {}) { * .then((globalField) => console.log(globalField)) * */ - this.update = update(http, 'global_field') + this.update = async (config) => { + try { + // Add `api_version` to headers if `this.apiVersion` is defined + if (this.apiVersion) { + this.stackHeaders.api_version = this.apiVersion; + } + const headers = { + headers: { + ...cloneDeep(this.stackHeaders) + } + } + const response = await http.put(`${this.urlPath}`, config, headers); + // Remove `api_version` from headers after fetching data + if (this.apiVersion) { + delete this.stackHeaders.api_version; + } + if (response.data) { + return response.data; + } else { + throw error(response); + } + } catch (err) { + throw error(err); + } + } + /** * @description The Update GlobalField call lets you update the name and description of an existing GlobalField. @@ -104,7 +128,35 @@ export function GlobalField (http, data = {}) { * client.stack({ api_key: 'api_key'}).globalField('global_field_uid').delete() * .then((response) => console.log(response.notice)) */ - this.delete = deleteEntity(http) + this.delete = async () => { + let param = {}; + try { + // Add `api_version` to headers if `this.apiVersion` is defined + if (this.apiVersion) { + this.stackHeaders.api_version = this.apiVersion; + } + const headers = { + headers: { + ...cloneDeep(this.stackHeaders) + }, + params: { + ...cloneDeep(param) + } + }; + const response = await http.delete(this.urlPath, headers); + if (this.apiVersion) { + delete this.stackHeaders.api_version; + } + if (response.data) { + return response.data; + } else { + throw error(response); + } + } catch (err) { + throw error(err); + } + }; + /** * @description The fetch GlobalField call fetches GlobalField details. @@ -119,7 +171,30 @@ export function GlobalField (http, data = {}) { * .then((globalField) => console.log(globalField)) * */ - this.fetch = fetch(http, 'global_field') + this.fetch = async function (param = {}) { + try { + if (this.apiVersion) { + this.stackHeaders.api_version = this.apiVersion; + } + const headers = { + headers: { + ...cloneDeep(this.stackHeaders) + }, + params: { + ...cloneDeep(param) + } + }; + const response = await http.get(this.urlPath, headers); + if (response.data) { + return response.data; + } else { + throw error(response); + } + } catch (err) { + throw error(err); + } + }; + } else { /** * @description The Create a GlobalField call creates a new globalField in a particular stack of your Contentstack account. @@ -142,7 +217,27 @@ export function GlobalField (http, data = {}) { * client.stack().globalField().create({ global_field }) * .then((globalField) => console.log(globalField)) */ - this.create = create({ http: http }) + this.create = async (data) => { + try { + if (this.apiVersion) { + this.stackHeaders.api_version = this.apiVersion; + } + const headers = { + headers: { + ...cloneDeep(this.stackHeaders) + } + }; + const response = await http.post(`${this.urlPath}`, data, headers); + if (response.data) { + return response.data; + } else { + return error(response); + } + } catch (err) { + return error(err); + } + }; + /** * @description The Query on GlobalField will allow to fetch details of all or specific GlobalField @@ -157,7 +252,7 @@ export function GlobalField (http, data = {}) { * client.stack().globalField().query({ query: { name: 'Global Field Name' } }).find() * .then((globalFields) => console.log(globalFields)) */ - this.query = query({ http: http, wrapperCollection: GlobalFieldCollection }) + this.query = query({ http: http, wrapperCollection: GlobalFieldCollection, apiVersion: this.apiVersion }) /** * @description The Import a global field call imports a global field into a stack. diff --git a/lib/stack/index.js b/lib/stack/index.js index 4bb62a46..b8e1f5ca 100644 --- a/lib/stack/index.js +++ b/lib/stack/index.js @@ -173,8 +173,10 @@ export function Stack (http, data) { } else if (globalFieldUidOrOptions) { data.global_field = { uid: globalFieldUidOrOptions }; } - - if (options?.api_version) { + + // Safely handle `options` and check for `api_version` + options = options || {}; // Ensure `options` is always an object + if (options && typeof options === 'object' && options.api_version) { data.api_version = options.api_version; if (options.api_version === '3.2') { data.nested_global_fields = true; diff --git a/package-lock.json b/package-lock.json index cc22921a..c9b6ea72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@contentstack/management", - "version": "1.19.0", + "version": "1.19.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@contentstack/management", - "version": "1.19.0", + "version": "1.19.2", "license": "MIT", "dependencies": { "axios": "^1.7.8", diff --git a/package.json b/package.json index 4dbfaf46..ec47ec17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/management", - "version": "1.19.0", + "version": "1.19.2", "description": "The Content Management API is used to manage the content of your Contentstack account", "main": "./dist/node/contentstack-management.js", "browser": "./dist/web/contentstack-management.js", diff --git a/test/sanity-check/api/globalfield-test.js b/test/sanity-check/api/globalfield-test.js index 638f592b..8b7d03b5 100644 --- a/test/sanity-check/api/globalfield-test.js +++ b/test/sanity-check/api/globalfield-test.js @@ -20,6 +20,7 @@ describe("Global Field api Test", () => { makeGlobalField() .create(createGlobalField) .then((globalField) => { + globalField = globalField.global_field; expect(globalField.uid).to.be.equal(createGlobalField.global_field.uid); expect(globalField.title).to.be.equal( createGlobalField.global_field.title @@ -42,6 +43,7 @@ describe("Global Field api Test", () => { makeGlobalField(createGlobalField.global_field.uid) .fetch() .then((globalField) => { + globalField = globalField.global_field; expect(globalField.uid).to.be.equal(createGlobalField.global_field.uid); expect(globalField.title).to.be.equal( createGlobalField.global_field.title @@ -60,38 +62,11 @@ describe("Global Field api Test", () => { .catch(done); }); - it("should fetch and update global Field", (done) => { - makeGlobalField(createGlobalField.global_field.uid) - .fetch() - .then((globalField) => { - globalField.title = "Update title"; - return globalField.update(); - }) - .then((updateGlobal) => { - expect(updateGlobal.uid).to.be.equal( - createGlobalField.global_field.uid - ); - expect(updateGlobal.title).to.be.equal("Update title"); - expect(updateGlobal.schema[0].uid).to.be.equal( - createGlobalField.global_field.schema[0].uid - ); - expect(updateGlobal.schema[0].data_type).to.be.equal( - createGlobalField.global_field.schema[0].data_type - ); - expect(updateGlobal.schema[0].display_name).to.be.equal( - createGlobalField.global_field.schema[0].display_name - ); - done(); - }) - .catch(done); - }); - it("should update global Field", (done) => { - const globalField = makeGlobalField(createGlobalField.global_field.uid); - Object.assign(globalField, cloneDeep(createGlobalField.global_field)); - globalField - .update() + makeGlobalField(createGlobalField.global_field.uid) + .update(createGlobalField) .then((updateGlobal) => { + updateGlobal = updateGlobal.global_field; expect(updateGlobal.uid).to.be.equal( createGlobalField.global_field.uid ); @@ -140,6 +115,7 @@ describe("Global Field api Test", () => { .catch(done); }); + it("should get global field title matching Upload", (done) => { makeGlobalField() .query({ query: { title: "Upload" } }) @@ -162,7 +138,6 @@ describe("Global Field api Test", () => { collection.items.forEach((globalField) => { expect(globalField.uid).to.be.not.equal(null); expect(globalField.title).to.be.not.equal(null); - expect(globalField.schema).to.be.not.equal(null); }); done(); }) @@ -173,7 +148,7 @@ describe("Global Field api Test", () => { it('should create nested global field for reference', done => { makeGlobalField({ api_version: '3.2' }).create(createNestedGlobalFieldForReference) .then(globalField => { - expect(globalField.uid).to.be.equal(createNestedGlobalFieldForReference.global_field.uid); + expect(globalField.global_field.uid).to.be.equal(createNestedGlobalFieldForReference.global_field.uid); done(); }) .catch(err => { @@ -185,7 +160,7 @@ describe("Global Field api Test", () => { it('should create nested global field', done => { makeGlobalField({ api_version: '3.2' }).create(createNestedGlobalField) .then(globalField => { - expect(globalField.uid).to.be.equal(createNestedGlobalField.global_field.uid); + expect(globalField.global_field.uid).to.be.equal(createNestedGlobalField.global_field.uid); done(); }) .catch(err => { @@ -197,7 +172,7 @@ describe("Global Field api Test", () => { it('should fetch nested global field', done => { makeGlobalField(createNestedGlobalField.global_field.uid, { api_version: '3.2' }).fetch() .then(globalField => { - expect(globalField.uid).to.be.equal(createNestedGlobalField.global_field.uid); + expect(globalField.global_field.uid).to.be.equal(createNestedGlobalField.global_field.uid); done(); }) .catch(err => { @@ -207,8 +182,8 @@ describe("Global Field api Test", () => { }); it('should update nested global fields without fetch', done => { - makeGlobalField(createNestedGlobalField.global_field.uid, { headers: { api_version: '3.2' }}) - .updateNestedGlobalField(createNestedGlobalField) + makeGlobalField(createNestedGlobalField.global_field.uid, { api_version: '3.2' }) + .update(createNestedGlobalField) .then((globalField) => { expect(globalField.global_field.schema.length).to.be.equal(2) done() diff --git a/test/unit/globalField-test.js b/test/unit/globalField-test.js index 744f51c8..5eea7910 100644 --- a/test/unit/globalField-test.js +++ b/test/unit/globalField-test.js @@ -6,426 +6,446 @@ import { GlobalField, GlobalFieldCollection, createFormData } from '../../lib/st import { systemUidMock, checkSystemFields, globalFieldMock, stackHeadersMock, noticeMock, nestedGlobalFieldMock, nestedGlobalFieldPayload } from './mock/objects' import MockAdapter from 'axios-mock-adapter' -describe('Contentstack GlobalField test', () => { - it('GlobalField test without uid', done => { - const globalField = makeGlobalField() - expect(globalField.urlPath).to.be.equal('/global_fields') - expect(globalField.stackHeaders).to.be.equal(undefined) - expect(globalField.update).to.be.equal(undefined) - expect(globalField.delete).to.be.equal(undefined) - expect(globalField.fetch).to.be.equal(undefined) - expect(globalField.create).to.not.equal(undefined) - expect(globalField.query).to.not.equal(undefined) - done() - }) +describe("Contentstack GlobalField test", () => { + it("GlobalField test without uid", (done) => { + const globalField = makeGlobalField(); + expect(globalField.urlPath).to.be.equal("/global_fields"); + expect(globalField.stackHeaders).to.be.equal(undefined); + expect(globalField.update).to.be.equal(undefined); + expect(globalField.delete).to.be.equal(undefined); + expect(globalField.fetch).to.be.equal(undefined); + expect(globalField.create).to.not.equal(undefined); + expect(globalField.query).to.not.equal(undefined); + done(); + }); - it('GlobalField test with uid', done => { + it("GlobalField test with uid", (done) => { const globalField = makeGlobalField({ global_field: { - ...systemUidMock - } - }) - expect(globalField.urlPath).to.be.equal(`/global_fields/${systemUidMock.uid}`) - expect(globalField.stackHeaders).to.be.equal(undefined) - expect(globalField.update).to.not.equal(undefined) - expect(globalField.delete).to.not.equal(undefined) - expect(globalField.fetch).to.not.equal(undefined) - expect(globalField.create).to.be.equal(undefined) - expect(globalField.query).to.be.equal(undefined) - done() - }) + ...systemUidMock, + }, + }); + expect(globalField.urlPath).to.be.equal( + `/global_fields/${systemUidMock.uid}` + ); + expect(globalField.stackHeaders).to.be.equal(undefined); + expect(globalField.update).to.not.equal(undefined); + expect(globalField.delete).to.not.equal(undefined); + expect(globalField.fetch).to.not.equal(undefined); + expect(globalField.create).to.be.equal(undefined); + expect(globalField.query).to.be.equal(undefined); + done(); + }); - it('GlobalField test with Stack Headers', done => { + it("GlobalField test with Stack Headers", (done) => { const globalField = makeGlobalField({ global_field: { - ...systemUidMock + ...systemUidMock, }, - stackHeaders: stackHeadersMock - }) - expect(globalField.urlPath).to.be.equal(`/global_fields/${systemUidMock.uid}`) - expect(globalField.stackHeaders).to.not.equal(undefined) - expect(globalField.stackHeaders.api_key).to.be.equal(stackHeadersMock.api_key) - expect(globalField.update).to.not.equal(undefined) - expect(globalField.delete).to.not.equal(undefined) - expect(globalField.fetch).to.not.equal(undefined) - expect(globalField.create).to.be.equal(undefined) - expect(globalField.query).to.be.equal(undefined) - done() - }) + stackHeaders: stackHeadersMock, + }); + expect(globalField.urlPath).to.be.equal( + `/global_fields/${systemUidMock.uid}` + ); + expect(globalField.stackHeaders).to.not.equal(undefined); + expect(globalField.stackHeaders.api_key).to.be.equal( + stackHeadersMock.api_key + ); + expect(globalField.update).to.not.equal(undefined); + expect(globalField.delete).to.not.equal(undefined); + expect(globalField.fetch).to.not.equal(undefined); + expect(globalField.create).to.be.equal(undefined); + expect(globalField.query).to.be.equal(undefined); + done(); + }); - it('GlobalField Collection test with blank data', done => { - const globalFields = new GlobalFieldCollection(Axios, {}) - expect(globalFields.length).to.be.equal(0) - done() - }) + it("GlobalField Collection test with blank data", (done) => { + const globalFields = new GlobalFieldCollection(Axios, {}); + expect(globalFields.length).to.be.equal(0); + done(); + }); - it('GlobalField Collection test with data', done => { + it("GlobalField Collection test with data", (done) => { const globalFields = new GlobalFieldCollection(Axios, { - global_fields: [ - globalFieldMock - ] - }) - expect(globalFields.length).to.be.equal(1) - checkGlobalField(globalFields[0]) - done() - }) + global_fields: [globalFieldMock], + }); + expect(globalFields.length).to.be.equal(1); + checkGlobalField(globalFields[0]); + done(); + }); - it('GlobalField create test', done => { - var mock = new MockAdapter(Axios) - mock.onPost('/global_fields').reply(200, { + it("GlobalField create test", (done) => { + var mock = new MockAdapter(Axios); + mock.onPost("/global_fields").reply(200, { global_field: { - ...globalFieldMock - } - }) + ...globalFieldMock, + }, + }); makeGlobalField() .create() .then((globalField) => { - checkGlobalField(globalField) - done() + checkGlobalField(globalField.global_field); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField Query test', done => { - var mock = new MockAdapter(Axios) - mock.onGet('/global_fields').reply(200, { - global_fields: [ - globalFieldMock - ] - }) + it("GlobalField Query test", (done) => { + var mock = new MockAdapter(Axios); + mock.onGet("/global_fields").reply(200, { + global_fields: [globalFieldMock], + }); makeGlobalField() .query() .find() .then((globalField) => { - checkGlobalField(globalField.items[0]) - done() + checkGlobalField(globalField.items[0]); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField update test', done => { - var mock = new MockAdapter(Axios) - mock.onPut('/global_fields/UID').reply(200, { + it("GlobalField update test", (done) => { + var mock = new MockAdapter(Axios); + mock.onPut("/global_fields/UID").reply(200, { global_field: { - ...globalFieldMock - } - }) + ...globalFieldMock, + }, + }); makeGlobalField({ global_field: { - ...systemUidMock + ...systemUidMock, }, - stackHeaders: stackHeadersMock + stackHeaders: stackHeadersMock, }) .update() .then((globalField) => { - checkGlobalField(globalField) - done() + checkGlobalField(globalField.global_field); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField fetch test', done => { - var mock = new MockAdapter(Axios) - mock.onGet('/global_fields/UID').reply(200, { + it("GlobalField fetch test", (done) => { + var mock = new MockAdapter(Axios); + mock.onGet("/global_fields/UID").reply(200, { global_field: { - ...globalFieldMock - } - }) + ...globalFieldMock, + }, + }); makeGlobalField({ global_field: { - ...systemUidMock + ...systemUidMock, }, - stackHeaders: stackHeadersMock + stackHeaders: stackHeadersMock, }) .fetch() .then((globalField) => { - checkGlobalField(globalField) - done() + checkGlobalField(globalField.global_field); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField delete test', done => { - var mock = new MockAdapter(Axios) - mock.onDelete('/global_fields/UID').reply(200, { - ...noticeMock - }) + it("GlobalField delete test", (done) => { + var mock = new MockAdapter(Axios); + mock.onDelete("/global_fields/UID").reply(200, { + ...noticeMock, + }); makeGlobalField({ global_field: { - ...systemUidMock + ...systemUidMock, }, - stackHeaders: stackHeadersMock + stackHeaders: stackHeadersMock, }) .delete() .then((response) => { - expect(response.notice).to.be.equal(noticeMock.notice) - done() + expect(response.notice).to.be.equal(noticeMock.notice); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('Global Field import test', done => { - var mock = new MockAdapter(Axios) - mock.onPost('/global_fields/import').reply(200, { + it("Global Field import test", (done) => { + var mock = new MockAdapter(Axios); + mock.onPost("/global_fields/import").reply(200, { global_field: { - ...globalFieldMock - } - }) - const gfUpload = { global_field: path.join(__dirname, '../api/mock/globalfield.json') } - const form = createFormData(gfUpload)() - var boundary = form.getBoundary() + ...globalFieldMock, + }, + }); + const gfUpload = { + global_field: path.join(__dirname, "../api/mock/globalfield.json"), + }; + const form = createFormData(gfUpload)(); + var boundary = form.getBoundary(); - expect(boundary).to.be.equal(form.getBoundary()) - expect(boundary.length).to.be.equal(50) + expect(boundary).to.be.equal(form.getBoundary()); + expect(boundary.length).to.be.equal(50); makeGlobalField() .import() .then((webhook) => { - checkGlobalField(webhook) - done() + checkGlobalField(webhook); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('Global Field import test with overwrite flag', done => { - var mock = new MockAdapter(Axios) - mock.onPost('/global_fields/import').reply(200, { + it("Global Field import test with overwrite flag", (done) => { + var mock = new MockAdapter(Axios); + mock.onPost("/global_fields/import").reply(200, { global_field: { - ...globalFieldMock - } - }) - const gfUpload = { global_field: path.join(__dirname, '../api/mock/globalfield.json') } - const form = createFormData(gfUpload)() - var boundary = form.getBoundary() + ...globalFieldMock, + }, + }); + const gfUpload = { + global_field: path.join(__dirname, "../api/mock/globalfield.json"), + }; + const form = createFormData(gfUpload)(); + var boundary = form.getBoundary(); - expect(boundary).to.be.equal(form.getBoundary()) - expect(boundary.length).to.be.equal(50) + expect(boundary).to.be.equal(form.getBoundary()); + expect(boundary.length).to.be.equal(50); makeGlobalField() .import(gfUpload, { overwrite: true }) .then((webhook) => { - checkGlobalField(webhook) - done() + checkGlobalField(webhook); + done(); }) - .catch(done) - }) -}) + .catch(done); + }); +}); -describe('Contentstack GlobalField test (API Version 3.2)', () => { - it('GlobalField test without uid', done => { - const globalField = makeGlobalField({ api_version: '3.2' }) - expect(globalField.urlPath).to.be.equal('/global_fields') - expect(globalField.apiVersion).to.be.equal('3.2') - expect(globalField.stackHeaders).to.be.equal(undefined) - expect(globalField.update).to.be.equal(undefined) - expect(globalField.delete).to.be.equal(undefined) - expect(globalField.fetch).to.be.equal(undefined) - expect(globalField.create).to.not.equal(undefined) - expect(globalField.query).to.not.equal(undefined) - done() - }) +describe("Contentstack GlobalField test (API Version 3.2)", () => { + it("GlobalField test without uid", (done) => { + const globalField = makeGlobalField({ + stackHeaders: stackHeadersMock, + api_version: "3.2"}); + expect(globalField.urlPath).to.be.equal("/global_fields"); + expect(globalField.apiVersion).to.be.equal("3.2"); + expect(globalField.stackHeaders).to.deep.equal({api_key: 'api_key', api_version: '3.2'}); + done(); + }); - it('GlobalField test with uid', done => { + it("GlobalField test with uid", (done) => { const globalField = makeGlobalField({ global_field: { - ...systemUidMock + ...systemUidMock, }, - api_version: '3.2' - }) - expect(globalField.urlPath).to.be.equal(`/global_fields/${systemUidMock.uid}`) - expect(globalField.apiVersion).to.be.equal('3.2') - expect(globalField.update).to.not.equal(undefined) - expect(globalField.delete).to.not.equal(undefined) - expect(globalField.fetch).to.not.equal(undefined) - expect(globalField.create).to.be.equal(undefined) - expect(globalField.query).to.be.equal(undefined) - done() - }) + stackHeaders: stackHeadersMock, + api_version: "3.2", + }); + expect(globalField.urlPath).to.be.equal( + `/global_fields/${systemUidMock.uid}` + ); + expect(globalField.apiVersion).to.be.equal("3.2"); + expect(globalField.update).to.not.equal(undefined); + expect(globalField.delete).to.not.equal(undefined); + expect(globalField.fetch).to.not.equal(undefined); + expect(globalField.create).to.be.equal(undefined); + expect(globalField.query).to.be.equal(undefined); + done(); + }); - it('GlobalField test with Stack Headers', done => { + it("GlobalField test with Stack Headers", (done) => { const globalField = makeGlobalField({ global_field: { - ...systemUidMock + ...systemUidMock, }, stackHeaders: stackHeadersMock, - api_version: '3.2' - }) - expect(globalField.urlPath).to.be.equal(`/global_fields/${systemUidMock.uid}`) - expect(globalField.apiVersion).to.be.equal('3.2') - expect(globalField.stackHeaders).to.not.equal(undefined) - expect(globalField.stackHeaders.api_key).to.be.equal(stackHeadersMock.api_key) - expect(globalField.update).to.not.equal(undefined) - expect(globalField.delete).to.not.equal(undefined) - expect(globalField.fetch).to.not.equal(undefined) - expect(globalField.create).to.be.equal(undefined) - expect(globalField.query).to.be.equal(undefined) - done() - }) + api_version: "3.2", + }); + expect(globalField.urlPath).to.be.equal( + `/global_fields/${systemUidMock.uid}` + ); + expect(globalField.apiVersion).to.be.equal("3.2"); + expect(globalField.stackHeaders).to.not.equal(undefined); + expect(globalField.stackHeaders.api_key).to.be.equal( + stackHeadersMock.api_key + ); + expect(globalField.update).to.not.equal(undefined); + expect(globalField.delete).to.not.equal(undefined); + expect(globalField.fetch).to.not.equal(undefined); + expect(globalField.create).to.be.equal(undefined); + expect(globalField.query).to.be.equal(undefined); + done(); + }); - it('GlobalField Collection test with blank data', done => { - const globalFields = new GlobalFieldCollection(Axios, { api_version: '3.2' }) - expect(globalFields.length).to.be.equal(0) - done() - }) + it("GlobalField Collection test with blank data", (done) => { + const globalFields = new GlobalFieldCollection(Axios, { + api_version: "3.2", + }); + expect(globalFields.length).to.be.equal(0); + done(); + }); - it('GlobalField Collection test with data', done => { + it("GlobalField Collection test with data", (done) => { const globalFields = new GlobalFieldCollection(Axios, { - global_fields: [ - nestedGlobalFieldMock - ], - api_version: '3.2' - }) - expect(globalFields.length).to.be.equal(1) - checkGlobalField(globalFields[0]) - done() - }) + global_fields: [nestedGlobalFieldMock], + api_version: "3.2", + }); + expect(globalFields.length).to.be.equal(1); + checkGlobalField(globalFields[0]); + done(); + }); - it('GlobalField create test', done => { - var mock = new MockAdapter(Axios) - mock.onPost('/global_fields').reply(200, { + it("GlobalField create test", (done) => { + var mock = new MockAdapter(Axios); + mock.onPost("/global_fields").reply(200, { global_field: { - ...nestedGlobalFieldMock - } - }) - makeGlobalField({ api_version: '3.2' }) + ...nestedGlobalFieldMock, + }, + }); + makeGlobalField({ + stackHeaders: stackHeadersMock, + api_version: "3.2"}) .create() .then((globalField) => { - checkGlobalField(globalField) - done() + checkGlobalField(globalField.global_field); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField Query test', done => { - var mock = new MockAdapter(Axios) - mock.onGet('/global_fields').reply(200, { - global_fields: [ - nestedGlobalFieldMock - ] - }) - makeGlobalField({ api_version: '3.2' }) + it("GlobalField Query test", (done) => { + var mock = new MockAdapter(Axios); + mock.onGet("/global_fields").reply(200, { + global_fields: [nestedGlobalFieldMock], + }); + makeGlobalField({ + stackHeaders: stackHeadersMock, + api_version: "3.2"}) .query() .find() .then((globalField) => { - checkGlobalField(globalField.items[0]) - done() + checkGlobalField(globalField.items[0]); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField update test', done => { - var mock = new MockAdapter(Axios) - mock.onPut('/global_fields/UID').reply(200, { + it("GlobalField update test", (done) => { + var mock = new MockAdapter(Axios); + mock.onPut("/global_fields/UID").reply(200, { global_field: { - ...nestedGlobalFieldMock - } - }) + ...nestedGlobalFieldMock, + }, + }); makeGlobalField({ global_field: { - ...systemUidMock + ...systemUidMock, }, stackHeaders: stackHeadersMock, - api_version: '3.2' + api_version: "3.2", }) .update() .then((globalField) => { - checkGlobalField(globalField) - done() + checkGlobalField(globalField.global_field); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField fetch test', done => { - var mock = new MockAdapter(Axios) - mock.onGet('/global_fields/UID').reply(200, { + it("GlobalField fetch test", (done) => { + var mock = new MockAdapter(Axios); + mock.onGet("/global_fields/UID").reply(200, { global_field: { - ...nestedGlobalFieldMock - } - }) + ...nestedGlobalFieldMock, + }, + }); makeGlobalField({ global_field: { - ...systemUidMock + ...systemUidMock, }, stackHeaders: stackHeadersMock, - api_version: '3.2' + api_version: "3.2", }) .fetch() .then((globalField) => { - checkGlobalField(globalField) - done() + checkGlobalField(globalField.global_field); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField delete test', done => { - var mock = new MockAdapter(Axios) - mock.onDelete('/global_fields/UID').reply(200, { - ...noticeMock - }) + it("GlobalField delete test", (done) => { + var mock = new MockAdapter(Axios); + mock.onDelete("/global_fields/UID").reply(200, { + ...noticeMock, + }); makeGlobalField({ global_field: { - ...systemUidMock + ...systemUidMock, }, stackHeaders: stackHeadersMock, - api_version: '3.2' + api_version: "3.2", }) .delete() .then((response) => { - expect(response.notice).to.be.equal(noticeMock.notice) - done() + expect(response.notice).to.be.equal(noticeMock.notice); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField import test', done => { - var mock = new MockAdapter(Axios) - mock.onPost('/global_fields/import').reply(200, { + it("GlobalField import test", (done) => { + var mock = new MockAdapter(Axios); + mock.onPost("/global_fields/import").reply(200, { global_field: { - ...globalFieldMock - } - }) - const gfUpload = { global_field: path.join(__dirname, '../api/mock/globalfield.json') } - const form = createFormData(gfUpload)() - var boundary = form.getBoundary() + ...globalFieldMock, + }, + }); + const gfUpload = { + global_field: path.join(__dirname, "../api/mock/globalfield.json"), + }; + const form = createFormData(gfUpload)(); + var boundary = form.getBoundary(); - expect(boundary).to.be.equal(form.getBoundary()) - expect(boundary.length).to.be.equal(50) - makeGlobalField({ api_version: '3.2' }) + expect(boundary).to.be.equal(form.getBoundary()); + expect(boundary.length).to.be.equal(50); + makeGlobalField({ + stackHeaders: stackHeadersMock, + api_version: "3.2"}) .import() .then((webhook) => { - checkGlobalField(webhook) - done() + checkGlobalField(webhook); + done(); }) - .catch(done) - }) + .catch(done); + }); - it('GlobalField import test with overwrite flag', done => { - var mock = new MockAdapter(Axios) - mock.onPost('/global_fields/import').reply(200, { + it("GlobalField import test with overwrite flag", (done) => { + var mock = new MockAdapter(Axios); + mock.onPost("/global_fields/import").reply(200, { global_field: { - ...nestedGlobalFieldMock - } - }) - const gfUpload = { global_field: path.join(__dirname, '../api/mock/globalfield.json') } - const form = createFormData(gfUpload)() - var boundary = form.getBoundary() + ...nestedGlobalFieldMock, + }, + }); + const gfUpload = { + global_field: path.join(__dirname, "../api/mock/globalfield.json"), + }; + const form = createFormData(gfUpload)(); + var boundary = form.getBoundary(); - expect(boundary).to.be.equal(form.getBoundary()) - expect(boundary.length).to.be.equal(50) - makeGlobalField({ api_version: '3.2' }) + expect(boundary).to.be.equal(form.getBoundary()); + expect(boundary.length).to.be.equal(50); + makeGlobalField({ + stackHeaders: stackHeadersMock, + api_version: "3.2"}) .import(gfUpload, { overwrite: true }) .then((webhook) => { - checkGlobalField(webhook) - done() + checkGlobalField(webhook); + done(); }) - .catch(done) - }) -}) + .catch(done); + }); +}); function makeGlobalField (data) { return new GlobalField(Axios, data) } -function checkGlobalField (globalField) { - checkSystemFields(globalField) - expect(globalField.title).to.be.equal('title') - expect(globalField.schema.length).to.be.equal(2) +function checkGlobalField(globalField) { + checkSystemFields(globalField); + expect(globalField.title).to.be.equal("title"); + expect(globalField.schema.length).to.be.equal(2); } diff --git a/types/stack/globalField/index.d.ts b/types/stack/globalField/index.d.ts index 70a4ab8b..c3c0bb36 100644 --- a/types/stack/globalField/index.d.ts +++ b/types/stack/globalField/index.d.ts @@ -8,6 +8,7 @@ export interface GlobalField extends SystemFields, SystemFunction { export interface GlobalFields extends Queryable { import(data: {global_field: string}, params?: any): Promise + (globalFieldUidOrOptions: string | { api_version?: string }, options?: { api_version?: string }): GlobalField; } export interface GlobalFieldData extends AnyProperty { diff --git a/types/stack/index.d.ts b/types/stack/index.d.ts index f1ed0d43..dee357d1 100644 --- a/types/stack/index.d.ts +++ b/types/stack/index.d.ts @@ -62,7 +62,9 @@ export interface Stack extends SystemFields { contentType(uid: string): ContentType globalField(): GlobalFields + globalField({}): GlobalFields globalField(uid: string): GlobalField + globalField(uid: string, option: object): GlobalField asset(): Assets asset(uid: string): Asset