Initial commit

This commit is contained in:
2025-07-11 13:52:19 +00:00
commit e0c489f625
362 changed files with 27286 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
import os
import modules.logger_tool as logger
log_name = 'pytest_calendar'
log_dir = os.getenv("LOG_PATH", "/logs") # Default path as fallback
logging = logger.get_logger(
name=log_name,
log_level=os.getenv("LOG_LEVEL", "DEBUG"),
log_path=log_dir,
log_file=log_name,
runtime=True,
log_format='default'
)
import modules.database.tools.neo4j_driver_tools as driver_tools
import modules.database.tools.neontology_tools as neon
import pytest
from fastapi.testclient import TestClient
from routers.database.init.calendar import router
from fastapi import FastAPI
from datetime import datetime, timedelta
app = FastAPI()
app.include_router(router)
client = TestClient(app)
# Define a list of date ranges for testing
date_ranges = [
(datetime.now(), datetime.now() + timedelta(days=1)), # 1 day
(datetime.now(), datetime.now() + timedelta(days=7)), # 1 week
(datetime.now(), datetime.now() + timedelta(days=30)), # 1 month
(datetime.now(), datetime.now() + timedelta(days=183)),# 6 months
(datetime.now(), datetime.now() + timedelta(days=365)) # 1 year
]
# Fixture to manage database name increment
@pytest.fixture(scope="function", autouse=True)
def increment_db_name_counter(request):
if not hasattr(request.module, "db_name_counter"):
request.module.db_name_counter = 0
request.module.db_name_counter += 1
return request.module.db_name_counter
@pytest.mark.parametrize("start_date, end_date", date_ranges)
def test_create_calendar(start_date, end_date, increment_db_name_counter):
db_name = f"test_create_calendar_db_{increment_db_name_counter}"
neo_safe_db_name = db_name.replace("_", "")
logging.info(f"Creating calendar for {db_name} from {start_date} to {end_date}")
logging.info(f"Creating calendar for {db_name} from {start_date} to {end_date}")
response = client.post(
"/create-calendar",
params={
"db_name": neo_safe_db_name,
"start_date": start_date.strftime('%Y-%m-%d'),
"end_date": end_date.strftime('%Y-%m-%d')
}
)
assert response.status_code == 200
response_json = response.json()
assert "calendar_year_nodes" in response_json and response_json["calendar_year_nodes"] != 0
assert "calendar_month_nodes" in response_json and response_json["calendar_month_nodes"] != 0
assert "calendar_week_nodes" in response_json and response_json["calendar_week_nodes"] != 0
assert "calendar_day_nodes" in response_json and response_json["calendar_day_nodes"] != 0
+61
View File
@@ -0,0 +1,61 @@
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
import os
import modules.logger_tool as logger
log_name = 'pytest_init_curriculum'
log_dir = os.getenv("LOG_PATH", "/logs") # Default path as fallback
logging = logger.get_logger(
name=log_name,
log_level=os.getenv("LOG_LEVEL", "DEBUG"),
log_path=log_dir,
log_file=log_name,
runtime=True,
log_format='default'
)
import modules.database.tools.neo4j_driver_tools as driver_tools
import modules.database.tools.neontology_tools as neon
import pytest
from fastapi.testclient import TestClient
from routers.database.init.curriculum import router
from fastapi import FastAPI
app = FastAPI()
app.include_router(router)
client = TestClient(app)
db_name = log_name.replace('_', '')
excel_file = os.environ['EXCEL_CURRICULUM_FILE']
driver = driver_tools.get_driver(database=db_name)
neon.init_neontology_connection()
@pytest.fixture
def sample_file():
# Use the existing Excel file to upload
file_path = excel_file
logging.info(f"Using sample file at {file_path}")
yield file_path
def test_upload_curriculum(sample_file):
db_name = "test_curriculum_db"
with open(sample_file, "rb") as f:
response = client.post(
"/upload-curriculum",
files={"file": (excel_file, f, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")},
data={"db_name": db_name.replace('_', '')}
)
logging.info(f"Response status code: {response.status_code}")
logging.info(f"Response JSON: {response.json()}")
assert response.status_code == 200
response_json = response.json()
logging.info(f"Response JSON keys: {response_json.keys()}")
# Adjust the assertions based on the actual response structure
assert "status" in response_json or "12" in response_json
if "status" in response_json:
assert response_json["status"] == "Success"
else:
assert "created" in response_json["12"]
assert "merged" in response_json["12"]
@@ -0,0 +1,54 @@
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
import os
import modules.logger_tool as logger
log_name = 'pytest_timetable'
log_dir = os.getenv("LOG_PATH", "/logs") # Default path as fallback
logging = logger.get_logger(
name=log_name,
log_level=os.getenv("LOG_LEVEL", "DEBUG"),
log_path=log_dir,
log_file=log_name,
runtime=True,
log_format='default'
)
import modules.database.tools.neo4j_driver_tools as driver_tools
import modules.database.tools.neontology_tools as neon
import pytest
from fastapi.testclient import TestClient
from routers.database.init.timetable import router
from fastapi import FastAPI
import pandas as pd
app = FastAPI()
app.include_router(router)
client = TestClient(app)
db_name = log_name.replace('_', '')
excel_file = os.environ['EXCEL_TIMETABLE_FILE']
@pytest.fixture
def sample_file():
# Use the existing Excel file to upload
file_path = excel_file
logging.info(f"Using sample file at {file_path}")
yield file_path
def test_upload_school_timetable(sample_file):
db_name = "pytest_school_timetable_db"
with open(sample_file, "rb") as f:
response = client.post(
"/upload-school-timetable",
data={"db_name": db_name.replace('_', '')},
files={"file": (excel_file, f, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}
)
logging.info(f"Response status code: {response.status_code}")
logging.info(f"Response JSON: {response.json()}")
assert response.status_code == 200
response_json = response.json()
assert "calendar_nodes" in response_json
assert "school_timetable_nodes" in response_json
assert response_json["calendar_nodes"] is not None
assert response_json["school_timetable_nodes"] is not None
+44
View File
@@ -0,0 +1,44 @@
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
import os
import modules.logger_tool as logger
log_name = 'pytest_timetable'
log_dir = os.getenv("LOG_PATH", "/logs") # Default path as fallback
logging = logger.get_logger(
name=log_name,
log_level=os.getenv("LOG_LEVEL", "DEBUG"),
log_path=log_dir,
log_file=log_name,
runtime=True,
log_format='default'
)
import modules.database.tools.neo4j_driver_tools as driver_tools
import modules.database.tools.neontology_tools as neon
import pytest
from fastapi.testclient import TestClient
from fastapi import FastAPI
import pandas as pd
# Import the router from entity_init.py
from routers.database.init.entity_init import router
app = FastAPI()
app.include_router(router)
client = TestClient(app)
@pytest.mark.parametrize("username, email, user_id", [
("user1", "[email protected]", "uuid1"),
("user2", "[email protected]", "uuid2"),
("user3", "[email protected]", "uuid3")
])
def test_create_user(username, email, user_id):
response = client.post(
"/create-user",
data={"username": username, "email": email, "user_id": user_id}
)
logging.info(f"Tested creating user {username}. Response status code: {response.status_code}")
response_json = response.json()
logging.info(f"Response JSON: {response_json}")
assert response.status_code == 200
+35
View File
@@ -0,0 +1,35 @@
import os
import pytest
from fastapi.testclient import TestClient
from main import app # Adjust the import based on your project structure
client = TestClient(app)
@pytest.fixture(autouse=True)
def setup_env():
os.environ["WHISPERLIVE_HOST"] = "localhost"
os.environ["WHISPERLIVE_PORT"] = "9090"
def test_start_transcription():
user_id = "test_user"
response = client.post(f"/transcribe/live/start_transcription/{user_id}")
assert response.status_code == 200
assert response.json() == {"message": "Transcription started", "user_id": user_id}
def test_handle_whisper_live_eos_utterance():
user_id = "test_user"
data = {
"utterance": "Hello, world!",
"start": 0,
"end": 1,
"eos": True
}
response = client.post(f"/transcribe/utterance/handle_whisper_live_eos_utterance/{user_id}", json=data)
assert response.status_code == 200
assert response.json() == {"message": "Utterance logged successfully"}
def test_get_utterances():
user_id = "test_user"
response = client.get(f"/transcribe/utterance/get_utterances/{user_id}")
assert response.status_code == 200
assert "utterances" in response.json()