compass/backend/test/services/resource_test_data.py

342 lines
9.6 KiB
Python

from sqlalchemy.orm import Session
from datetime import datetime
from ...entities import ResourceEntity
from ...models.enum_for_models import ProgramTypeEnum
from ...models.resource_model import Resource
from .tag_test_data import *
resource1 = Resource(
id=1,
name="Resource 1",
summary="Helpful information for victims of domestic violence",
link="https://example.com/resource1",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 1, 10, 0, 0),
)
resource2 = Resource(
id=2,
name="Resource 2",
summary="Legal assistance resources",
link="https://example.com/resource2",
program=ProgramTypeEnum.COMMUNITY,
tags=[tag1, tag2],
)
resource2_edit_tags = Resource(
id=2,
name="Resource 2",
summary="Legal assistance resources",
link="https://example.com/resource2",
program=ProgramTypeEnum.COMMUNITY,
tags=[tag2],
)
resource3 = Resource(
id=3,
name="Resource 3",
summary="Financial aid resources",
link="https://example.com/resource3",
program=ProgramTypeEnum.ECONOMIC,
created_at=datetime(2023, 6, 3, 15, 45, 0),
)
resource4 = Resource(
id=4,
name="Resource 4",
summary="Counseling and support groups",
link="https://example.com/resource4",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 4, 9, 15, 0),
)
resource4_edit = Resource(
id=4,
name="Resource 4 edited",
summary="Counseling and support groups",
link="https://example.com/resource4",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 4, 9, 15, 0),
)
resource5 = Resource(
id=5,
name="Resource 5",
summary="Shelter and housing resources",
link="https://example.com/resource5",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 5, 11, 30, 0),
)
resource_to_create = Resource(
name="Created Resource",
summary="Resource Test Create",
link="https://example.com/",
program=ProgramTypeEnum.COMMUNITY,
)
resources = [resource1, resource2, resource3, resource4, resource5]
resource_1 = Resource(
id=1,
name="National Domestic Violence Hotline",
summary="24/7 confidential support for victims of domestic violence",
link="https://www.thehotline.org",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 1, 10, 0, 0),
)
resource_2 = Resource(
id=2,
name="Legal Aid Society",
summary="Free legal assistance for low-income individuals",
link="https://www.legalaidnyc.org",
program=ProgramTypeEnum.COMMUNITY,
created_at=datetime(2023, 6, 2, 12, 30, 0),
)
resource_3 = Resource(
id=3,
name="Financial Empowerment Center",
summary="Free financial counseling and education services",
link="https://www1.nyc.gov/site/dca/consumers/get-free-financial-counseling.page",
program=ProgramTypeEnum.ECONOMIC,
created_at=datetime(2023, 6, 3, 15, 45, 0),
)
resource_4 = Resource(
id=4,
name="National Coalition Against Domestic Violence",
summary="Resources and support for victims of domestic violence",
link="https://ncadv.org",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 4, 9, 15, 0),
)
resource_5 = Resource(
id=5,
name="Safe Horizon",
summary="Shelter and support services for victims of violence",
link="https://www.safehorizon.org",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 5, 11, 30, 0),
)
resource_6 = Resource(
id=6,
name="National Sexual Assault Hotline",
summary="24/7 confidential support for survivors of sexual assault",
link="https://www.rainn.org",
program=ProgramTypeEnum.COMMUNITY,
created_at=datetime(2023, 6, 6, 14, 0, 0),
)
resource_7 = Resource(
id=7,
name="Victim Compensation Fund",
summary="Financial assistance for victims of crime",
link="https://ovc.ojp.gov/program/victim-compensation",
program=ProgramTypeEnum.ECONOMIC,
created_at=datetime(2023, 6, 7, 16, 45, 0),
)
resource_8 = Resource(
id=8,
name="Battered Women's Justice Project",
summary="Legal and technical assistance for victims of domestic violence",
link="https://www.bwjp.org",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 8, 10, 30, 0),
)
resource_9 = Resource(
id=9,
name="National Network to End Domestic Violence",
summary="Advocacy and resources for ending domestic violence",
link="https://nnedv.org",
program=ProgramTypeEnum.COMMUNITY,
created_at=datetime(2023, 6, 9, 13, 0, 0),
)
resource_10 = Resource(
id=10,
name="Economic Justice Project",
summary="Promoting economic security for survivors of domestic violence",
link="https://www.njep.org",
program=ProgramTypeEnum.ECONOMIC,
created_at=datetime(2023, 6, 10, 15, 15, 0),
)
resource_11 = Resource(
id=11,
name="Domestic Violence Legal Hotline",
summary="Free legal advice for victims of domestic violence",
link="https://www.womenslaw.org/find-help/national/hotlines",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 11, 9, 0, 0),
)
resource_12 = Resource(
id=12,
name="National Resource Center on Domestic Violence",
summary="Comprehensive information and resources on domestic violence",
link="https://nrcdv.org",
program=ProgramTypeEnum.COMMUNITY,
created_at=datetime(2023, 6, 12, 11, 30, 0),
)
resource_13 = Resource(
id=13,
name="Financial Assistance for Victims of Crime",
summary="Funding for expenses related to victimization",
link="https://ovc.ojp.gov/program/victim-assistance-funding",
program=ProgramTypeEnum.ECONOMIC,
created_at=datetime(2023, 6, 13, 14, 45, 0),
)
resource_14 = Resource(
id=14,
name="National Clearinghouse for the Defense of Battered Women",
summary="Legal resources and support for battered women",
link="https://www.ncdbw.org",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 14, 10, 0, 0),
)
resource_15 = Resource(
id=15,
name="Victim Connect Resource Center",
summary="Referral helpline for crime victims",
link="https://victimconnect.org",
program=ProgramTypeEnum.COMMUNITY,
created_at=datetime(2023, 6, 15, 13, 15, 0),
)
resource_16 = Resource(
id=16,
name="Economic Empowerment Program",
summary="Financial literacy and job readiness training for survivors",
link="https://www.purplepurse.com",
program=ProgramTypeEnum.ECONOMIC,
created_at=datetime(2023, 6, 16, 16, 30, 0),
)
resource_17 = Resource(
id=17,
name="National Domestic Violence Law Project",
summary="Legal information and resources for domestic violence survivors",
link="https://www.womenslaw.org",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 17, 9, 45, 0),
)
resource_18 = Resource(
id=18,
name="Victim Rights Law Center",
summary="Free legal services for victims of sexual assault",
link="https://victimrights.org",
program=ProgramTypeEnum.COMMUNITY,
created_at=datetime(2023, 6, 18, 12, 0, 0),
)
resource_19 = Resource(
id=19,
name="Financial Justice Project",
summary="Advocating for economic justice for survivors of violence",
link="https://www.financialjusticeproject.org",
program=ProgramTypeEnum.ECONOMIC,
created_at=datetime(2023, 6, 19, 15, 30, 0),
)
resource_20 = Resource(
id=20,
name="National Center on Domestic and Sexual Violence",
summary="Training and resources to end domestic and sexual violence",
link="http://www.ncdsv.org",
program=ProgramTypeEnum.DOMESTIC,
created_at=datetime(2023, 6, 20, 10, 15, 0),
)
resources1 = [
resource_1,
resource_2,
resource_3,
resource_4,
resource_5,
resource_6,
resource_7,
resource_8,
resource_9,
resource_10,
resource_11,
resource_12,
resource_13,
resource_14,
resource_15,
resource_16,
resource_17,
resource_18,
resource_19,
resource_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 resource data into the test session."""
global resources1
# Create entities for test resource data
entities = []
for resource in resources1:
entity = ResourceEntity.from_model(resource)
session.add(entity)
entities.append(entity)
# Reset table IDs to prevent ID conflicts
reset_table_id_seq(session, ResourceEntity, ResourceEntity.id, len(resources1) + 1)
# Commit all changes
session.commit()
def insert_fake_data(session: Session):
"""Inserts fake resource data into the test session."""
global resources
# Create entities for test resource data
entities = []
for resource in resources:
entity = ResourceEntity.from_model(resource)
session.add(entity)
entities.append(entity)
# Reset table IDs to prevent ID conflicts
reset_table_id_seq(session, ResourceEntity, ResourceEntity.id, len(resources) + 1)
# Commit all changes
session.commit()