You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
"""Unit tests for DB model definitions (no DB required)."""
|
|
import datetime as dt
|
|
|
|
|
|
def test_issuer_master_fields():
|
|
from libs.db.models import IssuerMaster
|
|
m = IssuerMaster(
|
|
issuer_id="ISSUER::0000320193",
|
|
issuer_name="Apple Inc.",
|
|
ticker="AAPL",
|
|
is_active=True,
|
|
)
|
|
assert m.issuer_id == "ISSUER::0000320193"
|
|
assert m.issuer_name == "Apple Inc."
|
|
assert m.is_active is True
|
|
|
|
|
|
def test_document_defaults():
|
|
from libs.db.models import Document
|
|
doc = Document(
|
|
document_id="DOC::test",
|
|
source_name="sec",
|
|
form_type="8-K",
|
|
filing_date=dt.date(2026, 1, 29),
|
|
parsed_status="pending",
|
|
)
|
|
assert doc.parsed_status == "pending"
|
|
|
|
|
|
def test_event_defaults():
|
|
from libs.db.models import Event
|
|
evt = Event(
|
|
event_id="EVT::test",
|
|
primary_document_id="DOC::test",
|
|
event_type="earnings_release",
|
|
event_direction="bullish",
|
|
event_date=dt.date(2026, 1, 29),
|
|
parser_version="rule-1.0.0",
|
|
status="pending",
|
|
)
|
|
assert evt.status == "pending"
|
|
|
|
|
|
def test_job_run_fields():
|
|
import uuid
|
|
|
|
from libs.db.models import JobRun
|
|
jr = JobRun(
|
|
job_run_id=uuid.uuid4(),
|
|
job_name="test_job",
|
|
status="pending",
|
|
records_seen=0,
|
|
records_written=0,
|
|
)
|
|
assert jr.records_seen == 0
|
|
assert jr.records_written == 0
|
|
|
|
|
|
def test_enums():
|
|
from libs.db.enums import EventDirection, EventType, JobStatus, ParsedStatus, ParserKind
|
|
assert JobStatus.succeeded.value == "succeeded"
|
|
assert ParsedStatus.ready_for_parse.value == "ready_for_parse"
|
|
assert EventDirection.bullish.value == "bullish"
|
|
assert EventType.earnings_release.value == "earnings_release"
|
|
assert ParserKind.rule.value == "rule"
|