Skip to content

Commit 71d9c84

Browse files
committed
feat: Allow for custom Parse.Error messages
1 parent 6060792 commit 71d9c84

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

src/CoreManager.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ const config: Config & { [key: string]: mixed } = {
194194
ENCRYPTED_USER: false,
195195
IDEMPOTENCY: false,
196196
ALLOW_CUSTOM_OBJECT_ID: false,
197+
PARSE_ERRORS: [],
197198
};
198199

199200
function requireMethods(name: string, methods: Array<string>, controller: any) {

src/ParseError.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import CoreManager from './CoreManager';
2+
13
/**
24
* Constructs a new Parse.Error object with the given code and message.
35
*
6+
* Parse.CoreManager.set('PARSE_ERRORS', [{ code, message }]) can be use to override error messages for error codes except CONNECTION_FAILED (100).
7+
*
48
* @alias Parse.Error
59
*/
610
class ParseError extends Error {
@@ -11,9 +15,15 @@ class ParseError extends Error {
1115
constructor(code, message) {
1216
super(message);
1317
this.code = code;
18+
let customMessage = message;
19+
CoreManager.get('PARSE_ERRORS').forEach((error) => {
20+
if (error.code === code && error.code !== ParseError.CONNECTION_FAILED) {
21+
customMessage = error.message;
22+
}
23+
});
1424
Object.defineProperty(this, 'message', {
1525
enumerable: true,
16-
value: message,
26+
value: customMessage,
1727
});
1828
}
1929

src/__tests__/ParseError-test.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
jest.dontMock('../ParseError');
2+
jest.dontMock('../CoreManager');
23

34
const ParseError = require('../ParseError').default;
5+
const CoreManager = require('../CoreManager');
46

57
describe('ParseError', () => {
68
it('have sensible string representation', () => {
@@ -18,4 +20,24 @@ describe('ParseError', () => {
1820
code: 123,
1921
});
2022
});
23+
24+
it('can override message', () => {
25+
CoreManager.set('PARSE_ERRORS', [{ code: 123, message: 'Oops.' }]);
26+
const error = new ParseError(123, 'some error message');
27+
expect(JSON.parse(JSON.stringify(error))).toEqual({
28+
message: 'Oops.',
29+
code: 123,
30+
});
31+
CoreManager.set('PARSE_ERRORS', []);
32+
});
33+
34+
it('cannot override connection failed message', () => {
35+
CoreManager.set('PARSE_ERRORS', [{ code: 100, message: 'Cannot connect to server' }]);
36+
const error = new ParseError(100, 'some error message');
37+
expect(JSON.parse(JSON.stringify(error))).toEqual({
38+
message: 'some error message',
39+
code: 100,
40+
});
41+
CoreManager.set('PARSE_ERRORS', []);
42+
});
2143
});

0 commit comments

Comments
 (0)