2018-01-24 14:10:41 +03:00

248 lines
5.9 KiB
JavaScript

const sort = require('../../src/sort');
const path = require('path');
test('sort stream alphanumeric', function() {
const apples = { context: { sortKey: 'a' }, name: 'apples' };
const carrot = { context: { sortKey: 'b' }, name: 'carrot' };
const banana = { context: { sortKey: 'c' }, name: 'bananas' };
expect(sort([apples, carrot, banana])).toEqual([apples, carrot, banana]);
expect(sort([carrot, apples, banana])).toEqual([apples, carrot, banana]);
});
test('sort stream with configuration', function() {
const apples = { context: { sortKey: 'a' }, name: 'apples' };
const carrot = { context: { sortKey: 'b' }, name: 'carrot' };
const bananas = { context: { sortKey: 'c' }, name: 'bananas' };
expect(
sort([apples, carrot, bananas], {
toc: ['carrot', 'bananas']
})
).toEqual([carrot, bananas, apples]);
});
test('sort stream with configuration and a section', function() {
const apples = { context: { sortKey: 'a' }, name: 'apples' };
const carrot = { context: { sortKey: 'b' }, name: 'carrot' };
const bananas = { context: { sortKey: 'c' }, name: 'bananas' };
const section = {
name: 'This is the banana type',
description: 'here lies bananas'
};
const sectionMarkdown = {
name: 'This is the banana type',
description: {
type: 'root',
children: [
{
type: 'paragraph',
children: [
{
type: 'text',
value: 'here lies bananas',
position: {
start: {
line: 1,
column: 1,
offset: 0
},
end: {
line: 1,
column: 18,
offset: 17
},
indent: []
}
}
],
position: {
start: {
line: 1,
column: 1,
offset: 0
},
end: {
line: 1,
column: 18,
offset: 17
},
indent: []
}
}
],
position: {
start: {
line: 1,
column: 1,
offset: 0
},
end: {
line: 1,
column: 18,
offset: 17
}
}
},
kind: 'note',
path: [
{
name: 'This is the banana type',
scope: 'static'
}
]
};
expect(
sort([apples, carrot, bananas], {
toc: ['carrot', section, 'bananas']
})
).toEqual([carrot, sectionMarkdown, bananas, apples]);
});
test('sort an already-sorted stream containing a section/description', function() {
// this happens in the 'serve' task
const apples = { context: { sortKey: 'a' }, name: 'apples' };
const carrot = { context: { sortKey: 'b' }, name: 'carrot' };
const bananas = { context: { sortKey: 'c' }, name: 'bananas' };
const section = {
name: 'This is the banana type',
description: 'here lies bananas'
};
const sectionMarkdown = {
name: 'This is the banana type',
description: {
type: 'root',
children: [
{
type: 'paragraph',
children: [
{
type: 'text',
value: 'here lies bananas',
position: {
start: {
line: 1,
column: 1,
offset: 0
},
end: {
line: 1,
column: 18,
offset: 17
},
indent: []
}
}
],
position: {
start: {
line: 1,
column: 1,
offset: 0
},
end: {
line: 1,
column: 18,
offset: 17
},
indent: []
}
}
],
position: {
start: {
line: 1,
column: 1,
offset: 0
},
end: {
line: 1,
column: 18,
offset: 17
}
}
},
kind: 'note',
path: [
{
name: 'This is the banana type',
scope: 'static'
}
]
};
const config = {
toc: ['carrot', section, 'bananas']
};
const sortOnce = sort([apples, carrot, bananas], config);
const sortTwice = sort(sortOnce, config);
expect(sortTwice).toEqual([carrot, sectionMarkdown, bananas, apples]);
});
test('sort toc with files', function() {
const apples = { context: { sortKey: 'a' }, name: 'apples' };
const carrot = { context: { sortKey: 'b' }, name: 'carrot' };
const bananas = { context: { sortKey: 'c' }, name: 'bananas' };
const snowflake = {
name: 'snowflake',
file: path.join(__dirname, '../fixture/snowflake.md')
};
expect(
sort([apples, carrot, bananas], {
toc: [snowflake]
})
).toMatchSnapshot();
});
test('sort toc with files absolute path', function() {
const apples = { context: { sortKey: 'a' }, name: 'apples' };
const carrot = { context: { sortKey: 'b' }, name: 'carrot' };
const bananas = { context: { sortKey: 'c' }, name: 'bananas' };
const snowflake = {
name: 'snowflake',
file: path.join(__dirname, '../fixture/snowflake.md')
};
expect(
sort([apples, carrot, bananas], {
toc: [snowflake]
})
).toMatchSnapshot();
});
test('sort toc with files absolute path', function() {
const apples = {
context: { sortKey: 'a' },
name: 'apples',
memberof: 'classB'
};
const carrot = {
context: { sortKey: 'b' },
name: 'carrot',
memberof: 'classB'
};
const bananas = {
context: { sortKey: 'c' },
name: 'bananas',
memberof: 'classB'
};
const snowflake = {
name: 'snowflake',
file: path.join(__dirname, '../fixture/snowflake.md')
};
expect(
sort([carrot, apples, bananas], {
sortOrder: 'alpha'
})
).toMatchSnapshot();
});