var should = require('chai').should(); var offendersHelpers = require('../../lib/offendersHelpers'); describe('offendersHelpers', function() { describe('domPathToArray', function() { it('should transform a path to an array', function() { var result = offendersHelpers.domPathToArray('body > section#page > div.alternate-color > ul.retroGuide > li[0] > div.retro-chaine.france2'); result.should.deep.equal(['body', 'section#page', 'div.alternate-color', 'ul.retroGuide', 'li[0]', 'div.retro-chaine.france2']); }); it('should work even if a space is missing', function() { var result = offendersHelpers.domPathToArray('body > section#page> div.alternate-color > ul.retroGuide >li[0] > div.retro-chaine.france2'); result.should.deep.equal(['body', 'section#page', 'div.alternate-color', 'ul.retroGuide', 'li[0]', 'div.retro-chaine.france2']); }); }); describe('listOfDomArraysToTree', function() { it('should transform a list of arrays into a tree', function() { var result = offendersHelpers.listOfDomArraysToTree([ ['body', 'section#page', 'div.alternate-color', 'ul.retroGuide', 'li[0]', 'div.retro-chaine.france2'], ['body', 'section#page', 'div.alternate-color', 'ul.retroGuide', 'li[0]', 'div.retro-chaine.france2'], ['body', 'section#page', 'div.alternate-color', 'ul.retroGuide', 'li[1]', 'div.retro-chaine.france2'] ]); result.should.deep.equal({ 'body': { 'section#page': { 'div.alternate-color': { 'ul.retroGuide': { 'li[0]': { 'div.retro-chaine.france2': 2 }, 'li[1]': { 'div.retro-chaine.france2': 1 } } } } } }); }); }); describe('domTreeToHTML', function() { it('should transform a dom tree into HTML with the awaited format', function() { var result = offendersHelpers.domTreeToHTML({ 'body': { 'ul.retroGuide': { 'li[0]': { 'div.retro-chaine.france2': 2 }, 'li[1]': { 'div.retro-chaine.france2': 1 } } } }); result.should.equal('
body
ul.retroGuide
li[0]
div.retro-chaine.france2 (x2)
li[1]
div.retro-chaine.france2
'); }); }); describe('listOfDomPathsToHTML', function() { it('should transform a list of path strings into HTML', function() { var result = offendersHelpers.listOfDomPathsToHTML([ 'body > ul.retroGuide > li[0] > div.retro-chaine.france2', 'body > ul.retroGuide > li[1] > div.retro-chaine.france2', 'body > ul.retroGuide > li[0] > div.retro-chaine.france2', ]); result.should.equal('
body
ul.retroGuide
li[0]
div.retro-chaine.france2 (x2)
li[1]
div.retro-chaine.france2
'); }); }); describe('domPathToButton', function() { it('should transform html', function() { var result = offendersHelpers.domPathToButton('html'); result.should.equal('
html
'); }); it('should transform body', function() { var result = offendersHelpers.domPathToButton('body'); result.should.equal('
body
'); }); it('should transform head', function() { var result = offendersHelpers.domPathToButton('head'); result.should.equal('
head
'); }); it('should transform a standard in-body element', function() { var result = offendersHelpers.domPathToButton('body > div#colorbox > div#cboxContent'); result.should.equal('
DOM element div#cboxContent
body
div#colorbox
div#cboxContent
'); }); it('should transform a domFragment element', function() { var result = offendersHelpers.domPathToButton('DocumentFragment'); result.should.equal('
Fragment
'); }); it('should transform a domFragment element', function() { var result = offendersHelpers.domPathToButton('DocumentFragment > div#colorbox > div#cboxContent'); result.should.equal('
Fragment element div#cboxContent
DocumentFragment
div#colorbox
div#cboxContent
'); }); it('should transform an not-attached element', function() { var result = offendersHelpers.domPathToButton('div#sizcache'); result.should.equal('
Created element div#sizcache
'); }); it('should transform an not-attached element path', function() { var result = offendersHelpers.domPathToButton('div > div#sizcache'); result.should.equal('
Created element div#sizcache
div
div#sizcache
'); }); }); });