diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 15c1dfd..aea2cdb 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,15 +2,7 @@ - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - + + - - + + - - + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + - - + + - - + + - - + + - - + + - - - - - - - - - + + + + + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - + + + @@ -170,6 +128,13 @@ + + + json + low + delete + + @@ -187,6 +152,9 @@ @@ -213,8 +181,9 @@ - @@ -232,6 +201,11 @@ + + + + + @@ -296,31 +270,38 @@ - + + + + + + + + - - + - + - - - + + + - + @@ -331,11 +312,11 @@ - + @@ -343,14 +324,14 @@ - + - - + + @@ -372,9 +353,6 @@ - - - @@ -384,13 +362,6 @@ - - - - - - - @@ -398,13 +369,6 @@ - - - - - - - @@ -522,30 +486,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -585,9 +525,6 @@ - - - @@ -598,92 +535,133 @@ - + - - - - - + + - + - + - + - - + + - + - - + + - + - - + + - + - - + + - + - + + + + - - + + - + + + + + + + + + + + - + - + - - + + + + + - + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/__tests__/EntriesClient.test.js b/__tests__/EntriesClient.test.js index a9089cf..597a858 100644 --- a/__tests__/EntriesClient.test.js +++ b/__tests__/EntriesClient.test.js @@ -42,6 +42,11 @@ describe( 'Entries client', () => { const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); expect( client.getEntryEndpoint(formId,27)).toEqual('entries/CF5b197831b60ae/27'); }); + + it( 'Resend entry URL', () => { + const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); + expect( client.getEntryResendEndpoint(formId,27)).toEqual('entries/CF5b197831b60ae/27/resend'); + }); }); describe( 'getting entries', () => { @@ -67,4 +72,44 @@ describe( 'Entries client', () => { }); }); + describe( 'Resending entries', () => { + it( 'Resends a single entry', () => { + const r = { + resent: true, + entry_id: '26' + }; + fetch.mockResponseOnce(new Response(JSON.stringify(r))); + const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); + client.resendEntry(formId,26).then( response => { + expect( response ).toEqual({}); + },error => {}); + expect(fetch.mock.calls).toHaveLength(1); + }); + }); + + describe( 'deleting entries', () => { + it( 'Deletes a single entry', () => { + const r = { + message: 'Entry Deleted' + }; + fetch.mockResponseOnce(new Response(JSON.stringify(r))); + const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); + client.deleteEntry(formId,26).then( response => { + expect( response ).toEqual(r); + },error => {}); + expect(fetch.mock.calls).toHaveLength(1); + }); + + it( 'Deletes all entries of form', () => { + const r = { + message: 'All Entry Deleted' + }; + fetch.mockResponseOnce(new Response(JSON.stringify(r))); + const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); + client.deleteEntries(formId).then( response => { + expect( response ).toEqual(r); + },error => {}); + expect(fetch.mock.calls).toHaveLength(1); + }); + }); }); \ No newline at end of file diff --git a/docs/file/src/EntriesClient.js.html b/docs/file/src/EntriesClient.js.html index 575cc74..0178fcb 100644 --- a/docs/file/src/EntriesClient.js.html +++ b/docs/file/src/EntriesClient.js.html @@ -77,6 +77,9 @@ }, this.getEntryEndpoint(formId, entryId)); } + d + + /** * The endpoint URI for a collection of entries for one form. diff --git a/docs/index.json b/docs/index.json index bfd138c..dfc7399 100644 --- a/docs/index.json +++ b/docs/index.json @@ -1199,7 +1199,7 @@ "__docId__": 65, "kind": "file", "name": "src/EntriesClient.js", - "content": "//@flow\nimport {WpClient} from './WpClient';\n\n/**\n * Client for accessing Caldera Forms entry data via Caldera Forms REST API\n */\nexport class EntriesClient extends WpClient {\n\n\t/**\n\t * Get one page of entries for a form\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {number} page Optional. Which page of entries to get. Default is 1.\n\t * @return {Promise}\n\t */\n\tgetEntries(formId: string, page: number = 1): Promise {\n\t\treturn this.reqGet({\n\t\t\tpage,\n\t\t\t_wpnonce: this.nonce\n\t\t}, this.getEntriesEndpoint(formId));\n\t}\n\n\t/**\n\t * Get a single entry of a form\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {String} entryId ID of entry to find.\n\t * @return {Promise}\n\t */\n\tgetEntry(formId: string, entryId: number): Promise {\n\t\treturn this.reqGet({\n\t\t\t_wpnonce: this.nonce\n\t\t}, this.getEntryEndpoint(formId, entryId));\n\t}\n\n\t/**\n\t * The endpoint URI for a collection of entries for one form.\n\n\t * @param {String} formId ID of form to get entries for.\n\t * @return {string}\n\t */\n\tgetEntriesEndpoint(formId: string): string {\n\t\treturn `entries/${formId}`;\n\t}\n\n\t/**\n\t * The endpoint URI for single entries\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {String} entryId ID of entry to find.\n\t * @return {string}\n\t */\n\tgetEntryEndpoint(formId: string, entryId: number): string {\n\t\treturn `${this.getEntriesEndpoint(formId)}/${entryId}`;\n\t}\n\n\n}", + "content": "//@flow\nimport {WpClient} from './WpClient';\n\n/**\n * Client for accessing Caldera Forms entry data via Caldera Forms REST API\n */\nexport class EntriesClient extends WpClient {\n\n\t/**\n\t * Get one page of entries for a form\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {number} page Optional. Which page of entries to get. Default is 1.\n\t * @return {Promise}\n\t */\n\tgetEntries(formId: string, page: number = 1): Promise {\n\t\treturn this.reqGet({\n\t\t\tpage,\n\t\t\t_wpnonce: this.nonce\n\t\t}, this.getEntriesEndpoint(formId));\n\t}\n\n\t/**\n\t * Get a single entry of a form\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {String} entryId ID of entry to find.\n\t * @return {Promise}\n\t */\n\tgetEntry(formId: string, entryId: number): Promise {\n\t\treturn this.reqGet({\n\t\t\t_wpnonce: this.nonce\n\t\t}, this.getEntryEndpoint(formId, entryId));\n\t}\n\n\td\n\n\n\t/**\n\t * The endpoint URI for a collection of entries for one form.\n\n\t * @param {String} formId ID of form to get entries for.\n\t * @return {string}\n\t */\n\tgetEntriesEndpoint(formId: string): string {\n\t\treturn `entries/${formId}`;\n\t}\n\n\t/**\n\t * The endpoint URI for single entries\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {String} entryId ID of entry to find.\n\t * @return {string}\n\t */\n\tgetEntryEndpoint(formId: string, entryId: number): string {\n\t\treturn `${this.getEntriesEndpoint(formId)}/${entryId}`;\n\t}\n\n\n}", "static": true, "longname": "/Users/josh/caldera-js/api-client/src/EntriesClient.js", "access": "public", @@ -1937,7 +1937,7 @@ }, { "kind": "packageJSON", - "content": "{\n \"name\": \"@caldera-labs/api-client\",\n \"version\": \"0.4.1\",\n \"description\": \"API client for Caldera Forms and Caldera Forms Pro\",\n \"main\": \"./dist/index.js\",\n \"scripts\": {\n \"build\": \"npm run build:pre && npm run build:compile && npm run build:post\",\n \"build:pre\": \"npm run test:once\",\n \"build:compile\": \"./node_modules/.bin/babel -d dist src/\",\n \"build:post\": \"npm run compress && npm run document\",\n \"compress\": \" uglifyjs-folder dist -c -m --source-map -o dist/index.min.js\",\n \"test\": \"jest --watch\",\n \"test:once\": \"jest\",\n \"test:coverage\": \"jest --coverage\",\n \"coveralls\": \"cat ./coverage/lcov.info | node node_modules/.bin/coveralls\",\n \"prepublish\": \"npm run build\",\n \"document\": \"./node_modules/.bin/esdoc\",\n \"lint\": \"eslint src/**, __tests__/**\",\n \"lint:watch\": \"esw src/**, __tests__/** --fix --watch\",\n \"lint:fix\": \"eslint src/**, __tests__/** --fix \",\n \"flow:watch\": \"flow-watch\",\n \"flow\": \"flow \",\n \"release\": \"npm run release:patch\",\n \"release:minor\": \"npm version minor -m \\\"version %s\\\" && npm publish\",\n \"release:patch\": \"npm version patch -m \\\"version %s\\\" && npm publish\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/calderawp/caldera-api-client.git\"\n },\n \"keywords\": [\n \"es6\",\n \"boilerplate\",\n \"npm\",\n \"module\",\n \"npm-module\"\n ],\n \"author\": \"Josh Pollock \",\n \"license\": \"GPL-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/calderawp/caldera-api-client/issues\"\n },\n \"homepage\": \"https://calderalabs.org/caldera-api-client/\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"babel-eslint\": \"^8.2.3\",\n \"babel-preset-flow\": \"^6.23.0\",\n \"eslint\": \"^4.19.1\",\n \"eslint-config-airbnb\": \"^16.1.0\",\n \"eslint-plugin-flowtype\": \"^2.49.3\",\n \"eslint-plugin-import\": \"^2.12.0\",\n \"eslint-plugin-jsx-a11y\": \"^6.0.3\",\n \"eslint-plugin-react\": \"^7.9.1\",\n \"eslint-watch\": \"^3.1.5\",\n \"flow-bin\": \"^0.74.0\",\n \"flow-watch\": \"^1.1.3\",\n \"jest-fetch-mock\": \"^1.6.3\",\n \"locutus\": \"^2.0.9\",\n \"uglify-js\": \"^3.4.0\",\n \"uglifyjs-folder\": \"^1.5.1\",\n \"babel-cli\": \"^6.26.0\",\n \"babel-jest\": \"^20.0.3\",\n \"babel-preset-es2015\": \"^6.24.1\",\n \"babel-preset-stage-2\": \"^6.24.1\",\n \"coveralls\": \"^2.13.3\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-flow-plugin\": \"^1.0.0\",\n \"esdoc-jsx-plugin\": \"^1.0.0\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"eslint-plugin-jest\": \"^21.17.0\",\n \"jest-cli\": \"^23.2\",\n \"istanbul\": \"^0.4.5\",\n \"istanbul-api\": \"1.2.2\",\n \"istanbul-reports\": \"1.1.4\"\n },\n \"standard\": {\n \"plugins\": [\n \"flowtype\"\n ],\n \"parser\": \"babel-eslint\"\n },\n \"jest\": {\n \"collectCoverageFrom\": [\n \"src/**/*.js\"\n ],\n \"coverageThreshold\": {\n \"global\": {\n \"statements\": 85,\n \"branches\": 75,\n \"functions\": 85,\n \"lines\": 85\n }\n },\n \"automock\": false,\n \"setupFiles\": [\n \"./setupJest.js\"\n ]\n }\n}\n", + "content": "{\n \"name\": \"@caldera-labs/api-client\",\n \"version\": \"0.5.0\",\n \"description\": \"API client for Caldera Forms and Caldera Forms Pro\",\n \"main\": \"./dist/index.js\",\n \"scripts\": {\n \"build\": \"npm run build:pre && npm run build:compile && npm run build:post\",\n \"build:pre\": \"npm run test:once\",\n \"build:compile\": \"./node_modules/.bin/babel -d dist src/\",\n \"build:post\": \"npm run compress && npm run document\",\n \"compress\": \" uglifyjs-folder dist -c -m --source-map -o dist/index.min.js\",\n \"test\": \"jest --watch\",\n \"test:once\": \"jest\",\n \"test:coverage\": \"jest --coverage\",\n \"coveralls\": \"cat ./coverage/lcov.info | node node_modules/.bin/coveralls\",\n \"prepublish\": \"npm run build\",\n \"document\": \"./node_modules/.bin/esdoc\",\n \"lint\": \"eslint src/**, __tests__/**\",\n \"lint:watch\": \"esw src/**, __tests__/** --fix --watch\",\n \"lint:fix\": \"eslint src/**, __tests__/** --fix \",\n \"flow:watch\": \"flow-watch\",\n \"flow\": \"flow \",\n \"release\": \"npm run release:patch\",\n \"release:minor\": \"npm version minor -m \\\"version %s\\\" && npm publish\",\n \"release:patch\": \"npm version patch -m \\\"version %s\\\" && npm publish\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/calderawp/caldera-api-client.git\"\n },\n \"keywords\": [\n \"es6\",\n \"boilerplate\",\n \"npm\",\n \"module\",\n \"npm-module\"\n ],\n \"author\": \"Josh Pollock \",\n \"license\": \"GPL-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/calderawp/caldera-api-client/issues\"\n },\n \"homepage\": \"https://calderalabs.org/caldera-api-client/\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"babel-eslint\": \"^8.2.3\",\n \"babel-preset-flow\": \"^6.23.0\",\n \"eslint\": \"^4.19.1\",\n \"eslint-config-airbnb\": \"^16.1.0\",\n \"eslint-plugin-flowtype\": \"^2.49.3\",\n \"eslint-plugin-import\": \"^2.12.0\",\n \"eslint-plugin-jsx-a11y\": \"^6.0.3\",\n \"eslint-plugin-react\": \"^7.9.1\",\n \"eslint-watch\": \"^3.1.5\",\n \"flow-bin\": \"^0.74.0\",\n \"flow-watch\": \"^1.1.3\",\n \"jest-fetch-mock\": \"^1.6.3\",\n \"locutus\": \"^2.0.9\",\n \"uglify-js\": \"^3.4.0\",\n \"uglifyjs-folder\": \"^1.5.1\",\n \"babel-cli\": \"^6.26.0\",\n \"babel-jest\": \"^20.0.3\",\n \"babel-preset-es2015\": \"^6.24.1\",\n \"babel-preset-stage-2\": \"^6.24.1\",\n \"coveralls\": \"^2.13.3\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-flow-plugin\": \"^1.0.0\",\n \"esdoc-jsx-plugin\": \"^1.0.0\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"eslint-plugin-jest\": \"^21.17.0\",\n \"jest-cli\": \"^23.2\",\n \"istanbul\": \"^0.4.5\",\n \"istanbul-api\": \"1.2.2\",\n \"istanbul-reports\": \"1.1.4\"\n },\n \"standard\": {\n \"plugins\": [\n \"flowtype\"\n ],\n \"parser\": \"babel-eslint\"\n },\n \"jest\": {\n \"collectCoverageFrom\": [\n \"src/**/*.js\"\n ],\n \"coverageThreshold\": {\n \"global\": {\n \"statements\": 85,\n \"branches\": 75,\n \"functions\": 85,\n \"lines\": 85\n }\n },\n \"automock\": false,\n \"setupFiles\": [\n \"./setupJest.js\"\n ]\n }\n}\n", "longname": "/Users/josh/caldera-js/api-client/package.json", "name": "package.json", "static": true, diff --git a/docs/source.html b/docs/source.html index 628cfb1..1cf16eb 100644 --- a/docs/source.html +++ b/docs/source.html @@ -68,9 +68,9 @@ src/EntriesClient.js EntriesClient 100 %5/5 - 1432 byte - 57 - 2018-07-02 12:51:36 (UTC) + 1437 byte + 60 + 2018-08-04 21:31:04 (UTC) src/GeneralSettingClient.js diff --git a/package.json b/package.json index c75a7b4..a132f0a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@caldera-labs/api-client", - "version": "0.4.1", + "version": "0.5.0", "description": "API client for Caldera Forms and Caldera Forms Pro", "main": "./dist/index.js", "scripts": { diff --git a/src/EntriesClient.js b/src/EntriesClient.js index fac128d..8972e8b 100644 --- a/src/EntriesClient.js +++ b/src/EntriesClient.js @@ -33,6 +33,39 @@ export class EntriesClient extends WpClient { }, this.getEntryEndpoint(formId, entryId)); } + /** + * Delete a single entry of a form + * + * @param {String} formId ID of form to get entries for. + * @param {String} entryId ID of entry to find. + * @return {Promise} + */ + deleteEntry( formId: string, entryId: number ): Promise { + return this.reqDelete(this.getEntryEndpoint( formId, entryId ) ); + } + + /** + * Delete all entries of a form + * + * @param {String} formId ID of form to get entries for. + * @return {Promise} + */ + deleteEntries( formId: string ): Promise { + return this.reqDelete(this.getEntriesEndpoint( formId ) ); + } + + /** + * Resent a single entry of a form + * + * @param {String} formId ID of form to get entries for. + * @param {String} entryId ID of entry to find. + * @return {Promise} + */ + resendEntry( formId: string, entryId: number ): Promise { + return this.reqPost(this.getEntryEndpoint( formId, entryId ) ); + } + + /** * The endpoint URI for a collection of entries for one form. @@ -54,5 +87,16 @@ export class EntriesClient extends WpClient { return `${this.getEntriesEndpoint(formId)}/${entryId}`; } + /** + * The resend endpoint URI for single entries + * + * @param {String} formId ID of form to get entries for. + * @param {String} entryId ID of entry to find. + * @return {string} + */ + getEntryResendEndpoint(formId: string, entryId: number): string { + return `${this.getEntriesEndpoint(formId)}/${entryId}/resend`; + } + } \ No newline at end of file