- tests/test_web_ui.py: smoke tests for all authenticated web pages (login, dashboard, catalog, corporate-memory, activity-center, admin/tables, admin/permissions) - tests/test_jira_service.py: unit tests for extract_init and update_meta in the Jira connector - tests/test_instance_config.py: verifies get_instance_name() returns a string when config file is absent - tests/test_orchestrator.py: concurrent rebuild test asserting rebuild succeeds while a read-only connection holds the analytics DB
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
"""Tests for Jira extract_init — init and update_meta."""
|
|
import duckdb
|
|
import pytest
|
|
from pathlib import Path
|
|
from connectors.jira.extract_init import init_extract, update_meta
|
|
|
|
|
|
@pytest.fixture
|
|
def jira_env(tmp_path, monkeypatch):
|
|
monkeypatch.setenv("DATA_DIR", str(tmp_path))
|
|
jira_dir = tmp_path / "extracts" / "jira"
|
|
jira_dir.mkdir(parents=True)
|
|
return jira_dir
|
|
|
|
|
|
class TestJiraExtractInit:
|
|
def test_init_creates_extract_db(self, jira_env):
|
|
init_extract(jira_env)
|
|
assert (jira_env / "extract.duckdb").exists()
|
|
conn = duckdb.connect(str(jira_env / "extract.duckdb"))
|
|
meta = conn.execute("SELECT * FROM _meta").fetchall()
|
|
conn.close()
|
|
assert isinstance(meta, list)
|
|
|
|
def test_update_meta_creates_view(self, jira_env):
|
|
init_extract(jira_env)
|
|
issues_dir = jira_env / "data" / "issues"
|
|
issues_dir.mkdir(parents=True, exist_ok=True)
|
|
pq_path = str(issues_dir / "2026-04.parquet")
|
|
tmp = duckdb.connect()
|
|
tmp.execute(f"COPY (SELECT 'PROJ-1' AS issue_key, 'Bug' AS type) TO '{pq_path}' (FORMAT PARQUET)")
|
|
tmp.close()
|
|
|
|
update_meta(jira_env, "issues")
|
|
|
|
conn = duckdb.connect(str(jira_env / "extract.duckdb"))
|
|
rows = conn.execute("SELECT rows FROM _meta WHERE table_name='issues'").fetchone()
|
|
assert rows[0] == 1
|
|
data = conn.execute("SELECT issue_key FROM issues").fetchone()
|
|
assert data[0] == "PROJ-1"
|
|
conn.close()
|