pediatric-ai-scribe-v3/test/model-defaults.test.js

32 lines
1.5 KiB
JavaScript

const { test } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const root = path.join(__dirname, '..');
function read(relativePath) {
return fs.readFileSync(path.join(root, relativePath), 'utf8');
}
test('top bar model selector is removed and omitted selections use backend default', () => {
const app = read('public/js/app.js');
const selector = app.match(/function getSelectedModel\(\) \{[\s\S]*?\n\}/)[0];
assert.doesNotMatch(selector, /global-model-select|gemini-2\.5-flash/);
assert.match(selector, /return undefined/);
});
test('learning hub model selector uses shared tab model options', () => {
const learningHub = read('public/js/learningHub.js');
const aiPanelController = read('public/js/learningHub/aiPanelController.js');
assert.match(learningHub, /createAiPanelController\(/);
assert.match(aiPanelController, /window\._buildModelOptions\(sel\)/);
assert.doesNotMatch(learningHub, /global-model-select|globalSel\.innerHTML/);
assert.match(learningHub, /if \(model\) formData\.append\('model', model\)/);
});
test('personal notes voice generation sends selected model only when populated', () => {
const recorder = read('public/js/notes/recorder.js');
assert.match(recorder, /var modelEl = document\.getElementById\('notes-model-select'\)/);
assert.match(recorder, /options\.noteFromVoice\(\{ transcript: resp\.text, model: selectedModel \|\| undefined \}\)/);
});