audiobookshelf/test/server/models/MediaProgress.test.js
2026-05-07 20:36:43 +01:00

46 lines
1.3 KiB
JavaScript

const { expect } = require('chai')
const { Sequelize } = require('sequelize')
const Database = require('../../../server/Database')
describe('MediaProgress', () => {
beforeEach(async () => {
global.ServerSettings = {}
Database.sequelize = new Sequelize({ dialect: 'sqlite', storage: ':memory:', logging: false })
Database.sequelize.uppercaseFirst = (str) => (str ? `${str[0].toUpperCase()}${str.substr(1)}` : '')
await Database.buildModels()
await Database.sequelize.sync({ force: true })
})
afterEach(async () => {
await Database.sequelize.close()
})
it('marks progress finished using coherent wall-clock currentTime and duration values', async () => {
const user = await Database.userModel.create({
username: 'user1',
pash: 'hashed_password_1',
type: 'user',
isActive: true
})
const progress = await Database.mediaProgressModel.create({
userId: user.id,
mediaItemId: '00000000-0000-0000-0000-000000000001',
mediaItemType: 'book',
duration: 10,
currentTime: 0,
isFinished: false,
extraData: {}
})
await progress.applyProgressUpdate({
currentTime: 9.5,
duration: 10,
markAsFinishedTimeRemaining: 1
})
expect(progress.isFinished).to.equal(true)
expect(progress.progress).to.equal(0.95)
})
})