fixing job state setting when job is disabled

This commit is contained in:
orangecoding
2026-06-13 13:14:07 +02:00
parent 3249881771
commit 72c2c02e49
4 changed files with 76 additions and 3 deletions

View File

@@ -0,0 +1,64 @@
/*
* Copyright (c) 2026 by Christian Kellner.
* Licensed under Apache-2.0 with Commons Clause and Attribution/Naming Clause
*/
import { vi, describe, it, expect, beforeEach } from 'vitest';
// Mock SqliteConnection so we can assert which SQL the storage layer runs
// without spinning up a real SQLite DB.
const calls = {
execute: [],
query: [],
};
const sqliteMock = {
execute: (sql, params) => {
calls.execute.push({ sql, params });
return { changes: 1 };
},
query: (sql, params) => {
calls.query.push({ sql, params });
if (sqliteMock.__queryHandler) return sqliteMock.__queryHandler(sql, params);
return [];
},
__queryHandler: null,
};
vi.mock('../../lib/services/storage/SqliteConnection.js', () => ({
default: sqliteMock,
}));
describe('jobStorage.getJobs', () => {
let jobStorage;
beforeEach(async () => {
calls.execute.length = 0;
calls.query.length = 0;
sqliteMock.__queryHandler = null;
jobStorage = await import('../../lib/services/storage/jobStorage.js');
});
it('filters out disabled jobs by default (WHERE j.enabled = 1)', () => {
jobStorage.getJobs();
expect(calls.query).toHaveLength(1);
expect(calls.query[0].sql).toMatch(/WHERE j\.enabled = 1/);
});
it('includes disabled jobs when includeDisabled is true', () => {
jobStorage.getJobs({ includeDisabled: true });
expect(calls.query).toHaveLength(1);
expect(calls.query[0].sql).not.toMatch(/WHERE j\.enabled = 1/);
});
it('coerces the enabled column to a boolean', () => {
sqliteMock.__queryHandler = () => [
{ id: 'enabled-job', enabled: 1 },
{ id: 'disabled-job', enabled: 0 },
];
const jobs = jobStorage.getJobs({ includeDisabled: true });
expect(jobs.find((j) => j.id === 'enabled-job').enabled).toBe(true);
expect(jobs.find((j) => j.id === 'disabled-job').enabled).toBe(false);
});
});