1
0
Fork 0

[DEV-3192] Renamed variables and added test case

master
Jeffrey Fisher 2018-06-19 09:57:50 -04:00
parent e079a5eb0a
commit 8600c3beb7
2 changed files with 22 additions and 10 deletions

View File

@ -55,31 +55,29 @@ module.exports = Class( 'ProgramInit',
'public init'( program, doc_data ) 'public init'( program, doc_data )
{ {
const defaults = program.defaults || {}; const defaults = program.defaults || {};
const data = doc_data || {};
let data = doc_data || {}; const groups = program.meta.groups;
let groups = program.meta.groups;
Object.keys( program.groupExclusiveFields ).forEach( group => Object.keys( program.groupExclusiveFields ).forEach( group =>
{ {
let length = program.groupExclusiveFields[ group ].length; let i = program.groupExclusiveFields[ group ].length;
while ( length-- ) while ( i-- )
{ {
let field = program.groupExclusiveFields[ group ][ length ]; const field = program.groupExclusiveFields[ group ][ i ];
let defaultValue; const default_value = defaults[ field ];
if ( !defaults.hasOwnProperty( field )) if ( !defaults.hasOwnProperty( field ))
{ {
continue; continue;
} }
defaultValue = defaults[ field ];
// Initialize with existing document data if any // Initialize with existing document data if any
// If no document data, initialize with default value // If no document data, initialize with default value
if ( data[ field ] === undefined ) if ( data[ field ] === undefined )
{ {
data[ field ] = [ defaultValue ]; data[ field ] = [ default_value ];
} }
// If min rows on the group is greater than the data // If min rows on the group is greater than the data
@ -93,7 +91,7 @@ module.exports = Class( 'ProgramInit',
while ( index < groups[ group ].min ) while ( index < groups[ group ].min )
{ {
data[ field ][ index ] = defaultValue; data[ field ][ index ] = default_value;
index++; index++;
} }
} }

View File

@ -85,6 +85,20 @@ describe( 'ProgramInit', () =>
bar: [ "baz" ], bar: [ "baz" ],
}, },
}, },
{
label: "keeps existing data with no defaults",
defaults: {},
meta: {
groups: {}
},
groupExclusiveFields: {
SomethingElse: [ "bar" ]
},
doc_data: { bar: [ "baz" ] },
expected: {
bar: [ "baz" ],
},
},
{ {
label: "does not overwrite existing data with defaults", label: "does not overwrite existing data with defaults",
defaults: { foo: "init" }, defaults: { foo: "init" },