res.layouts.forEach(function(layout) { assert.ok(layout.id === null || _.isString(layout.id)); assert.ok(_.isObject(layout.buttonLayoutSection)); assert.ok(_.isArray(layout.detailLayoutSections)); assert.ok(_.isArray(layout.editLayoutSections)); assert.ok(_.isObject(layout.quickActionList)); assert.ok(_.isArray(layout.quickActionList.quickActionListItems)); assert.ok(_.isArray(layout.relatedLists)); });
it("should return Account comapct layout information immediately", function() { var res = Account.compactLayouts$(); assert.ok(_.isArray(res.compactLayouts)); res.compactLayouts.forEach(function(clayout) { assert.ok(clayout.id === null || _.isString(clayout.id)); assert.ok(_.isString(clayout.objectType)); assert.ok(_.isArray(clayout.actions)); assert.ok(_.isArray(clayout.fieldItems)); }); assert.ok(!res.defaultCompactLayoutId || _.isString(res.defaultCompactLayoutId)); assert.ok(_.isArray(res.recordTypeCompactLayoutMappings)); });
Account.compactLayouts(function(err, res) { if (err) { throw err; } assert.ok(_.isArray(res.compactLayouts)); res.compactLayouts.forEach(function(clayout) { assert.ok(clayout.id === null || _.isString(clayout.id)); assert.ok(_.isString(clayout.objectType)); assert.ok(_.isArray(clayout.actions)); assert.ok(_.isArray(clayout.fieldItems)); }); assert.ok(!res.defaultCompactLayoutId || _.isString(res.defaultCompactLayoutId)); assert.ok(_.isArray(res.recordTypeCompactLayoutMappings)); }.check(done));
Account.listview(listviewId).explain(function(err, result) { if (err) { throw err; } assert.ok(_.isArray(result.plans)); for (var i=0; i<result.plans.length; i++) { var plan = result.plans[i]; assert.ok(_.isNumber(plan.cardinality)); assert.ok(_.isArray(plan.fields)); assert.ok(_.isString(plan.leadingOperationType)); assert.ok(_.isNumber(plan.relativeCost)); assert.ok(_.isNumber(plan.sobjectCardinality)); assert.ok(_.isString(plan.sobjectType)); } }.check(done));
it("should return User named layout information immediately", function() { var res = conn.sobject('User').layouts$('UserAlt'); assert.ok(_.isArray(res.layouts)); res.layouts.forEach(function(layout) { assert.ok(layout.id === null || _.isString(layout.id)); assert.ok(_.isObject(layout.buttonLayoutSection)); assert.ok(_.isArray(layout.detailLayoutSections)); assert.ok(_.isArray(layout.editLayoutSections)); assert.ok(_.isObject(layout.quickActionList)); assert.ok(_.isArray(layout.quickActionList.quickActionListItems)); assert.ok(_.isArray(layout.relatedLists)); }); assert.ok(_.isArray(res.recordTypeMappings)); assert.ok(_.isArray(res.recordTypeSelectorRequired)); });
conn.sobject('User').layouts('UserAlt', function(err, res) { if (err) { throw err; } assert.ok(_.isArray(res.layouts)); res.layouts.forEach(function(layout) { assert.ok(layout.id === null || _.isString(layout.id)); assert.ok(_.isObject(layout.buttonLayoutSection)); assert.ok(_.isArray(layout.detailLayoutSections)); assert.ok(_.isArray(layout.editLayoutSections)); assert.ok(_.isObject(layout.quickActionList)); assert.ok(_.isArray(layout.quickActionList.quickActionListItems)); assert.ok(_.isArray(layout.relatedLists)); }); assert.ok(_.isArray(res.recordTypeMappings)); assert.ok(_.isArray(res.recordTypeSelectorRequired)); }.check(done));
Connection.prototype.destroy = function(type, ids, options, callback) { if (typeof options === 'function') { callback = options; options = {}; } options = options || {}; var self = this; var isArray = _.isArray(ids); ids = isArray ? ids : [ ids ]; if (ids.length > self.maxRequest) { return Promise.reject(new Error("Exceeded max limit of concurrent call")).thenCall(callback); } return Promise.all( _.map(ids, function(id) { var url = [ self._baseUrl(), "sobjects", type, id ].join('/'); return self.request({ method : 'DELETE', url : url, headers: options.headers || null }, { noContentResponse: { id : id, success : true, errors : [] } }); }) ).then(function(results) { return !isArray && _.isArray(results) ? results[0] : results; }).thenCall(callback); };
Account.listview(listviewId).describe(function(err, result) { if (err) { throw err; } assert.ok(_.isObject(result)); assert.ok(_.isString(result.id)); assert.ok(_.isString(result.sobjectType)); assert.ok(_.isString(result.query) || result.query === null); assert.ok(_.isArray(result.columns)); assert.ok(_.isArray(result.orderBy)); for (var i=0, len=result.columns.length; i<len; i++) { var column = result.columns[i]; assert.ok(_.isString(column.label)); assert.ok(_.isString(column.fieldNameOrPath)); assert.ok(_.isString(column.selectListItem)); assert.ok(_.isNumber(column.sortIndex) || column.sortIndex === null); assert.ok(_.isBoolean(column.sortable)); } }.check(done));
.exec(function(err, records) { if (err) { throw err; } assert.ok(_.isArray(records)); assert.ok(records.length > 0); for (var i=0; i<records.length - 1; i++) { assert.ok(records[i].CloseDate >= records[i+1].CloseDate); } }.check(done));
var rinstance = conn.analytics.report(reportId).instances(function(err, instances) { if (err) { throw err; } assert.ok(_.isArray(instances)); instances.forEach(function(instance) { assert.ok(_.isString(instance.id)); assert.ok(_.isString(instance.status)); assert.ok(_.isString(instance.requestDate)); }); }.check(done));
conn.analytics.reports(function(err, reports) { if (err) { throw err; } assert.ok(_.isArray(reports)); reports.forEach(function(report) { assert.ok(_.isString(report.id)); assert.ok(_.isString(report.name)); assert.ok(_.isString(report.url)); }); }.check(done));
Account.approvalLayouts(function(err, res) { if (err) { throw err; } assert.ok(_.isArray(res.approvalLayouts)); res.approvalLayouts.forEach(function(alayout) { assert.ok(alayout.id === null || _.isString(alayout.id)); assert.ok(_.isString(alayout.name)); assert.ok(_.isString(alayout.label)); assert.ok(_.isArray(alayout.layoutItems)); }); }.check(done));
SoapApi.prototype.upsert = function(externalIdFieldName, sObjects, callback) { var schema = _.isArray(sObjects) ? [ Schemas.UpsertResult ] : Schemas.UpsertResult; var args = { '@xmlns' : 'urn:partner.soap.sforce.com', '@xmlns:ns1' : 'sobject.partner.soap.sforce.com', 'ns1:externalIDFieldName' : externalIdFieldName, 'ns1:sObjects' : sObjects }; return this._invoke("upsert", args, schema, callback); };
conn.chatter.resource("/users").retrieve(function(err, result) { if (err) { throw err; } assert.ok(_.isString(result.currentPageUrl)); assert.ok(_.isArray(result.users)); _.forEach(result.users, function(user) { assert.ok(_.isString(user.id)); assert.ok(_.isString(user.url) && user.url[0] === '/'); assert.ok(_.isString(user.username)); }); }.check(done));
chatter.batch(resources, function(err, result) { if (err) { throw err; } assert.ok(result.hasErrors === false); assert.ok(_.isArray(result.results) && result.results.length === feeds.length); _.forEach(result.results, function(result) { var res = result.result; assert.ok(_.isString(res.currentPageUrl)); assert.ok(_.isArray(res.elements)); }); }.check(done));
Metadata.prototype.list = function (queries, version, callback) { if (!_.isString(version)) { callback = version; version = this._conn.version; } if (!_.isArray(queries)) { queries = [queries]; } return this._invoke("listMetadata", { queries: queries, asOfVersion: version }, callback); };
conn.chatter.resource("/groups").retrieve(function(err, result) { if (err) { throw err; } assert.ok(_.isString(result.currentPageUrl)); assert.ok(_.isArray(result.groups)); _.forEach(result.groups, function(group) { assert.ok(_.isString(group.id)); assert.ok(_.isString(group.url)); assert.ok(_.isString(group.name)); }); }.check(done));
conn.sobject('Account').retrieve(accountIds, function(err, records) { if (err) { throw err; } assert.ok(_.isArray(records)); records.forEach(function(record, i) { assert.ok(_.isString(record.Id)); assert.ok(_.isObject(record.attributes)); assert.ok(record.Name === 'Account #' + (i+1)); }); accounts = records; }.check(done));
return this._results.then(function (results) { var convertType = function (res) { if (res.$ && res.$["xsi:nil"] === 'true') { return null; } if(typeof res === 'string'){ return res; } if(typeof res === 'object') { res.done = res.done === 'true'; return res; } return res; }; results = _.isArray(results) ? _.map(results, convertType) : convertType(results); if (self._isArray && !_.isArray(results)) { results = [results]; } return onResolve(results); }, onReject);
it("should return Account approval layout information immediately", function() { var res = Account.approvalLayouts$(); assert.ok(_.isArray(res.approvalLayouts)); res.approvalLayouts.forEach(function(alayout) { assert.ok(alayout.id === null || _.isString(alayout.id)); assert.ok(_.isString(alayout.name)); assert.ok(_.isString(alayout.label)); assert.ok(_.isArray(alayout.layoutItems)); }); });
conn.analytics.report(reportId).execute({ details: true }, function(err, result) { if (err) { throw err; } assert.ok(_.isObject(result)); assert.ok(result.hasDetailRows === true); assert.ok(_.isObject(result.reportMetadata)); assert.ok(result.reportMetadata.id === reportId); assert.ok(_.isObject(result.factMap)); assert.ok(_.isObject(result.factMap["T!T"])); assert.ok(_.isArray(result.factMap["T!T"].rows)); assert.ok(_.isObject(result.factMap["T!T"].aggregates)); }.check(done));
Metadata.prototype.upsert = function (type, metadata, callback) { var convert = function (md) { md["@xsi:type"] = type; return md; }; var isArray = _.isArray(metadata); metadata = isArray ? _.map(metadata, convert) : convert(metadata); return this._invoke("upsertMetadata", { metadata: metadata }).then(function (results) { return _.isArray(results) ? _.map(results, convertToUpsertResult) : convertToUpsertResult(results); }).thenCall(callback); };
], function(err, result) { assert.ok(result.hasErrors === false); assert.ok(_.isArray(result.results) && result.results.length === 3); var elem1 = result.results[0].result; var elem2 = result.results[1].result; var elems = result.results[2].result; urls.push(elem1.url); urls.push(elem2.url); assert.ok(elems.elements[1].id === elem1.id); assert.ok(elems.elements[0].id === elem2.id); }.check(done));
.exec(function(err, records) { if (err) { throw err; } assert.ok(_.isArray(records)); assert.ok(records.length > 0); for (var i=0; i<records.length - 1; i++) { var r1 = records[i], r2 = records[i+1]; assert.ok(r1.Account.Name <= r2.Account.Name); if (r1.Account.Name === r2.Account.Name) { assert.ok(r1.CloseDate >= r2.CloseDate); } } }.check(done));
Dashboard.prototype.components = function(componentIds, callback) { var url = [ this._conn._baseUrl(), "analytics", "dashboards", this.id].join('/'); var data = {}; if (_.isFunction(componentIds)) { callback = componentIds; } else if (_.isArray(componentIds)) { data.componentIds = componentIds; } else if (_.isString(componentIds)) { data.componentIds = [ componentIds ]; } var params = { method : 'POST', url : url, headers : { "Content-Type" : "application/json" }, body : JSON.stringify(data)}; return this._conn.request(params).thenCall(callback); };
Metadata.prototype.createAsync = function (type, metadata, callback) { if (Number(this._conn.version) > 30) { throw new Error("Async metadata CRUD calls are not supported on ver 31.0 or later."); } var convert = function (md) { md["@xsi:type"] = type; return md; }; var isArray = _.isArray(metadata); metadata = isArray ? _.map(metadata, convert) : convert(metadata); var res = this._invoke("create", { metadata: metadata }); return new AsyncResultLocator(this, res, isArray).thenCall(callback); };
.exec(function(err, records) { if (err) { throw err; } assert.ok(_.isArray(records)); assert.ok(records.length > 0); assert.ok(records.length < 11); for (var i=0; i<records.length - 1; i++) { var record = records[i]; assert.ok(_.isString(record.Id)); assert.ok(_.isObject(record.Owner)); assert.ok(_.isString(record.Owner.Name)); assert.ok(_.isString(record.CloseDate)); } }.check(done));
Opportunity.select("*, Account.*, Owner.Name").exec(function(err, records) { if (err) { throw err; } assert.ok(_.isArray(records)); for (var i=0; i<records.length - 1; i++) { var record = records[i]; assert.ok(_.isString(record.Id)); assert.ok(_.isString(record.Name)); assert.ok(_.isString(record.CloseDate)); assert.ok(_.isObject(record.Account)); assert.ok(_.isString(record.Account.Name)); assert.ok(_.isObject(record.Owner)); assert.ok(_.isString(record.Owner.Name)); } }.check(done));
Connection.prototype.update = function(type, records, options, callback) { if (!_.isString(type)) { // reverse order callback = options; options = records; records = type; type = null; } if (typeof options === 'function') { callback = options; options = {}; } options = options || {}; var self = this; var isArray = _.isArray(records); records = isArray ? records : [ records ]; if (records.length > self.maxRequest) { return Promise.reject(new Error("Exceeded max limit of concurrent call")).thenCall(callback); } return Promise.all( _.map(records, function(record) { var id = record.Id; if (!id) { throw new Error('Record id is not found in record.'); } var sobjectType = type || (record.attributes && record.attributes.type) || record.type; if (!sobjectType) { throw new Error('No SObject Type defined in record'); } record = _.clone(record); delete record.Id; delete record.type; delete record.attributes; var url = [ self._baseUrl(), "sobjects", sobjectType, id ].join('/'); return self.request({ method : 'PATCH', url : url, body : JSON.stringify(record), headers : _.defaults(options.headers || {}, { "Content-Type" : "application/json" }) }, { noContentResponse: { id : id, success : true, errors : [] } }); }) ).then(function(results) { return !isArray && _.isArray(results) ? results[0] : results; }).thenCall(callback); };
Account.listviews(function(err, result) { if (err) { throw err; } assert.ok(_.isObject(result)); assert.ok(_.isArray(result.listviews)); for (var i=0, len=result.listviews.length; i<len; i++) { var listview = result.listviews[i]; assert.ok(_.isString(listview.id)); assert.ok(_.isString(listview.label)); assert.ok(_.isString(listview.describeUrl)); assert.ok(_.isString(listview.resultsUrl)); assert.ok(_.isBoolean(listview.soqlCompatible)); if (i===0) { listviewId = listview.id; } } }.check(done));