cse2000-software-project/kernel/tests/test_database.py
2024-06-10 17:17:37 +02:00

89 lines
2 KiB
Python

import pytest
from unittest.mock import Mock, patch
from spectral.database import Database
@pytest.fixture
def db():
return Database(
user="test_user",
password="test_pass",
host="test_host",
port="5432",
dbname="test_db",
)
@patch("spectral.database.psycopg.connect")
def test_connection(mock_connect, db):
db.connection()
mock_connect.assert_called_once_with(
dbname="test_db",
user="test_user",
password="test_pass",
host="test_host",
port="5432",
)
def test_fetch_file(db):
mock_cursor = Mock()
db.conn = Mock()
db.cursor = mock_cursor
mock_cursor.fetchall.return_value = [
("id", 1),
("name", 2),
("data", 3),
("creation_time", 4),
("modified_time", 5),
("uploader", 6),
("session", 7),
("emphemeral", 8),
]
mock_cursor.fetchone.return_value = [
"1",
"test_name",
b"test_data",
"creation_time",
"modified_time",
"uploader",
"session",
False,
]
result = db.fetch_file("1")
assert result == {
"id": "1",
"name": "test_name",
"data": b"test_data",
"creationTime": "creation_time",
"modifiedTime": "modified_time",
"uploader": "uploader",
"session": "session",
"emphemeral": False,
}
mock_cursor.execute.assert_called_with("SELECT * FROM files WHERE id = %s", ["1"])
def test_get_transcriptions(db):
mock_cursor = Mock()
db.conn = Mock()
db.cursor = mock_cursor
mock_cursor.fetchall.side_effect = [[("1",)], [(0.0, 1.0, "hello")]]
result = db.get_transcriptions("1")
assert result == [[{"start": 0.0, "end": 1.0, "value": "hello"}]]
mock_cursor.execute.assert_called()
def test_close(db):
mock_cursor = Mock()
db.conn = Mock()
db.cursor = mock_cursor
db.close()
mock_cursor.close.assert_called_once()
db.conn.close.assert_called_once()