[#330,model][s]: getFieldValue & getFieldValueUnrendered now return '' if field argument is null / undefined - fixes #330.

This commit is contained in:
Rufus Pollock 2013-02-24 14:34:28 +00:00
parent ebc56dace7
commit dc55d53fdd
2 changed files with 24 additions and 1 deletions

View File

@ -309,9 +309,11 @@ my.Record = Backbone.Model.extend({
//
// For the provided Field get the corresponding rendered computed data value
// for this record.
//
// NB: if field is undefined a default '' value will be returned
getFieldValue: function(field) {
val = this.getFieldValueUnrendered(field);
if (field.renderer) {
if (field && !_.isUndefined(field.renderer)) {
val = field.renderer(val, field, this.toJSON());
}
return val;
@ -321,7 +323,12 @@ my.Record = Backbone.Model.extend({
//
// For the provided Field get the corresponding computed data value
// for this record.
//
// NB: if field is undefined a default '' value will be returned
getFieldValueUnrendered: function(field) {
if (!field) {
return '';
}
var val = this.get(field.id);
if (field.deriver) {
val = field.deriver(val, field, this);

View File

@ -60,6 +60,20 @@ test('Field: type mapping', function () {
});
});
test('Field: getFieldValue', function () {
var doc = new recline.Model.Record({
x: 12.3
});
var field = new recline.Model.Field({id: 'x'});
var out = doc.getFieldValue(field);
var exp = 12.3;
equal(out, exp);
// bad value
var out = doc.getFieldValue();
equal(out, '');
});
test('Field: default renderers', function () {
var doc = new recline.Model.Record({
x: 12.3,
@ -113,8 +127,10 @@ test('Field: custom deriver and renderer', function () {
var field = new recline.Model.Field({id: 'computed', is_derived: true}, {
deriver: deriver
});
var out1 = doc.getFieldValueUnrendered(field);
var out = doc.getFieldValue(field);
var exp = 246;
equal(out1, exp);
equal(out, exp);
var field = new recline.Model.Field({id: 'x'}, {