LCOV - code coverage report
Current view: top level - dashql-app/src/session/dataflow - dataflow_test_session.ts Coverage Total Hit
Test: DashQL 915828b Lines: 100.0 % 42 42
Test Date: 2026-11-06 19:30:32

            Line data    Source code
       1              : import * as core from '@ankoh/dashql-core';
       2              : 
       3              : import { CONNECTOR_INFOS, ConnectorType } from '../../connections/connector_info.js';
       4              : import { createEmptyScriptData, replaceScriptSessionText, type SessionScripts } from '../scripts/session_scripts.js';
       5              : import { createEmptyMetadata, createScriptRef } from '../scripts/script_types.js';
       6              : 
       7              : /// A session of analyzed scripts on one connection, the declarations of every script are in the catalog
       8            1 : export function analyzedTestSession(dql: core.DashQL, entries: Array<[string, string]>): SessionScripts {
       9            1 :     const catalog = dql.createCatalog();
      10            1 :     const connection = { connectionId: 'main', connectorInfo: CONNECTOR_INFOS[ConnectorType.HYPER], catalog };
      11            1 :     const scripts: SessionScripts['scripts'] = {};
      12            1 :     const scriptRefs: SessionScripts['scriptRefs'] = {};
      13            1 :     for (const [fileName, text] of entries) {
      14            1 :         const [scriptKey, script] = createEmptyScriptData(dql, connection, fileName);
      15            1 :         replaceScriptSessionText(script.scriptSession, text);
      16            1 :         scripts[scriptKey] = script;
      17            1 :         scriptRefs[fileName] = createScriptRef(scriptKey, fileName);
      18            1 :     }
      19            1 :     for (const script of Object.values(scripts)) {
      20            1 :         script.scriptSession.analyze();
      21            1 :         script.scriptSession.loadIntoCatalog();
      22            1 :     }
      23            1 :     for (const script of Object.values(scripts)) {
      24            1 :         script.editorUpdate = script.scriptSession.analyze();
      25              :     }
      26            1 :     return {
      27            1 :         instance: dql,
      28            1 :         sessionId: crypto.randomUUID(),
      29            1 :         name: 'Dataflow',
      30            1 :         pendingConnection: null,
      31            1 :         sessionMetadata: createEmptyMetadata(),
      32            1 :         scripts,
      33            1 :         scriptRefs,
      34            1 :         scriptOrder: entries.map(([fileName]) => fileName),
      35            1 :         scriptFocus: { fileName: entries[0]?.[0] ?? '' },
      36            1 :         semanticUserFocus: null,
      37            1 :     };
      38            1 : }
      39              : 
      40              : /// A session with one more script, analyzed with the catalog of the other scripts
      41            1 : export function withTestScript(session: SessionScripts, fileName: string, text: string): SessionScripts {
      42            1 :     const connection = Object.values(session.scripts)[0].connection;
      43            1 :     const [scriptKey, script] = createEmptyScriptData(session.instance, connection, fileName);
      44            1 :     replaceScriptSessionText(script.scriptSession, text);
      45            1 :     script.editorUpdate = script.scriptSession.analyze();
      46            1 :     return {
      47            1 :         ...session,
      48            1 :         scripts: { ...session.scripts, [scriptKey]: script },
      49            1 :         scriptRefs: { ...session.scriptRefs, [fileName]: createScriptRef(scriptKey, fileName) },
      50            1 :         scriptOrder: [...session.scriptOrder, fileName],
      51            1 :     };
      52            1 : }
        

Generated by: LCOV version 2.0-1