Implemented bulk upload by passing a json structure. Added delete all channels, groups and priorities
All checks were successful
AWS Deploy on Push / build (push) Successful in 2m17s

This commit is contained in:
2025-06-12 18:49:20 -05:00
parent b8ac25e301
commit abb467749b
11 changed files with 630 additions and 11 deletions

View File

@@ -1,11 +1,9 @@
import uuid
from datetime import datetime, timezone
import pytest
from fastapi import status
from sqlalchemy.orm import Session
from app.models.db import ChannelURL, Priority
from app.routers.priorities import router as priorities_router
# Import fixtures and mocks
@@ -14,7 +12,13 @@ from tests.utils.auth_test_fixtures import (
db_session,
non_admin_user_client,
)
from tests.utils.db_mocks import MockChannelDB, MockChannelURL, MockGroup, MockPriority
from tests.utils.db_mocks import (
MockChannelDB,
MockChannelURL,
MockGroup,
MockPriority,
create_mock_priorities_and_group,
)
# --- Test Cases For Priority Creation ---
@@ -127,6 +131,44 @@ def test_get_priority_forbidden_for_non_admin(
# --- Test Cases For Delete Priority ---
def test_delete_all_priorities_success(db_session, admin_user_client):
"""Test reset priorities endpoint"""
# Create test data
priorities = [(100, "High"), (200, "Medium"), (300, "Low")]
for id, desc in priorities:
db_session.add(MockPriority(id=id, description=desc))
db_session.commit()
# Create channel using priority 100
create_mock_priorities_and_group(db_session, [], "Test Group")
channel_data = [
{
"group-title": "Test Group",
"tvg_id": "test.tv",
"name": "Test Channel",
"urls": ["http://test.com"],
}
]
admin_user_client.post("/channels/bulk-upload", json=channel_data)
# Delete all priorities
response = admin_user_client.delete("/priorities")
assert response.status_code == status.HTTP_200_OK
assert response.json()["deleted"] == 2 # Medium and Low priorities
assert response.json()["skipped"] == 1 # High priority is in use
# Verify only priority 100 remains
priorities = db_session.query(MockPriority).all()
assert len(priorities) == 1
assert priorities[0].id == 100
def test_reset_priorities_forbidden_for_non_admin(db_session, non_admin_user_client):
"""Test reset priorities requires admin role"""
response = non_admin_user_client.delete("/priorities")
assert response.status_code == status.HTTP_403_FORBIDDEN
def test_delete_priority_success(db_session: Session, admin_user_client):
# Create a test priority
priority = MockPriority(id=100, description="To Delete")