audiobookshelf/test/server/models/LibraryItem.placeholder.test.js

50 lines
1.7 KiB
JavaScript

const { expect } = require('chai')
const { Sequelize } = require('sequelize')
const Database = require('../../../server/Database')
describe('LibraryItem placeholder serialization', () => {
beforeEach(async () => {
Database.sequelize = new Sequelize({ dialect: 'sqlite', storage: ':memory:', logging: false })
Database.sequelize.uppercaseFirst = (str) => (str ? `${str[0].toUpperCase()}${str.substr(1)}` : '')
global.ServerSettings = { sortingPrefixes: [] }
await Database.buildModels()
})
afterEach(async () => {
await Database.sequelize.sync({ force: true })
})
it('includes isPlaceholder in default, minified, and expanded JSON', async () => {
const library = await Database.libraryModel.create({ name: 'Test Library', mediaType: 'book' })
const libraryFolder = await Database.libraryFolderModel.create({ path: '/test', libraryId: library.id })
const book = await Database.bookModel.create({
title: 'Placeholder Book',
audioFiles: [],
tags: [],
narrators: [],
genres: [],
chapters: []
})
const libraryItem = await Database.libraryItemModel.create({
libraryFiles: [],
mediaId: book.id,
mediaType: 'book',
libraryId: library.id,
libraryFolderId: libraryFolder.id,
isPlaceholder: true
})
const expanded = await Database.libraryItemModel.getExpandedById(libraryItem.id)
const defaultJson = expanded.toOldJSON()
const minifiedJson = expanded.toOldJSONMinified()
const expandedJson = expanded.toOldJSONExpanded()
expect(defaultJson).to.have.property('isPlaceholder', true)
expect(minifiedJson).to.have.property('isPlaceholder', true)
expect(expandedJson).to.have.property('isPlaceholder', true)
})
})