@girders-elements/core
Version:
Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.
109 lines (74 loc) • 1.56 kB
JavaScript
'use strict';
var _immutable=require('immutable');
var _=require('..');var zip=_interopRequireWildcard(_);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('Editing 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 createElementZipper=function createElementZipper(){return(
zip.elementZipper({
defaultChildPositions:'children'})(
(0,_immutable.fromJS)(organization)));};
it('can be done using conditions (zip.editCond)',function(){
var elementZipper=createElementZipper();
var result=zip.editCond(
[
[
function(item){return item.get('name')==='andon';},
function(item){return item.set('name','sikavica');}],
['tm',function(item){return item.update('name',function(name){return'member-'+name;});}]],
elementZipper);
expect(result.value()).toEqualI(
(0,_immutable.fromJS)({
kind:'pm',
name:'alex',
children:[
{
kind:'tc',
name:'zdravko',
children:[
{
kind:'tm',
name:'member-emilija'},
{
kind:'tm',
name:'member-filip'}]},
{
kind:'tc',
name:'sikavica',
children:[
{
kind:'tm',
name:'member-blagoja'},
{
kind:'tm',
name:'member-goran'}]},
{
kind:'tc',
name:'ognen'}]}));
});
});