123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393 |
- "use strict";
- var _ava = _interopRequireDefault(require("ava"));
- var _ = _interopRequireDefault(require(".."));
- var _helpers = require("./util/helpers");
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
- (0, _ava["default"])('container#append', function (t) {
- var out = (0, _helpers.parse)('h1', function (selectors) {
- var selector = selectors.first;
- var clone = selector.first.clone({
- value: 'h2'
- });
- selectors.append(clone);
- });
- t.deepEqual(out, 'h1,h2');
- });
- (0, _ava["default"])('container#prepend', function (t) {
- var out = (0, _helpers.parse)('h2', function (selectors) {
- var selector = selectors.first;
- var clone = selector.first.clone({
- value: 'h1'
- });
- selectors.prepend(clone);
- });
- t.deepEqual(out, 'h1,h2');
- });
- (0, _ava["default"])('container#each', function (t) {
- var str = '';
- (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
- selectors.each(function (selector) {
- if (selector.first.type === 'tag') {
- str += selector.first.value;
- }
- });
- });
- t.deepEqual(str, 'h1h2');
- });
- (0, _ava["default"])('container#each (safe iteration)', function (t) {
- var out = (0, _helpers.parse)('.x, .y', function (selectors) {
- selectors.each(function (selector) {
- selector.parent.insertBefore(selector, _["default"].className({
- value: 'b'
- }));
- selector.parent.insertAfter(selector, _["default"].className({
- value: 'a'
- }));
- });
- });
- t.deepEqual(out, '.b,.x,.a,.b, .y,.a');
- });
- (0, _ava["default"])('container#each (early exit)', function (t) {
- var str = '';
- (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
- var eachReturn = selectors.each(function (selector) {
- var tag = selector.first.value;
- str += tag;
- return tag !== 'h2';
- });
- t["false"](eachReturn);
- });
- t.deepEqual(str, 'h1h2');
- });
- (0, _ava["default"])('container#walk', function (t) {
- var str = '';
- (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
- selectors.walk(function (selector) {
- if (selector.type === 'tag') {
- str += selector.value;
- }
- });
- });
- t.deepEqual(str, 'h1h2h3h4');
- });
- (0, _ava["default"])('container#walk (safe iteration)', function (t) {
- var out = (0, _helpers.parse)('[class] + *[href] *:not(*.green)', function (selectors) {
- selectors.walkUniversals(function (selector) {
- var next = selector.next();
- if (next && next.type !== 'combinator') {
- selector.remove();
- }
- });
- });
- t.deepEqual(out, '[class] + [href] :not(.green)');
- });
- (0, _ava["default"])('container#walk (early exit)', function (t) {
- var str = '';
- (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
- var walkReturn = selectors.walk(function (selector) {
- if (selector.type === 'tag') {
- var tag = selector.value;
- str += tag;
- return tag !== 'h3';
- }
- });
- t["false"](walkReturn);
- });
- t.deepEqual(str, 'h1h2h3');
- });
- (0, _ava["default"])('container#walkAttribute', function (t) {
- var out = (0, _helpers.parse)('[href][class].class', function (selectors) {
- selectors.walkAttributes(function (attr) {
- if (attr.attribute === 'class') {
- attr.remove();
- }
- });
- });
- t.deepEqual(out, '[href].class');
- });
- (0, _ava["default"])('container#walkClass', function (t) {
- var out = (0, _helpers.parse)('.one, .two, .three:not(.four, .five)', function (selectors) {
- selectors.walkClasses(function (className) {
- className.value = className.value.slice(0, 1);
- });
- });
- t.deepEqual(out, '.o, .t, .t:not(.f, .f)');
- });
- (0, _ava["default"])('container#walkCombinator', function (t) {
- var out = (0, _helpers.parse)('h1 h2 h3 h4', function (selectors) {
- selectors.walkCombinators(function (comment) {
- comment.remove();
- });
- });
- t.deepEqual(out, 'h1h2h3h4');
- });
- (0, _ava["default"])('container#walkComment', function (t) {
- var out = (0, _helpers.parse)('.one/*test*/.two', function (selectors) {
- selectors.walkComments(function (comment) {
- comment.remove();
- });
- });
- t.deepEqual(out, '.one.two');
- });
- (0, _ava["default"])('container#walkId', function (t) {
- var out = (0, _helpers.parse)('h1#one, h2#two', function (selectors) {
- selectors.walkIds(function (id) {
- id.value = id.value.slice(0, 1);
- });
- });
- t.deepEqual(out, 'h1#o, h2#t');
- });
- (0, _ava["default"])('container#walkNesting', function (t) {
- var out = (0, _helpers.parse)('& h1', function (selectors) {
- selectors.walkNesting(function (node) {
- node.replaceWith(_["default"].tag({
- value: 'body'
- }));
- });
- });
- t.deepEqual(out, 'body h1');
- });
- (0, _ava["default"])('container#walkPseudo', function (t) {
- var out = (0, _helpers.parse)('a:before, a:after', function (selectors) {
- selectors.walkPseudos(function (pseudo) {
- pseudo.value = pseudo.value.slice(0, 2);
- });
- });
- t.deepEqual(out, 'a:b, a:a');
- });
- (0, _ava["default"])('container#walkTag', function (t) {
- var out = (0, _helpers.parse)('1 2 3', function (selectors) {
- selectors.walkTags(function (tag) {
- tag.value = 'h' + tag.value;
- });
- });
- t.deepEqual(out, 'h1 h2 h3');
- });
- (0, _ava["default"])('container#walkUniversal', function (t) {
- var out = (0, _helpers.parse)('*.class,*.class,*.class', function (selectors) {
- selectors.walkUniversals(function (universal) {
- universal.remove();
- });
- });
- t.deepEqual(out, '.class,.class,.class');
- });
- (0, _ava["default"])('container#map', function (t) {
- (0, _helpers.parse)('1 2 3', function (selectors) {
- var arr = selectors.first.map(function (selector) {
- if (/[0-9]/.test(selector.value)) {
- return 'h' + selector.value;
- }
- return selector.value;
- });
- t.deepEqual(arr, ['h1', ' ', 'h2', ' ', 'h3']);
- });
- });
- (0, _ava["default"])('container#every', function (t) {
- (0, _helpers.parse)('.one.two.three', function (selectors) {
- var allClasses = selectors.first.every(function (selector) {
- return selector.type === 'class';
- });
- t.truthy(allClasses);
- });
- });
- (0, _ava["default"])('container#some', function (t) {
- (0, _helpers.parse)('one#two.three', function (selectors) {
- var someClasses = selectors.first.some(function (selector) {
- return selector.type === 'class';
- });
- t.truthy(someClasses);
- });
- });
- (0, _ava["default"])('container#reduce', function (t) {
- (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
- var str = selectors.reduce(function (memo, selector) {
- if (selector.first.type === 'tag') {
- memo += selector.first.value;
- }
- return memo;
- }, '');
- t.deepEqual(str, 'h1h2h3h4');
- });
- });
- (0, _ava["default"])('container#filter', function (t) {
- (0, _helpers.parse)('h1, h2, c1, c2', function (selectors) {
- var ast = selectors.filter(function (selector) {
- return ~selector.first.value.indexOf('h');
- });
- t.deepEqual(String(ast), 'h1, h2');
- });
- });
- (0, _ava["default"])('container#split', function (t) {
- (0, _helpers.parse)('h1 h2 >> h3', function (selectors) {
- var list = selectors.first.split(function (selector) {
- return selector.value === '>>';
- }).map(function (group) {
- return group.map(String);
- });
- t.deepEqual(list, [['h1', ' ', 'h2', ' >> '], ['h3']]);
- t.deepEqual(list.length, 2);
- });
- });
- (0, _ava["default"])('container#sort', function (t) {
- var out = (0, _helpers.parse)('h2,h3,h1,h4', function (selectors) {
- selectors.sort(function (a, b) {
- return a.first.value.slice(-1) - b.first.value.slice(-1);
- });
- });
- t.deepEqual(out, 'h1,h2,h3,h4');
- });
- (0, _ava["default"])('container#at', function (t) {
- (0, _helpers.parse)('h1, h2, h3', function (selectors) {
- t.deepEqual(selectors.at(1).first.value, 'h2');
- });
- });
- (0, _ava["default"])('container#first, container#last', function (t) {
- (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
- t.deepEqual(selectors.first.first.value, 'h1');
- t.deepEqual(selectors.last.last.value, 'h4');
- });
- });
- (0, _ava["default"])('container#index', function (t) {
- (0, _helpers.parse)('h1 h2 h3', function (selectors) {
- var middle = selectors.first.at(1);
- t.deepEqual(selectors.first.index(middle), 1);
- });
- });
- (0, _ava["default"])('container#length', function (t) {
- (0, _helpers.parse)('h1, h2, h3', function (selectors) {
- t.deepEqual(selectors.length, 3);
- });
- });
- (0, _ava["default"])('container#removeChild', function (t) {
- var out = (0, _helpers.parse)('h1.class h2.class h3.class', function (selectors) {
- selectors.walk(function (selector) {
- if (selector.type === 'class') {
- selector.parent.removeChild(selector);
- }
- });
- });
- t.deepEqual(out, 'h1 h2 h3');
- });
- (0, _ava["default"])('container#removeAll, container#empty', function (t) {
- var wipe = function wipe(method) {
- return function (selectors) {
- return selectors[method]();
- };
- };
- var out1 = (0, _helpers.parse)('h1 h2, h2 h3, h3 h4', wipe('empty'));
- var out2 = (0, _helpers.parse)('h1 h2, h2 h3, h3 h4', wipe('removeAll'));
- t.deepEqual(out1, '');
- t.deepEqual(out2, '');
- });
- (0, _ava["default"])('container#insertBefore', function (t) {
- var out = (0, _helpers.parse)('h2', function (selectors) {
- var selector = selectors.first;
- var clone = selector.first.clone({
- value: 'h1'
- });
- selectors.insertBefore(selector, clone);
- });
- t.deepEqual(out, 'h1,h2');
- });
- (0, _ava["default"])('container#insertBefore and node#remove', function (t) {
- var out = (0, _helpers.parse)('h2', function (selectors) {
- var selector = selectors.first;
- var newSel = _["default"].tag({
- value: 'h1'
- });
- selectors.insertBefore(selector, newSel);
- newSel.remove();
- });
- t.deepEqual(out, 'h2');
- });
- (0, _ava["default"])('container#insertAfter', function (t) {
- var out = (0, _helpers.parse)('h1', function (selectors) {
- var selector = selectors.first;
- var clone = selector.first.clone({
- value: 'h2'
- });
- selectors.insertAfter(selector, clone);
- });
- t.deepEqual(out, 'h1,h2');
- });
- (0, _ava["default"])('container#insertAfter and node#remove', function (t) {
- var out = (0, _helpers.parse)('h2', function (selectors) {
- var selector = selectors.first;
- var newSel = _["default"].tag({
- value: 'h1'
- });
- selectors.insertAfter(selector, newSel);
- newSel.remove();
- });
- t.deepEqual(out, 'h2');
- });
- (0, _ava["default"])('container#insertAfter (during iteration)', function (t) {
- var out = (0, _helpers.parse)('h1, h2, h3', function (selectors) {
- selectors.walkTags(function (selector) {
- var attribute = _["default"].attribute({
- attribute: 'class'
- });
- selector.parent.insertAfter(selector, attribute);
- });
- });
- t.deepEqual(out, 'h1[class], h2[class], h3[class]');
- });
- (0, _ava["default"])('Container#atPosition first pseudo', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(1, 1);
- t.deepEqual(node.type, "pseudo");
- t.deepEqual(node.toString(), ":not(.foo)");
- });
- });
- (0, _ava["default"])('Container#atPosition class in pseudo', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(1, 6);
- t.deepEqual(node.type, "class");
- t.deepEqual(node.toString(), ".foo");
- });
- });
- (0, _ava["default"])('Container#atPosition id in second selector', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(2, 1);
- t.deepEqual(node.type, "id");
- t.deepEqual(node.toString(), "\n#foo");
- });
- });
- (0, _ava["default"])('Container#atPosition combinator in second selector', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(2, 6);
- t.deepEqual(node.type, "combinator");
- t.deepEqual(node.toString(), " > ");
- var nodeSpace = root.atPosition(2, 5);
- t.deepEqual(nodeSpace.type, "selector");
- t.deepEqual(nodeSpace.toString(), "\n#foo > :matches(ol, ul)");
- });
- });
- (0, _ava["default"])('Container#atPosition tag in second selector pseudo', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(2, 17);
- t.deepEqual(node.type, "tag");
- t.deepEqual(node.toString(), "ol");
- });
- });
- (0, _ava["default"])('Container#atPosition comma in second selector pseudo', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(2, 19);
- t.deepEqual(node.type, "pseudo");
- t.deepEqual(node.toString(), ":matches(ol, ul)");
- });
- });
|