Skip to content

Commit

Permalink
migrate tests to ava
Browse files Browse the repository at this point in the history
  • Loading branch information
pladaria committed Jun 28, 2016
1 parent 87939fc commit 0d2828e
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 75 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "Super small library to retrieve values and attributes from the XML AST generated by xml-reader",
"main": "build/index.js",
"scripts": {
"test": "node test/test.js",
"test": "ava test/test.js",
"pretest": "tsc",
"prepublish": "npm test"
},
Expand All @@ -23,7 +23,7 @@
"author": "Pedro Ladaria <[email protected]>",
"license": "MIT",
"devDependencies": {
"tape": "^4.5.1",
"ava": "^0.15.2",
"xml-reader": "0.0.6"
},
"directories": {
Expand Down
126 changes: 53 additions & 73 deletions test/test.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const test = require('tape');
const test = require('ava');
const xmlReader = require('xml-reader');
const xQuery = require('..');

Expand Down Expand Up @@ -27,150 +27,130 @@ const xmlMessages =
${xmlMessage2}
</collection>`;

test('constructor from ast', t => {
test.cb('constructor from ast', t => {
const reader = xmlReader.create();
reader.on('done', ast => {
const xq = xQuery(ast);
t.equal(xq.length, 1, 'length is 1');
t.equal(xq.get(0), ast, 'item 0 is the same ast');
t.is(xq.length, 1, 'length is 1');
t.is(xq.get(0), ast, 'item 0 is the same ast');
t.end();
});
reader.parse(xmlMessage1);
});

test('constructor from ast array', t => {
test.cb('constructor from ast array', t => {
const reader = xmlReader.create();
reader.on('done', ast => {
const xq = xQuery([ast, ast]);
t.equal(xq.length, 2, 'length is 2');
t.equal(xq.get(0), ast, 'item 0 is ok');
t.equal(xq.get(1), ast, 'item 1 is ok');
t.is(xq.length, 2, 'length is 2');
t.is(xq.get(0), ast, 'item 0 is ok');
t.is(xq.get(1), ast, 'item 1 is ok');
t.end();
});
reader.parse(xmlMessage1);
});

test('constructor from falsy values', t => {
test.cb('constructor from falsy values', t => {
const values = [null, false, undefined, 0, [], ''];
values.forEach(value => {
const xq = xQuery(value);
t.equal(xq.length, 0, 'length is 0');
t.equal(xq.get(0), undefined, 'item 0 is undefined');
t.is(xq.length, 0, 'length is 0');
t.is(xq.get(0), undefined, 'item 0 is undefined');
});
t.end();
});

test('find root element', t => {
test.cb('find root element', t => {
const reader = xmlReader.create();
reader.on('done', ast => {
const xq = xQuery(ast);
const result = xq.find('message');
t.equal(result.length, 1, 'one element found');
t.equal(result.get(0).name, 'message', 'element name is message');
t.is(result.length, 1, 'one element found');
t.is(result.get(0).name, 'message', 'element name is message');
t.end();
});
reader.parse(xmlMessage1);
});

test('find root elements from array', t => {
test.cb('find root elements from array', t => {
const reader = xmlReader.create();
reader.on('done', ast => {
const xq = xQuery([ast, ast]);
const result = xq.find('message');
t.equal(result.length, 2, 'two elements found');
t.equal(result.get(0).name, 'message', 'element #0 name is message');
t.equal(result.get(1).name, 'message', 'element #1 name is message');
t.is(result.length, 2, 'two elements found');
t.is(result.get(0).name, 'message', 'element #0 name is message');
t.is(result.get(1).name, 'message', 'element #1 name is message');
t.end();
});
reader.parse(xmlMessage1);
});

test('find deep', t => {
test.cb('find deep', t => {
const reader = xmlReader.create();
reader.on('done', ast => {
const xq = xQuery(ast);
const result = xq.find('to');
t.equal(result.length, 3, 'three elements found');
t.equal(result.get(0).children[0].value, 'Alice');
t.equal(result.get(1).children[0].value, 'Carl');
t.equal(result.get(2).children[0].value, 'Alice');
t.is(result.length, 3, 'three elements found');
t.is(result.get(0).children[0].value, 'Alice');
t.is(result.get(1).children[0].value, 'Carl');
t.is(result.get(2).children[0].value, 'Alice');
t.end();
});
reader.parse(xmlMessages);
});

test('attr', t => {
test.cb('attr', t => {
const reader = xmlReader.create();
reader.on('done', ast => {
let result, attr1, attr2;

t.test('attr from ast - get all', t => {
const result = xQuery(ast).find('message').attr();
t.deepEqual(result, {id: '1001', type: 'letter'}, 'got all attributes');
t.end();
});

t.test('attr from ast - get by name', t => {
const attr1 = xQuery(ast).find('message').attr('id');
const attr2 = xQuery(ast).find('message').attr('type');
t.equal(attr1, '1001', 'attr value is correct');
t.equal(attr2, 'letter', 'attr value is correct');
t.end();
});

t.test('attr from ast - get by name miss', t => {
const result = xQuery(ast).find('message').attr('miss');
t.equal(result, undefined, 'returns undefined');
t.end();
});

t.test('attr from ast array - get all', t => {
const result = xQuery([ast, ast]).find('message').attr();
t.deepEqual(result, {id: '1001', type: 'letter'}, 'got all attributes');
t.end();
});

t.test('attr from ast array - get by name', t => {
const attr1 = xQuery(ast).find('message').attr('id');
const attr2 = xQuery(ast).find('message').attr('type');
t.equal(attr1, '1001', 'attr value is correct');
t.equal(attr2, 'letter', 'attr value is correct');
t.end();
});

t.test('attr from empty array - get all', t => {
const result = xQuery([]).attr();
t.deepEqual(result, undefined, 'returns undefined');
t.end();
});

t.test('attr from empty array - get by name', t => {
const result = xQuery([]).attr('miss');
t.deepEqual(result, undefined, 'returns undefined');
t.end();
});
result = xQuery(ast).find('message').attr();
t.deepEqual(result, {id: '1001', type: 'letter'}, 'attr from ast - get all');

attr1 = xQuery(ast).find('message').attr('id');
attr2 = xQuery(ast).find('message').attr('type');
t.is(attr1, '1001', 'attr from ast - get by name');
t.is(attr2, 'letter', 'attr from ast - get by name');

result = xQuery(ast).find('message').attr('miss');
t.is(result, undefined, 'attr from ast - get by name miss');

result = xQuery([ast, ast]).find('message').attr();
t.deepEqual(result, {id: '1001', type: 'letter'}, 'attr from ast array - get all');

attr1 = xQuery(ast).find('message').attr('id');
attr2 = xQuery(ast).find('message').attr('type');
t.is(attr1, '1001', 'attr from ast array - get by name');
t.is(attr2, 'letter', 'attr from ast array - get by name');

result = xQuery([]).attr();
t.deepEqual(result, undefined, 'attr from empty array - get all');

result = xQuery([]).attr('miss');
t.deepEqual(result, undefined, 'attr from empty array - get by name');

t.end();
});
reader.parse(xmlMessage1);
});

test('children', t => {
test.cb('children', t => {
const reader = xmlReader.create();
reader.on('done', ast => {
const xq = xQuery(ast).children();
t.equal(xq.length, 4, 'length is 4');
t.is(xq.length, 4, 'length is 4');
t.deepEqual(xq.map(node => node.name), ['to', 'from', 'subject', 'body'], 'children names ok');
t.end();
});
reader.parse(xmlMessage1);
});

test('text', t => {
test.cb('text', t => {
const reader = xmlReader.create();
reader.on('done', ast => {
const expected = 'AliceBobHelloThis is a demo!';
const result = xQuery(ast).text();
t.equal(result, expected, 'text is correct');
t.is(result, expected, 'text is correct');
t.end();
});
reader.parse(xmlMessage1);
Expand Down

0 comments on commit 0d2828e

Please sign in to comment.