mirror of
https://github.com/orangecoding/fredy.git
synced 2026-06-16 12:31:07 +00:00
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
|
|
/*
|
||
|
|
* 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);
|
||
|
|
});
|
||
|
|
});
|