mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Add test for grouping book library items
This commit is contained in:
		
							parent
							
								
									605bd73c11
								
							
						
					
					
						commit
						0f1b64b883
					
				
							
								
								
									
										52
									
								
								test/server/utils/scandir.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								test/server/utils/scandir.test.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | ||||
| 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'] | ||||
|     }) | ||||
|   }) | ||||
| }) | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user