From 98855b7bd7f6019d06489198a04199696105a981 Mon Sep 17 00:00:00 2001 From: Kevin Poorman Date: Thu, 16 May 2013 21:24:45 -0400 Subject: [PATCH] now with moar tests! 14% more to be specific --- src/classes/ngForceController.cls | 45 +++++++++----------------- src/classes/ngForceController_TEST.cls | 9 ++++++ 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/src/classes/ngForceController.cls b/src/classes/ngForceController.cls index 2187d59..1e47e84 100644 --- a/src/classes/ngForceController.cls +++ b/src/classes/ngForceController.cls @@ -54,48 +54,33 @@ global class ngForceController { @remoteAction public static String bulkCreate(String objtype, String fields) { Schema.SObjectType targetType = Schema.getGlobalDescribe().get(objtype); - Map targetFields = targetType.getDescribe().fields.getMap(); if (targetType == null) { - return '[{"message":"The requested resource does not exist","errorCode":"NOT_FOUND"}]'; + return makeError('The requested resource does not exist', 'NOT_FOUND'); } + Map targetFields = targetType.getDescribe().fields.getMap(); + List objs = new List(); Map incomingFieldJsonObject = null; try { incomingFieldJsonObject = (Map)JSON.deserializeUntyped(fields); } catch (JSONException je) { - return '[{"message":"'+je.getMessage()+'","errorCode":"JSON_PARSER_ERROR"}]'; + return makeError('Unable to deserialize the fields object', 'INVALID_JSON'); } - try { - for(String row : incomingFieldJsonObject.keySet()){ - Map current = (Map) incomingFieldJsonObject.get(row); - SObject obj = targetType.newSObject(); - for(String property : current.keySet()) { - if (targetFields.get(property).getDescribe().getType() == Schema.DisplayType.Date) { - obj.put(property, Date.valueOf((String)current.get(property))); - } else if (targetFields.get(property).getDescribe().getType() == Schema.DisplayType.DateTime) { - obj.put(property, DateTime.valueOfGmt((String)current.get(property))); - } else if (targetFields.get(property).getDescribe().getType() == Schema.DisplayType.Percent || - targetFields.get(property).getDescribe().getType() == Schema.DisplayType.Currency) { - obj.put(property, String.valueOf(current.get(property)) == '' ? null : Decimal.valueOf((String)current.get(property))); - } else if (targetFields.get(property).getDescribe().getType() == Schema.DisplayType.Double) { - obj.put(property, String.valueOf(current.get(property)) == '' ? null : Double.valueOf(current.get(property))); - } else if (targetFields.get(property).getDescribe().getType() == Schema.DisplayType.Integer) { - obj.put(property, Integer.valueOf(current.get(property))); - } else if (targetFields.get(property).getDescribe().getType() == Schema.DisplayType.Boolean) { - obj.put(property, Boolean.valueOf((String) current.get(property))); - } else { - obj.put(property, current.get(property)); - } - } - objs.add(obj); + for(String row: incomingFieldJsonObject.keySet()){ + Map current = (Map) incomingFieldJsonObject.get(row); + String currentAsJson = JSON.serialize(current); + SObject obj = targetType.newSObject(); + String error = writeFields(objtype, obj, currentAsJson); + if(error != null){ + return error; } - } catch (SObjectException soe) { - return '[{"message":"'+soe.getMessage()+'","errorCode":"INVALID_FIELD"}]'; + + objs.add(obj); } - + try { insert objs; } catch (DMLException dmle) { @@ -108,7 +93,7 @@ global class ngForceController { } return '[{"fields":['+fieldNames+'],"message":"'+dmle.getDmlMessage(0)+'","errorCode":"'+dmle.getDmlType(0).name()+'"}]'; } - + List rids = new List(); for(sObject o : objs) { rids.add(o.Id); diff --git a/src/classes/ngForceController_TEST.cls b/src/classes/ngForceController_TEST.cls index 37489d9..3814688 100644 --- a/src/classes/ngForceController_TEST.cls +++ b/src/classes/ngForceController_TEST.cls @@ -312,6 +312,15 @@ public class ngForceController_TEST{ System.assertNotEquals(null, result); } + static testMethod void testBulkCreate(){ + Map js = new Map(); + String fields = '{"0":{"Name":"foo company 1368751413359"},"1":{"Name":"foo company 1368751413440"},"2":{"Name":"foo company 1368751413459"},"3":{"Name":"foo company 1368751413479"},"4":{"Name":"foo company 1368751413497"},"5":{"Name":"foo company 1368751413517"},"6":{"Name":"foo company 1368751413540"},"7":{"Name":"foo company 1368751413559"},"8":{"Name":"foo company 1368751413577"},"9":{"Name":"foo company 1368751413597"}}'; + String jsonResult = ngForceController.bulkCreate('Account', fields); + Map result = (Map)JSON.deserializeUntyped(jsonResult); + System.AssertNotEquals(result.get('id'), null); + System.AssertEquals(result.get('success'), true); + } + static testMethod void testCRUD() { String accName = 'Test1'; String accNumber = '1234';