91 lines
2.2 KiB
Python
91 lines
2.2 KiB
Python
import sqlite3
|
|
import importlib
|
|
|
|
import pytest
|
|
|
|
server_app_module = importlib.import_module("server.app")
|
|
|
|
# Expose app and init_db from the imported module
|
|
app = server_app_module.app
|
|
init_db = server_app_module.init_db
|
|
|
|
|
|
@pytest.fixture
|
|
def client():
|
|
with app.test_client() as client:
|
|
yield client
|
|
|
|
|
|
def test_is_postgres_enabled():
|
|
"""Test postgres detection logic."""
|
|
from server.database import is_postgres_enabled, set_postgres_override
|
|
|
|
# Test override functionality
|
|
set_postgres_override(True)
|
|
assert is_postgres_enabled()
|
|
|
|
set_postgres_override(False)
|
|
assert not is_postgres_enabled()
|
|
|
|
set_postgres_override(None) # Reset to default
|
|
|
|
|
|
def test_db_cursor_context_manager():
|
|
"""Test database cursor context manager."""
|
|
from server.database import db_cursor
|
|
|
|
with db_cursor() as (conn, cur):
|
|
assert conn is not None
|
|
assert cur is not None
|
|
# Test that we can execute a query
|
|
cur.execute("SELECT 1")
|
|
result = cur.fetchone()
|
|
assert result[0] == 1
|
|
|
|
|
|
def test_get_app_settings_empty():
|
|
"""Test getting app settings when none exist."""
|
|
from server.database import get_app_settings
|
|
|
|
settings = get_app_settings()
|
|
assert isinstance(settings, dict)
|
|
assert len(settings) == 0
|
|
|
|
|
|
def test_update_app_setting():
|
|
"""Test updating app settings."""
|
|
from server.database import update_app_setting, get_app_settings
|
|
|
|
# Update a setting
|
|
update_app_setting("test_key", "test_value")
|
|
|
|
# Verify it was saved
|
|
settings = get_app_settings()
|
|
assert settings["test_key"] == "test_value"
|
|
|
|
|
|
def test_delete_app_setting():
|
|
"""Test deleting app settings."""
|
|
from server.database import update_app_setting, delete_app_setting, get_app_settings
|
|
|
|
# Add a setting
|
|
update_app_setting("delete_test", "to_delete")
|
|
|
|
# Delete it
|
|
delete_app_setting("delete_test")
|
|
|
|
# Verify it's gone
|
|
settings = get_app_settings()
|
|
assert "delete_test" not in settings
|
|
|
|
|
|
def test_get_contacts_pagination():
|
|
"""Test contact pagination."""
|
|
from server.database import get_contacts
|
|
|
|
# Get first page
|
|
submissions, total = get_contacts(page=1, per_page=10)
|
|
assert isinstance(submissions, list)
|
|
assert isinstance(total, int)
|
|
assert total >= 0
|