Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Entry delete and resend #14

Merged
merged 4 commits into from
Aug 22, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
350 changes: 164 additions & 186 deletions .idea/workspace.xml

Large diffs are not rendered by default.

45 changes: 45 additions & 0 deletions __tests__/EntriesClient.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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', () => {
Expand All @@ -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);
});
});
});
3 changes: 3 additions & 0 deletions docs/file/src/EntriesClient.js.html
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@
}, this.getEntryEndpoint(formId, entryId));
}

d


/**
* The endpoint URI for a collection of entries for one form.

Expand Down
4 changes: 2 additions & 2 deletions docs/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -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<any>}\n\t */\n\tgetEntries(formId: string, page: number = 1): Promise<any> {\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<any>}\n\t */\n\tgetEntry(formId: string, entryId: number): Promise<any> {\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<any>}\n\t */\n\tgetEntries(formId: string, page: number = 1): Promise<any> {\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<any>}\n\t */\n\tgetEntry(formId: string, entryId: number): Promise<any> {\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",
Expand Down Expand Up @@ -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 <Josh@calderawp.com>\",\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 <Josh@calderawp.com>\",\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,
Expand Down
6 changes: 3 additions & 3 deletions docs/source.html
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,9 @@
<td data-ice="filePath"><span><a href="file/src/EntriesClient.js.html">src/EntriesClient.js</a></span></td>
<td data-ice="identifier" class="identifiers"><span><a href="class/src/EntriesClient.js~EntriesClient.html">EntriesClient</a></span></td>
<td class="coverage"><span data-ice="coverage">100 %</span><span data-ice="coverageCount" class="coverage-count">5/5</span></td>
<td style="display: none;" data-ice="size">1432 byte</td>
<td style="display: none;" data-ice="lines">57</td>
<td style="display: none;" data-ice="updated">2018-07-02 12:51:36 (UTC)</td>
<td style="display: none;" data-ice="size">1437 byte</td>
<td style="display: none;" data-ice="lines">60</td>
<td style="display: none;" data-ice="updated">2018-08-04 21:31:04 (UTC)</td>
</tr>
<tr data-ice="file">
<td data-ice="filePath"><span><a href="file/src/GeneralSettingClient.js.html">src/GeneralSettingClient.js</a></span></td>
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
44 changes: 44 additions & 0 deletions src/EntriesClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -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<any>}
*/
deleteEntry( formId: string, entryId: number ): Promise<any> {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar blocks of code found in 2 locations. Consider refactoring.

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<any>}
*/
deleteEntries( formId: string ): Promise<any> {
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<any>}
*/
resendEntry( formId: string, entryId: number ): Promise<any> {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar blocks of code found in 2 locations. Consider refactoring.

return this.reqPost(this.getEntryEndpoint( formId, entryId ) );
}


/**
* The endpoint URI for a collection of entries for one form.

Expand All @@ -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`;
}


}