mirror of
https://github.com/documentationjs/documentation.git
synced 2025-12-08 18:23:43 +00:00
248 lines
5.9 KiB
JavaScript
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();
|
|
});
|