File: /var/www/vhost/disk-apps/pwa.sports-crowd.com/node_modules/cssauron/test/index.js
var cssauron = require('../index')
, test = require('tape')
, language
language = cssauron({
id: 'id'
, class: 'class'
, tag: 'tag'
, attr: 'attr[attr]'
, parent: 'parent'
, children: 'children'
, contents: 'contents || ""'
}, function(type, pattern, data) {
if (type == 'tag') {
return pattern.toLowerCase() == data.toLowerCase();
} else {
return pattern == data;
}
})
test('select single', test_select_single)
test('select classlist', test_select_classlist)
test('select multiple', test_select_multiple)
test('select subject', test_select_subject)
function test_select_single(assert) {
var data = {id: 'one-id', class: 'one-class', tag: 'one-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[]}
assert.ok(language('#one-id')(data))
assert.ok(!language('#one-id-false')(data))
assert.ok(language('.one-class')(data))
assert.ok(!language('.one-other-class')(data))
assert.ok(language('one-tag')(data))
assert.ok(!language('two-tag')(data))
assert.ok(language('ONE-TAG')(data))
assert.ok(!language('TWO-TAG')(data))
assert.end()
}
function test_select_classlist(assert) {
var data = [
{ class: 'a-class b-class c-class ' },
{ class: ['a-class', 'b-class', 'c-class'] }
]
data.forEach(function(data) {
assert.ok(language('.a-class')(data))
assert.ok(language('.b-class')(data))
assert.ok(language('.c-class')(data))
assert.ok(!language('.one-other-class')(data))
})
assert.ok(!language('.whatever')({class: null}))
assert.end()
}
function test_select_multiple(assert) {
var data = {id: 'one-id', class: 'one-class', tag: 'one-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[]}
, data2 = {id: 'two-id', class: 'two-class', tag: 'two-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[]}
, data3 = {id: 'three-id', class: 'three-class', tag: 'three-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[]}
, parent = {id: 'parent-id', class: 'parent-class', tag: 'parent-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[data, data2, data3]}
, root = {id: 'root-id', class: 'root-class', tag: 'root-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[parent]}
data.parent = parent
data2.parent = parent
data3.parent = parent
data2.contents = 'hello world'
parent.parent = root
assert.ok(language('#root-id #one-id')(data))
assert.ok(language('#nope,#root-id #one-id')(data))
assert.ok(!language('#nope, #nada')(data))
assert.ok(!language('#root-id > #one-id')(data))
assert.ok(language('#root-id > #parent-id > #one-id')(data))
assert.ok(
language('#parent-id > #one-id,\n#root-id > #parent-id > #one-id')(data)
)
assert.ok(
language(
'#ok,\n #parent-id > #one-id,\n#root-id > #parent-id > #one-id'
)(data)
)
assert.ok(language('.one-class + .two-class')(data2))
assert.ok(!language('.one-class + #one-id')(data))
assert.ok(language('one-tag ~ #three-id')(data3))
assert.ok(language('ONE-TAG ~ #three-id')(data3))
assert.ok(language('one-tag:first-child')(data))
assert.ok(language('one-tag:empty')(data))
assert.ok(!language('#parent-id:empty')(parent))
assert.ok(!language('one-tag:last-child')(data))
assert.ok(language('three-tag:last-child')(data3))
assert.ok(language('one-tag:nth-child(1)')(data))
assert.ok(language('two-tag:nth-child(2)')(data2))
assert.ok(language('three-tag:nth-child(3)')(data3))
assert.ok(!language('three-tag:nth-child(1)')(data))
assert.ok(language('one-tag:nth-child(odd)')(data))
assert.ok(!language('two-tag:nth-child(odd)')(data2))
assert.ok(language('three-tag:nth-child(odd)')(data3))
assert.ok(!language('one-tag:nth-child(even)')(data))
assert.ok(language('two-tag:nth-child(even)')(data2))
assert.ok(!language('three-tag:nth-child(even)')(data3))
assert.ok(language('one-tag:nth-child(2n+1)')(data))
assert.ok(!language('one-tag:nth-child(2n+0)')(data))
assert.ok(language('two-tag:nth-child(2n+0)')(data2))
assert.ok(language('one-tag:nth-child(0n+1)')(data))
assert.ok(language('three-tag:nth-child(0n+3)')(data3))
assert.ok(language('three-tag:nth-child(4n-1)')(data3))
assert.ok(language('two-tag:nth-child( 3n - 1 )')(data2))
assert.ok(language('one-tag:nth-child( +3n - 2 )')(data))
assert.ok(language('three-tag:nth-child( +3 )')(data3))
assert.ok(language('one-tag:nth-child( -n + 2 )')(data))
assert.ok(language('two-tag:nth-child( -n + 2 )')(data2))
assert.ok(!language('three-tag:nth-child( -n + 2 )')(data3))
assert.ok(language('one-tag:nth-child( -n + 1 )')(data))
assert.ok(!language('two-tag:nth-child( -n + 1 )')(data2))
assert.ok(language('[first]')(data))
assert.ok(!language('[dne]')(data))
assert.ok(language('[first=test]')(data))
assert.ok(language('[first="test"]')(data))
assert.ok(language('[second="gary busey"]')(data))
assert.ok(language('[second="gary busey"] [second="gary busey"]')(data))
assert.ok(language('[third|=m]')(data))
assert.ok(language('[third|=richard]')(data))
assert.ok(language('[third|=nixon]')(data))
assert.ok(!language('[third|=tricky-dick]')(data))
assert.ok(language('[third$=nixon]')(data))
assert.ok(!language('[third$=dixon]')(data))
assert.ok(!language('[third^=dick]')(data))
assert.ok(language('[third^=richard]')(data))
assert.ok(language('[third*=-m-]')(data))
assert.ok(!language('[third*=radical]')(data))
assert.ok(!language('[second~=dne]')(data))
assert.ok(language('[second~=gary]')(data))
assert.ok(language('[second~=busey]')(data))
assert.ok(!language(':contains(hello)')(data))
assert.ok(!language(':contains(world)')(data))
assert.ok(language(':contains(hello)')(data2))
assert.ok(language(':contains(world)')(data2))
assert.ok(
language(':root > :any(thing-tag, parent-tag, #asdf) > #one-id')(data)
)
assert.end()
}
function test_select_subject(assert) {
var data = {id: 'one-id', class: 'one-class', tag: 'one-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[]}
, data2 = {id: 'two-id', class: 'two-class', tag: 'two-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[]}
, data3 = {id: 'three-id', class: 'three-class', tag: 'three-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[]}
, parent = {id: 'parent-id', class: 'parent-class', tag: 'parent-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[data, data2, data3]}
, root = {id: 'root-id', class: 'root-class', tag: 'root-tag', attr:{first: 'test', second:'gary busey', third:'richard-m-nixon'}, parent:null, children:[parent]}
, res
data.parent = parent
data2.parent = parent
data3.parent = parent
data2.contents = 'hello world'
parent.parent = root
assert.equal(
language(':root > :any(thing-tag, parent-tag, #asdf) > #one-id')(data)
, data
)
assert.equal(
language(':root > !parent-tag > #one-id')(data)
, parent
)
res = language(
':root > !:any(thing-tag, parent-tag, #asdf) > !#one-id'
)(data)
assert.equal(
res[0]
, data
)
assert.equal(
res[1]
, parent
)
// one of these has a subject, one doesn't
res = language(
':root > parent-tag > #one-id, !#root-id *'
)(data)
assert.equal(
res[0]
, root
)
assert.equal(
res[1]
, data
)
// no duplicates, no matter how many valid selections.
// both sides select `data`.
res = language(
':root > parent-tag > #one-id, #root-id !*'
)(data)
assert.equal(res, data)
assert.end()
}