/*______________ | ______ | U I Z E J A V A S C R I P T F R A M E W O R K | / / | --------------------------------------------------- | / O / | MODULE : Uize.Test.Uize.Data.Util Class | / / / | | / / / /| | ONLINE : http://uize.com | /____/ /__/_| | COPYRIGHT : (c)2010-2014 UIZE | /___ | LICENSE : Available under MIT License or GNU General Public License |_______________| http://uize.com/license.html */ /* Module Meta Data type: Test importance: 5 codeCompleteness: 100 docCompleteness: 100 */ /*? Introduction The =Uize.Test.Uize.Data.Util= module defines a suite of unit tests for the =Uize.Data.Util= module. *DEVELOPERS:* `Chris van Rensburg` */ Uize.module ({ name:'Uize.Test.Uize.Data.Util', required:'Uize.Test', builder:function () { 'use strict'; return Uize.Test.resolve ({ title:'Test for Uize.Data.Util Module', test:[ Uize.Test.requiredModulesTest ('Uize.Data.Util'), Uize.Test.staticMethodsTest ([ ['Uize.Data.Util.filter',[ ['Calling with no parameter produces an empty object', [], {} ], ['Calling with the value null specified for source object produces an empty object', [null], {} ], ['Calling with the value undefined specified for source object produces an empty object', [undefined], {} ], ['Calling with no propertyNames parameter produces an empty object', [{foo:1,bar:2,fooBar:3}], {} ], ['Calling with null specified for propertyNames parameter produces an empty object', [{foo:1,bar:2,fooBar:3},null], {} ], ['Calling with undefined specified for propertyNames parameter produces an empty object', [{foo:1,bar:2,fooBar:3},undefined], {} ], ['Calling with empty array specified for propertyNames parameter produces an empty object', [{foo:1,bar:2,fooBar:3},[]], {} ], ['Calling with propertyNames array with no matching properties produces an empty object', [{foo:1,bar:2,fooBar:3},['hello','kitty']], {} ], ['Calling with propertyNames array with superset of properties produces source object', [{foo:1,bar:2,fooBar:3},['foo','bar','fooBar','hello','kitty']], {foo:1,bar:2,fooBar:3} ], ['Calling with propertyNames array with subset of properties produces subset source object', [{foo:1,bar:2,fooBar:3},['foo','bar','hello','kitty']], {foo:1,bar:2} ], ['Calling with empty source object produces empty object', [{},['foo','bar','hello','kitty']], {} ], ['Source object properties with values undefined, null, 0, NaN, or false are not missed', [{foo:undefined,bar:null,fooBar:0,hello:NaN,kitty:false},['foo','bar','fooBar','hello','kitty']], {foo:undefined,bar:null,fooBar:0,hello:NaN,kitty:false} ], ['Duplicate values in propertyNames array are ok', [{foo:1,bar:2,fooBar:3},['foo','foo','bar','bar']], {foo:1,bar:2} ] ]], ['Uize.Data.Util.findRecords',[ ['Calling with no parameter produces an empty array', [], [] ], ['Calling with null for records array produces an empty array', [null,{type:'b'}], [] ], ['Calling with undefined for records array produces an empty array', [null,{type:'b'}], [] ], ['Calling with an empty records array produces an empty array', [[],{type:'b'}], [] ], ['Calling with a non-empty records array with no matching records produces an empty array', [[{foo:1,type:'a'},{bar:2,type:'c'}],{type:'b'}], [] ], ['Calling with a non-empty records array and no match specified produces source array', [[{foo:1},{bar:2}]], [{foo:1},{bar:2}] ], ['Calling with a non-empty records array and null for match produces source array', [[{foo:1},{bar:2}],null], [{foo:1},{bar:2}] ], ['Calling with a non-empty records array and undefined for match produces source array', [[{foo:1},{bar:2}],undefined], [{foo:1},{bar:2}] ], ['Calling with a non-empty records array with matching records produces array with those matching records, in the correct order', [[{foo:1,type:'a'},{hello:3,type:'b'},{bar:2,type:'c'},{kitty:4,type:'b'}],{type:'b'}], [{hello:3,type:'b'},{kitty:4,type:'b'}] ] ]], ['Uize.Data.Util.getColumn',[ ['Get named column from an array of object records', [ [ {first:'John',last:'Wilkey'}, {first:'Marie',last:'Stevenson'}, {first:'Craig',last:'Pollack'} ], 'first' ], ['John','Marie','Craig'] ], ['Get numbered column from an array of array records', [ [ ['John','Wilkey'], ['Marie','Stevenson'], ['Craig','Pollack'] ], 0 ], ['John','Marie','Craig'] ], ['Get column, using option to remove duplicate value', [ [ {firstName:'John',lastName:'Wilkey',department:'engineering'}, {firstName:'Marie',lastName:'Stevenson',department:'finance'}, {firstName:'Craig',lastName:'Pollack',department:'finance'}, {firstName:'Nick',lastName:'Arendsen',department:'engineering'}, {firstName:'Mark',lastName:'Strathley',department:'engineering'} ], 'department', true ], ['engineering','finance'] ] ]] ]) ] }); } });