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,12 +1,10 @@
import uuid
from datetime import datetime, timezone
import pytest
from fastapi import status
from sqlalchemy.orm import Session
from app.auth.dependencies import get_current_user
from app.routers.groups import router as groups_router
from app.utils.database import get_db
# Import mocks and fixtures
@@ -15,7 +13,11 @@ from tests.utils.auth_test_fixtures import (
db_session,
non_admin_user_client,
)
from tests.utils.db_mocks import MockChannelDB, MockGroup, SQLiteUUID
from tests.utils.db_mocks import (
MockChannelDB,
MockGroup,
create_mock_priorities_and_group,
)
# --- Test Cases For Group Creation ---
@@ -188,6 +190,43 @@ def test_update_group_forbidden_for_non_admin(
# --- Test Cases For Delete Group ---
def test_delete_all_groups_success(db_session, admin_user_client):
"""Test reset groups endpoint"""
# Create test data
group1_id = create_mock_priorities_and_group(db_session, [], "Group A")
group2_id = create_mock_priorities_and_group(db_session, [], "Group B")
# Add channel to group2
channel_data = [
{
"group-title": "Group A",
"tvg_id": "channel1.tv",
"name": "Channel One",
"url": ["http://test.com", "http://example.com"],
}
]
admin_user_client.post("/channels/bulk-upload", json=channel_data)
# Reset groups
response = admin_user_client.delete("/groups")
assert response.status_code == status.HTTP_200_OK
assert response.json()["deleted"] == 1 # Only group2 should be deleted
assert response.json()["skipped"] == 1 # group1 has channels
# Verify group2 deleted, group1 remains
assert (
db_session.query(MockGroup).filter(MockGroup.id == group1_id).first()
is not None
)
assert db_session.query(MockGroup).filter(MockGroup.id == group2_id).first() is None
def test_delete_all_groups_forbidden_for_non_admin(db_session, non_admin_user_client):
"""Test reset groups requires admin role"""
response = non_admin_user_client.delete("/groups")
assert response.status_code == status.HTTP_403_FORBIDDEN
def test_delete_group_success(db_session: Session, admin_user_client):
# Create group
group_id = uuid.uuid4()