53 lines
2.0 KiB
JavaScript
53 lines
2.0 KiB
JavaScript
const Path = require('path')
|
|
const chai = require('chai')
|
|
const expect = chai.expect
|
|
const scanUtils = require('../../../server/utils/scandir')
|
|
|
|
describe('scanUtils', async () => {
|
|
it('should properly group files into potential book library items', async () => {
|
|
global.isWin = process.platform === 'win32'
|
|
global.ServerSettings = {
|
|
scannerParseSubtitle: true
|
|
}
|
|
|
|
const filePaths = [
|
|
'randomfile.txt', // Should be ignored because it's not a book media file
|
|
'Book1.m4b', // Root single file audiobook
|
|
'Book2/audiofile.m4b',
|
|
'Book2/disk 001/audiofile.m4b',
|
|
'Book2/disk 002/audiofile.m4b',
|
|
'Author/Book3/audiofile.mp3',
|
|
'Author/Book3/Disc 1/audiofile.mp3',
|
|
'Author/Book3/Disc 2/audiofile.mp3',
|
|
'Author/Series/Book4/cover.jpg',
|
|
'Author/Series/Book4/CD1/audiofile.mp3',
|
|
'Author/Series/Book4/CD2/audiofile.mp3',
|
|
'Author/Series2/Book5/deeply/nested/cd 01/audiofile.mp3',
|
|
'Author/Series2/Book5/deeply/nested/cd 02/audiofile.mp3',
|
|
'Author/Series2/Book5/randomfile.js' // Should be ignored because it's not a book media file
|
|
]
|
|
|
|
// Create fileItems to match the format of fileUtils.recurseFiles
|
|
const fileItems = []
|
|
for (const filePath of filePaths) {
|
|
const dirname = Path.dirname(filePath)
|
|
fileItems.push({
|
|
name: Path.basename(filePath),
|
|
reldirpath: dirname === '.' ? '' : dirname,
|
|
extension: Path.extname(filePath),
|
|
deep: filePath.split('/').length - 1
|
|
})
|
|
}
|
|
|
|
const libraryItemGrouping = scanUtils.groupFileItemsIntoLibraryItemDirs('book', fileItems, false)
|
|
|
|
expect(libraryItemGrouping).to.deep.equal({
|
|
'Book1.m4b': 'Book1.m4b',
|
|
Book2: ['audiofile.m4b', 'disk 001/audiofile.m4b', 'disk 002/audiofile.m4b'],
|
|
'Author/Book3': ['audiofile.mp3', 'Disc 1/audiofile.mp3', 'Disc 2/audiofile.mp3'],
|
|
'Author/Series/Book4': ['CD1/audiofile.mp3', 'CD2/audiofile.mp3', 'cover.jpg'],
|
|
'Author/Series2/Book5/deeply/nested': ['cd 01/audiofile.mp3', 'cd 02/audiofile.mp3']
|
|
})
|
|
})
|
|
})
|