Skip to content
This repository was archived by the owner on Jan 10, 2024. It is now read-only.

Commit eb51ef3

Browse files
author
Pat Patterson
committed
Added tests for RemoteTKController.cls
1 parent 99242ec commit eb51ef3

File tree

3 files changed

+318
-14
lines changed

3 files changed

+318
-14
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.DS_Store

RemoteTKController.cls

+40-14
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,24 @@
2525
*/
2626

2727
public class RemoteTKController {
28+
private static String makeError(String message, String errorCode) {
29+
JSONGenerator gen = JSON.createGenerator(false);
30+
gen.writeStartArray();
31+
gen.writeStartObject();
32+
gen.writeStringField('message', message);
33+
gen.writeStringField('errorCode', errorCode);
34+
gen.writeEndObject();
35+
gen.writeEndArray();
36+
37+
return gen.getAsString();
38+
}
39+
2840
@remoteAction
2941
public static String describe(String objtype) {
3042
// Just enough to make the sample app work!
3143
Schema.SObjectType targetType = Schema.getGlobalDescribe().get(objtype);
3244
if (targetType == null) {
33-
return '[{"message":"The requested resource does not exist","errorCode":"NOT_FOUND"}]';
45+
return makeError('The requested resource does not exist', 'NOT_FOUND');
3446
}
3547

3648
Schema.DescribeSObjectResult sobjResult = targetType.getDescribe();
@@ -65,9 +77,8 @@ public class RemoteTKController {
6577
@remoteAction
6678
public static String create(String objtype, String fields) {
6779
Schema.SObjectType targetType = Schema.getGlobalDescribe().get(objtype);
68-
Map<String, Schema.sObjectField> targetFields = targetType.getDescribe().fields.getMap();
6980
if (targetType == null) {
70-
return '[{"message":"The requested resource does not exist","errorCode":"NOT_FOUND"}]';
81+
return makeError('The requested resource does not exist', 'NOT_FOUND');
7182
}
7283

7384
SObject obj = targetType.newSObject();
@@ -76,11 +87,17 @@ public class RemoteTKController {
7687
try {
7788
fieldMap = (Map<String, Object>)JSON.deserializeUntyped(fields);
7889
} catch (JSONException je) {
79-
return '[{"message":"'+je.getMessage()+'","errorCode":"JSON_PARSER_ERROR"}]';
90+
return makeError(je.getMessage(), 'JSON_PARSER_ERROR');
8091
}
8192

93+
Map<String, Schema.sObjectField> targetFields = targetType.getDescribe().fields.getMap();
94+
8295
try {
8396
for (String key : fieldMap.keySet()) {
97+
if (targetFields.get(key) == null) {
98+
return '[{"message":"Field '+key+' does not exist on object type '+objtype+'","errorCode":"INVALID_FIELD"}]';
99+
}
100+
84101
if (targetFields.get(key).getDescribe().getType() == Schema.DisplayType.Date) {
85102
obj.put(key, Date.valueOf((String)fieldMap.get(key)));
86103
} else if (targetFields.get(key).getDescribe().getType() == Schema.DisplayType.Percent ||
@@ -95,7 +112,7 @@ public class RemoteTKController {
95112
}
96113
}
97114
} catch (SObjectException soe) {
98-
return '[{"message":"'+soe.getMessage()+'","errorCode":"INVALID_FIELD"}]';
115+
return makeError(soe.getMessage(), 'INVALID_FIELD');
99116
}
100117

101118
try {
@@ -139,7 +156,7 @@ public class RemoteTKController {
139156
try {
140157
records = Database.query(soql);
141158
} catch (QueryException qe) {
142-
return '[{"message":"'+qe.getMessage()+'","errorCode":"INVALID_QUERY"}]';
159+
return makeError(qe.getMessage(), 'INVALID_QUERY');
143160
}
144161

145162
return JSON.serialize(records[0]);
@@ -148,14 +165,21 @@ public class RemoteTKController {
148165
@remoteAction
149166
public static String upser(String objtype, String externalIdField, String externalId, String fields) {
150167
Schema.SObjectType targetType = Schema.getGlobalDescribe().get(objtype);
168+
if (targetType == null) {
169+
return makeError('The requested resource does not exist', 'NOT_FOUND');
170+
}
151171

152172
SObject obj = targetType.newSObject();
153173
obj.put(externalIdField, externalId);
154174

155175
Map<String, Object> fieldMap =
156176
(Map<String, Object>)JSON.deserializeUntyped(fields);
157-
for (String key : fieldMap.keySet()) {
158-
obj.put(key, fieldMap.get(key));
177+
try {
178+
for (String key : fieldMap.keySet()) {
179+
obj.put(key, fieldMap.get(key));
180+
}
181+
} catch (SObjectException soe) {
182+
return makeError(soe.getMessage(), 'INVALID_FIELD');
159183
}
160184

161185
Schema.SObjectField sobjField = targetType.getDescribe().fields.getMap().get(externalIdField);
@@ -169,7 +193,7 @@ public class RemoteTKController {
169193
public static String updat(String objtype, String id, String fields) {
170194
Schema.SObjectType targetType = Schema.getGlobalDescribe().get(objtype);
171195
if (targetType == null) {
172-
return '[{"message":"The requested resource does not exist","errorCode":"NOT_FOUND"}]';
196+
return makeError('The requested resource does not exist', 'NOT_FOUND');
173197
}
174198

175199
SObject obj = targetType.newSObject(id);
@@ -178,15 +202,15 @@ public class RemoteTKController {
178202
try {
179203
fieldMap = (Map<String, Object>)JSON.deserializeUntyped(fields);
180204
} catch (JSONException je) {
181-
return '[{"message":"'+je.getMessage()+'","errorCode":"JSON_PARSER_ERROR"}]';
205+
return makeError(je.getMessage(), 'JSON_PARSER_ERROR');
182206
}
183207

184208
try {
185209
for (String key : fieldMap.keySet()) {
186210
obj.put(key, fieldMap.get(key));
187211
}
188212
} catch (SObjectException soe) {
189-
return '[{"message":"'+soe.getMessage()+'","errorCode":"INVALID_FIELD"}]';
213+
return makeError(soe.getMessage(), 'INVALID_FIELD');
190214
}
191215

192216
try {
@@ -209,7 +233,7 @@ public class RemoteTKController {
209233
public static String del(String objtype, String id) {
210234
Schema.SObjectType targetType = Schema.getGlobalDescribe().get(objtype);
211235
if (targetType == null) {
212-
return '[{"message":"The requested resource does not exist","errorCode":"NOT_FOUND"}]';
236+
return makeError('The requested resource does not exist', 'NOT_FOUND');
213237
}
214238

215239
SObject obj = targetType.newSObject(id);
@@ -236,7 +260,7 @@ public class RemoteTKController {
236260
try {
237261
records = Database.query(soql);
238262
} catch (QueryException qe) {
239-
return '[{"message":"'+qe.getMessage()+'","errorCode":"INVALID_QUERY"}]';
263+
return makeError(qe.getMessage(), 'INVALID_QUERY');
240264
}
241265

242266
Map<String, Object> result = new Map<String, Object>();
@@ -252,8 +276,10 @@ public class RemoteTKController {
252276
List<List<SObject>> result;
253277
try {
254278
result = Search.query(sosl);
279+
} catch (QueryException qe) {
280+
return makeError(qe.getMessage(), 'INVALID_SEARCH');
255281
} catch (SearchException se) {
256-
return '[{"message":"'+se.getMessage()+'","errorCode":"INVALID_SEARCH"}]';
282+
return makeError(se.getMessage(), 'INVALID_SEARCH');
257283
}
258284

259285
return JSON.serialize(result);

0 commit comments

Comments
 (0)