mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-10-18 11:18:10 +02:00
71 lines
2.4 KiB
JavaScript
71 lines
2.4 KiB
JavaScript
const chai = require('chai')
|
|
const expect = chai.expect
|
|
const sinon = require('sinon')
|
|
const rewire = require('rewire')
|
|
const Path = require('path')
|
|
|
|
const { stubFileUtils, getMockFileInfo, loadTestDatabase } = require('../MockDatabase')
|
|
|
|
const LibraryFile = require('../../../server/objects/files/LibraryFile')
|
|
const FileMetadata = require('../../../server/objects/metadata/FileMetadata')
|
|
const LibraryFolder = require('../../../server/models/LibraryFolder')
|
|
|
|
describe('buildLibraryItemScanData', () => {
|
|
let testLibrary = null
|
|
beforeEach(async () => {
|
|
stubFileUtils()
|
|
testLibrary = await loadTestDatabase()
|
|
})
|
|
|
|
afterEach(() => {
|
|
sinon.restore()
|
|
})
|
|
|
|
it('setsDeviceId', async () => {
|
|
const libraryItemScanner = rewire('../../../server/scanner/LibraryItemScanner')
|
|
|
|
/**
|
|
* @param {{ path?: any; relPath?: any; mediaMetadata?: any; }} libraryItemData
|
|
* @param {import("../../../server/models/LibraryFolder")} folder
|
|
* @param {import("../../../server/models/Library")} library
|
|
* @param {boolean} isSingleMediaItem
|
|
* @param {LibraryFile[]} libraryFiles
|
|
* @return {import('../../../server/scanner/LibraryItemScanData') | null}
|
|
* */
|
|
const buildLibraryItemScanData = libraryItemScanner.__get__('buildLibraryItemScanData')
|
|
|
|
const mockFileInfo = getMockFileInfo().get('/test/file.pdf')
|
|
const lf = new LibraryFile()
|
|
var fileMetadata = new FileMetadata()
|
|
fileMetadata.setData(mockFileInfo)
|
|
fileMetadata.filename = Path.basename(mockFileInfo?.path)
|
|
fileMetadata.path = mockFileInfo?.path
|
|
fileMetadata.relPath = mockFileInfo?.path
|
|
fileMetadata.ext = Path.extname(mockFileInfo?.path)
|
|
lf.ino = mockFileInfo?.ino
|
|
lf.deviceId = mockFileInfo?.dev
|
|
lf.metadata = fileMetadata
|
|
lf.addedAt = Date.now()
|
|
lf.updatedAt = Date.now()
|
|
lf.metadata = fileMetadata
|
|
|
|
const libraryItemData = {
|
|
path: mockFileInfo?.path, // full path
|
|
relPath: mockFileInfo?.path, // only filename
|
|
mediaMetadata: {
|
|
title: Path.basename(mockFileInfo?.path, Path.extname(mockFileInfo?.path))
|
|
}
|
|
}
|
|
|
|
const scanData = await buildLibraryItemScanData(libraryItemData, buildLibraryFolder(), testLibrary, true, [lf.toJSON()])
|
|
|
|
expect(scanData).to.not.be.null
|
|
expect(scanData.deviceId).to.equal(mockFileInfo?.dev)
|
|
})
|
|
})
|
|
|
|
/** @return {import("../../../server/models/LibraryFolder")} folder */
|
|
function buildLibraryFolder() {
|
|
return new LibraryFolder()
|
|
}
|