Example #1
0
 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));
 });
Example #2
0
 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));
 });
Example #3
0
 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));
Example #4
0
 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));
Example #5
0
 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));
 });
Example #6
0
 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));
Example #7
0
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);
};
Example #8
0
 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));
Example #9
0
            .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));
Example #10
0
 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));
Example #11
0
 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));
Example #12
0
 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));
Example #13
0
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);
};
Example #14
0
 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));
Example #15
0
 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));
Example #16
0
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);
};
Example #17
0
 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));
Example #19
0
 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);
Example #20
0
 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));
   });
 });
Example #21
0
 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));
Example #22
0
 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);
 };
Example #23
0
 ], 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));
Example #24
0
            .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));
Example #25
0
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);
};
Example #26
0
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);
};
Example #27
0
            .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));
Example #28
0
 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));
Example #29
0
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);
};
Example #30
0
 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));