UNPKG

quill-delta-to-html

Version:
82 lines (70 loc) 3.76 kB
import 'mocha'; import * as assert from "assert"; import { Grouper } from './../../src/grouper/Grouper'; import { ListNester } from './../../src/grouper/ListNester'; import { DeltaInsertOp } from './../../src/DeltaInsertOp'; import { ListGroup, ListItem, InlineGroup, BlockGroup } from './../../src/grouper/group-types'; import {ListType} from './../../src/value-types'; describe('ListNester', function () { describe('nest()', function () { it('should not nest different types of lists', function () { var ops = [ new DeltaInsertOp("ordered list 1 item 1"), new DeltaInsertOp("\n", { list: ListType.Ordered }), new DeltaInsertOp("bullet list 1 item 1"), new DeltaInsertOp("\n", { list: ListType.Bullet }), new DeltaInsertOp("bullet list 1 item 2"), new DeltaInsertOp("\n", { list: ListType.Bullet }), new DeltaInsertOp("haha"), new DeltaInsertOp("\n"), new DeltaInsertOp("\n", { list: ListType.Bullet }), ]; var groups = Grouper.pairOpsWithTheirBlock(ops); var nester = new ListNester(); var act = nester.nest(groups); //console.log(JSON.stringify(act, null, 3)); assert.deepEqual(act, [ new ListGroup([new ListItem(<BlockGroup>groups[0]) ]), new ListGroup([new ListItem(<BlockGroup>groups[1]), new ListItem(<BlockGroup>groups[2])]), new InlineGroup([ops[6], ops[7]]), new ListGroup([new ListItem(new BlockGroup(ops[8], []))]) ]); }); it('should nest if lists are same and later ones have higher indent', function () { var ops = [ new DeltaInsertOp("item 1"), new DeltaInsertOp("\n", { list: ListType.Ordered }), new DeltaInsertOp("item 1a"), new DeltaInsertOp("\n", { list: ListType.Ordered, indent: 1 }), new DeltaInsertOp("item 1a-i"), new DeltaInsertOp("\n", { list: ListType.Ordered, indent: 3 }), new DeltaInsertOp("item 1b"), new DeltaInsertOp("\n", { list: ListType.Ordered, indent: 1 }), new DeltaInsertOp("item 2", ), new DeltaInsertOp("\n", { list: ListType.Ordered }), new DeltaInsertOp("haha"), new DeltaInsertOp("\n"), new DeltaInsertOp("\n", { list: ListType.Ordered, indent:5 }), new DeltaInsertOp("\n", { list: ListType.Bullet, indent:4 }), ] var pairs = Grouper.pairOpsWithTheirBlock(ops); var nester = new ListNester(); var act = nester.nest(pairs); //console.log(JSON.stringify( act, null, 4)); var l1b = new ListItem(<BlockGroup>pairs[3]) var lai = new ListGroup([new ListItem(<BlockGroup>pairs[2])]); var l1a = new ListGroup([new ListItem(<BlockGroup>pairs[1], lai)]); var li1 = new ListGroup([new ListItem(<BlockGroup>pairs[0]) ]); li1.items[0].innerList =new ListGroup(l1a.items.concat(l1b)); var li2 = new ListGroup([ new ListItem(<BlockGroup>pairs[4])]) //console.log(JSON.stringify(act, null, 3)); assert.deepEqual(act, [ new ListGroup(li1.items.concat(li2.items)), new InlineGroup([ops[10], ops[11]]), new ListGroup([ new ListItem(new BlockGroup(ops[12], []))]), new ListGroup([ new ListItem(new BlockGroup(ops[13], []))]) ]); }); }); });