70 lines
2.8 KiB
Python
70 lines
2.8 KiB
Python
from pathlib import Path
|
|
import importlib.util
|
|
import unittest
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
SCRIPT_PATH = ROOT / "scripts" / "lab_007_grid_power_packet.py"
|
|
DOC_PATH = ROOT / "docs" / "LAB_007_GRID_POWER_REQUEST.md"
|
|
|
|
|
|
def load_module(path: Path, name: str):
|
|
assert path.exists(), f"missing {path.relative_to(ROOT)}"
|
|
spec = importlib.util.spec_from_file_location(name, path)
|
|
assert spec and spec.loader
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
class TestLab007GridPowerPacket(unittest.TestCase):
|
|
def test_packet_marks_missing_site_fields_and_uses_eversource_as_primary(self):
|
|
mod = load_module(SCRIPT_PATH, "lab_007_grid_power_packet")
|
|
packet = mod.build_packet({})
|
|
|
|
self.assertEqual(packet["primary_utility"]["name"], "Eversource")
|
|
self.assertIn("Lempster", packet["territory_evidence"])
|
|
self.assertFalse(packet["ready_to_contact"])
|
|
self.assertIn("site_address", packet["missing_fields"])
|
|
self.assertIn("pole_distance_feet", packet["missing_fields"])
|
|
self.assertIn("terrain_description", packet["missing_fields"])
|
|
|
|
def test_packet_with_site_details_builds_contact_ready_email_and_call_checklist(self):
|
|
mod = load_module(SCRIPT_PATH, "lab_007_grid_power_packet")
|
|
packet = mod.build_packet(
|
|
{
|
|
"site_address": "123 Example Rd, Lempster, NH",
|
|
"pole_distance_feet": 280,
|
|
"terrain_description": "mixed woods, uphill grade, likely overhead run",
|
|
"service_size": "200A residential service",
|
|
}
|
|
)
|
|
|
|
self.assertTrue(packet["ready_to_contact"])
|
|
self.assertEqual(packet["missing_fields"], [])
|
|
self.assertIn("123 Example Rd", packet["email_body"])
|
|
self.assertIn("280 feet", packet["email_body"])
|
|
self.assertIn("meter base", packet["email_body"])
|
|
self.assertIn("per-kWh rate", packet["estimate_request_checklist"])
|
|
self.assertIn("800-362-7764", packet["primary_utility"]["phone"])
|
|
self.assertIn("nhnewservice@eversource.com", packet["primary_utility"]["email"])
|
|
|
|
def test_repo_contains_grounded_request_doc(self):
|
|
self.assertTrue(DOC_PATH.exists(), "missing committed LAB-007 request doc")
|
|
text = DOC_PATH.read_text(encoding="utf-8")
|
|
for snippet in (
|
|
"# LAB-007 — Grid Power Hookup Estimate Request Packet",
|
|
"Eversource",
|
|
"800-362-7764",
|
|
"nhnewservice@eversource.com",
|
|
"No formal estimate has been received yet.",
|
|
"pole/transformer",
|
|
"monthly base charge",
|
|
"per-kWh rate",
|
|
):
|
|
self.assertIn(snippet, text)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|