@girders-elements/core
Version:
Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.
123 lines (84 loc) • 2.08 kB
JavaScript
;
var _immutable=require('immutable');
var _=require('..');var zip=_interopRequireWildcard(_);
var _data=require('../../data');var data=_interopRequireWildcard(_data);function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}
describe('Reducing a Zipper',function(){
var organization={
kind:'pm',
name:'alex',
children:[
{
kind:'tc',
name:'zdravko',
children:[
{
kind:'tm',
name:'emilija'},
{
kind:'tm',
name:'filip'}]},
{
kind:'tc',
name:'andon',
children:[
{
kind:'tm',
name:'blagoja'},
{
kind:'tm',
name:'goran'}]},
{
kind:'tc',
name:'ognen'}]};
var organizationElement=(0,_immutable.fromJS)(organization);
it('can be done in post-order fashion',function(){
var elementZipper=zip.elementZipper({
defaultChildPositions:'children'})(
organizationElement);
var result=zip.reduce(
function(acc,item){return item.get('name')?acc.push(item.get('name')):acc;},
(0,_immutable.List)(),
elementZipper);
expect(result).toEqualI(
_immutable.List.of(
'emilija',
'filip',
'zdravko',
'blagoja',
'goran',
'andon',
'ognen',
'alex'));
});
it('can be done in pre-order fashion',function(){
var elementZipper=zip.elementZipper({
defaultChildPositions:'children'})(
organizationElement);
var result=zip.reducePre(
function(acc,item){return item.get('name')?acc.push(item.get('name')):acc;},
(0,_immutable.List)(),
elementZipper);
expect(result).toEqualI(
_immutable.List.of(
'alex',
'zdravko',
'emilija',
'filip',
'andon',
'blagoja',
'goran',
'ognen'));
});
it('can be done using a predicate',function(){
var elementZipper=zip.elementZipper({
defaultChildPositions:'children'})(
organizationElement);
var result=zip.reduce(
data.when(
function(item){return item.get('kind')==='tm';},
function(acc,item){return acc.push(item.get('name'));}),
(0,_immutable.List)(),
elementZipper);
expect(result).toEqualI(_immutable.List.of('emilija','filip','blagoja','goran'));
});
});