mirror of
https://github.com/cssgunc/compass.git
synced 2025-04-10 14:20:17 -04:00
354 lines
8.8 KiB
Python
354 lines
8.8 KiB
Python
import pytest
|
|
from sqlalchemy.orm import Session
|
|
|
|
from ...entities import ServiceEntity
|
|
from ...models.enum_for_models import ProgramTypeEnum
|
|
from ...models.service_model import Service
|
|
|
|
service1 = Service(
|
|
id=1,
|
|
name="service 1",
|
|
status="open",
|
|
summary="presentation educating community on domestic violence",
|
|
requirements=[""],
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
)
|
|
|
|
service2 = Service(
|
|
id=2,
|
|
name="service 2",
|
|
status="closed",
|
|
summary="service finding safe places to stay",
|
|
requirements=[""],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
service3 = Service(
|
|
id=3,
|
|
name="service 3",
|
|
status="open",
|
|
summary="",
|
|
requirements=[""],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
service4 = Service(
|
|
id=4,
|
|
name="service 4",
|
|
status="waitlist",
|
|
summary="community event",
|
|
requirements=[""],
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
)
|
|
|
|
service5 = Service(
|
|
id=5,
|
|
name="service 5",
|
|
status="open",
|
|
summary="talk circle for victims of domestic violence",
|
|
requirements=["18+"],
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
)
|
|
|
|
service6 = Service(
|
|
id=6,
|
|
name="service 6",
|
|
status="waitlist",
|
|
summary="program offering economic assistance",
|
|
requirements=[""],
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
)
|
|
|
|
service_6_edit = Service(
|
|
id=6,
|
|
name="service 6",
|
|
status="open",
|
|
summary="program offering economic assistance",
|
|
requirements=["18+"],
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
)
|
|
|
|
service7 = Service(
|
|
id=7,
|
|
name="service 7",
|
|
status="waitlist",
|
|
summary="insert generic description",
|
|
requirements=[""],
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
)
|
|
|
|
new_service = Service(
|
|
id=8,
|
|
name="new service",
|
|
status="open",
|
|
summary="insert other generic description",
|
|
requirements=[""],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
services = [service1, service2, service3, service4, service5, service6]
|
|
|
|
service_1 = Service(
|
|
id=1,
|
|
name="Crisis Hotline",
|
|
status="open",
|
|
summary="24/7 support for individuals in crisis",
|
|
requirements=["Anonymous", "Confidential"],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
service_2 = Service(
|
|
id=2,
|
|
name="Shelter Placement",
|
|
status="open",
|
|
summary="Emergency shelter for victims of domestic violence",
|
|
requirements=["Referral required", "Safety assessment"],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
service_3 = Service(
|
|
id=3,
|
|
name="Legal Advocacy",
|
|
status="waitlist",
|
|
summary="Legal support and representation for survivors",
|
|
requirements=["Intake required", "Income eligibility"],
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
)
|
|
|
|
service_4 = Service(
|
|
id=4,
|
|
name="Counseling Services",
|
|
status="open",
|
|
summary="Individual and group therapy for survivors",
|
|
requirements=["Initial assessment", "Insurance accepted"],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
service_5 = Service(
|
|
id=5,
|
|
name="Financial Assistance",
|
|
status="open",
|
|
summary="Emergency funds for survivors in need",
|
|
requirements=["Application required", "Proof of income"],
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
)
|
|
|
|
service_6 = Service(
|
|
id=6,
|
|
name="Housing Assistance",
|
|
status="waitlist",
|
|
summary="Support for finding safe and affordable housing",
|
|
requirements=["Referral required", "Background check"],
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
)
|
|
|
|
service_7 = Service(
|
|
id=7,
|
|
name="Job Training",
|
|
status="open",
|
|
summary="Employment skills training for survivors",
|
|
requirements=["Enrollment required", "18+"],
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
)
|
|
|
|
service_8 = Service(
|
|
id=8,
|
|
name="Support Groups",
|
|
status="open",
|
|
summary="Peer support groups for survivors",
|
|
requirements=["Registration required", "Confidential"],
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
)
|
|
|
|
service_9 = Service(
|
|
id=9,
|
|
name="Children's Services",
|
|
status="open",
|
|
summary="Specialized services for children exposed to domestic violence",
|
|
requirements=["Parental consent", "Age-appropriate"],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
service_10 = Service(
|
|
id=10,
|
|
name="Safety Planning",
|
|
status="open",
|
|
summary="Personalized safety planning for survivors",
|
|
requirements=["Confidential", "Collaborative"],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
service_11 = Service(
|
|
id=11,
|
|
name="Community Education",
|
|
status="open",
|
|
summary="Workshops and training on domestic violence prevention",
|
|
requirements=["Open to the public", "Registration preferred"],
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
)
|
|
|
|
service_12 = Service(
|
|
id=12,
|
|
name="Healthcare Services",
|
|
status="open",
|
|
summary="Medical care and support for survivors",
|
|
requirements=["Referral required", "Insurance accepted"],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
service_13 = Service(
|
|
id=13,
|
|
name="Transportation Assistance",
|
|
status="waitlist",
|
|
summary="Help with transportation for survivors",
|
|
requirements=["Eligibility assessment", "Limited availability"],
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
)
|
|
|
|
service_14 = Service(
|
|
id=14,
|
|
name="Court Accompaniment",
|
|
status="open",
|
|
summary="Support and advocacy during court proceedings",
|
|
requirements=["Legal case", "Scheduling required"],
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
)
|
|
|
|
service_15 = Service(
|
|
id=15,
|
|
name="Relocation Assistance",
|
|
status="waitlist",
|
|
summary="Support for relocating to a safe environment",
|
|
requirements=["Referral required", "Safety assessment"],
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
)
|
|
|
|
service_16 = Service(
|
|
id=16,
|
|
name="Parenting Classes",
|
|
status="open",
|
|
summary="Education and support for parents",
|
|
requirements=["Open to parents", "Pre-registration required"],
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
)
|
|
|
|
service_17 = Service(
|
|
id=17,
|
|
name="Life Skills Training",
|
|
status="open",
|
|
summary="Workshops on various life skills for survivors",
|
|
requirements=["Enrollment required", "Commitment to attend"],
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
)
|
|
|
|
service_18 = Service(
|
|
id=18,
|
|
name="Advocacy Services",
|
|
status="open",
|
|
summary="Individual advocacy and support for survivors",
|
|
requirements=["Intake required", "Confidential"],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
service_19 = Service(
|
|
id=19,
|
|
name="Volunteer Opportunities",
|
|
status="open",
|
|
summary="Various volunteer roles supporting the organization",
|
|
requirements=["Background check", "Training required"],
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
)
|
|
|
|
service_20 = Service(
|
|
id=20,
|
|
name="Referral Services",
|
|
status="open",
|
|
summary="Referrals to community resources and partner agencies",
|
|
requirements=["Intake required", "Based on individual needs"],
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
)
|
|
|
|
services1 = [
|
|
service_1,
|
|
service_2,
|
|
service_3,
|
|
service_4,
|
|
service_5,
|
|
service_6,
|
|
service_7,
|
|
service_8,
|
|
service_9,
|
|
service_10,
|
|
service_11,
|
|
service_12,
|
|
service_13,
|
|
service_14,
|
|
service_15,
|
|
service_16,
|
|
service_17,
|
|
service_18,
|
|
service_19,
|
|
service_20,
|
|
]
|
|
|
|
from sqlalchemy import text
|
|
from sqlalchemy.orm import Session, DeclarativeBase, InstrumentedAttribute
|
|
|
|
|
|
def reset_table_id_seq(
|
|
session: Session,
|
|
entity: type[DeclarativeBase],
|
|
entity_id_column: InstrumentedAttribute[int],
|
|
next_id: int,
|
|
) -> None:
|
|
"""Reset the ID sequence of an entity table.
|
|
|
|
Args:
|
|
session (Session) - A SQLAlchemy Session
|
|
entity (DeclarativeBase) - The SQLAlchemy Entity table to target
|
|
entity_id_column (MappedColumn) - The ID column (should be an int column)
|
|
next_id (int) - Where the next inserted, autogenerated ID should begin
|
|
|
|
Returns:
|
|
None"""
|
|
table = entity.__table__
|
|
id_column_name = entity_id_column.name
|
|
sql = text(f"ALTER SEQUENCe {table}_{id_column_name}_seq RESTART WITH {next_id}")
|
|
session.execute(sql)
|
|
|
|
|
|
def insert_test_data(session: Session):
|
|
"""Inserts fake service data into the test session."""
|
|
global services1
|
|
|
|
# Create entities for test organization data
|
|
entities = []
|
|
for service in services1:
|
|
entity = ServiceEntity.from_model(service)
|
|
session.add(entity)
|
|
entities.append(entity)
|
|
|
|
# Reset table IDs to prevent ID conflicts
|
|
reset_table_id_seq(session, ServiceEntity, ServiceEntity.id, len(services1) + 1)
|
|
|
|
# Commit all changes
|
|
session.commit()
|
|
|
|
|
|
def insert_fake_data(session: Session):
|
|
"""Inserts fake service data into the test session."""
|
|
global services
|
|
|
|
# Create entities for test organization data
|
|
entities = []
|
|
for service in services:
|
|
entity = ServiceEntity.from_model(service)
|
|
session.add(entity)
|
|
entities.append(entity)
|
|
|
|
# Reset table IDs to prevent ID conflicts
|
|
reset_table_id_seq(session, ServiceEntity, ServiceEntity.id, len(services) + 1)
|
|
|
|
# Commit all changes
|
|
session.commit()
|