Files
stef-openclaw-skills/skills/property-assessor/tests/public-records.test.ts

199 lines
6.6 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import { resolvePublicRecords } from "../src/public-records.js";
const geocoderPayload = {
result: {
addressMatches: [
{
matchedAddress: "4141 WHITELEY DR, CORPUS CHRISTI, TX, 78418",
coordinates: { x: -97.30174, y: 27.613668 },
geographies: {
States: [{ NAME: "Texas", STUSAB: "TX", STATE: "48" }],
Counties: [{ NAME: "Nueces County", COUNTY: "355", GEOID: "48355" }],
"2020 Census Blocks": [{ GEOID: "483550031013005" }]
}
}
]
}
};
const countyIndexHtml = `
<ul>
<li><a href="nueces.php">178 Nueces</a></li>
</ul>
`;
const countyPageHtml = `
<div class="medium-6 small-12 columns">
<h3>Appraisal District</h3>
<p class="file-info">Last Updated: 08/13/2025</p>
<h4>Chief Appraiser: Debra Morin, Interim</h4>
<p>
<strong>Phone:</strong> <a href="tel:361-881-9978">361-881-9978</a><br />
<strong>Email:</strong> <a href="mailto:info@nuecescad.net">info@nuecescad.net</a><br />
<strong>Website:</strong> <a href="http://www.ncadistrict.com/">www.ncadistrict.com</a>
</p>
<h4>Mailing Address</h4>
<p>201 N. Chaparral St.<br />Corpus Christi, TX 78401-2503</p>
</div>
<div class="medium-6 small-12 columns">
<h3>Tax Assessor/Collector</h3>
<p class="file-info">Last Updated: 02/18/2025</p>
<h4>Tax Assessor-Collector: Kevin Kieschnick</h4>
<p>
<strong>Phone:</strong> <a href="tel:361-888-0307">361-888-0307</a><br />
<strong>Email:</strong> <a href="mailto:nueces.tax@nuecesco.com">nueces.tax@nuecesco.com</a><br />
<strong>Website:</strong> <a href="http://www.nuecesco.com">www.nuecesco.com</a>
</p>
<h4>Street Address</h4>
<p>901 Leopard St., Room 301<br />Corpus Christi, Texas 78401-3602</p>
</div>
`;
const fakeFetchText = async (url: string): Promise<string> => {
if (url.includes("geocoding.geo.census.gov")) {
return JSON.stringify(geocoderPayload);
}
if (url.endsWith("/county-directory/")) {
return countyIndexHtml;
}
if (url.endsWith("/county-directory/nueces.php")) {
return countyPageHtml;
}
throw new Error(`Unexpected URL: ${url}`);
};
test("resolvePublicRecords uses Census and Texas county directory", async () => {
const payload = await resolvePublicRecords("4141 Whiteley Dr, Corpus Christi, TX 78418", {
parcelId: "14069438",
listingGeoId: "233290",
listingSourceUrl: "https://www.zillow.com/homedetails/example",
fetchText: fakeFetchText
});
assert.equal(payload.county.name, "Nueces County");
assert.equal(payload.state.code, "TX");
assert.equal(payload.appraisalDistrict?.Website, "http://www.ncadistrict.com/");
assert.equal(payload.taxAssessorCollector?.Email, "nueces.tax@nuecesco.com");
assert.equal(payload.sourceIdentifierHints.parcelId, "14069438");
assert.match(payload.lookupRecommendations.join(" "), /listing geo IDs as regional hints only/i);
});
test("resolvePublicRecords falls back to coordinate geocoding when Census address lookup misses", async () => {
const coordinatePayload = {
result: {
geographies: {
States: [{ NAME: "Texas", STUSAB: "TX", STATE: "48" }],
Counties: [{ NAME: "Nueces County", COUNTY: "355", GEOID: "48355" }],
"2020 Census Blocks": [{ GEOID: "483550031013005" }]
}
}
};
const fallbackFetchText = async (url: string): Promise<string> => {
if (url.includes("geocoding.geo.census.gov") && url.includes("onelineaddress")) {
return JSON.stringify({ result: { addressMatches: [] } });
}
if (url.includes("nominatim.openstreetmap.org/search")) {
return JSON.stringify([
{
lat: "27.708000",
lon: "-97.360000",
display_name: "1011 Ennis Joslin Rd Apt 235, Corpus Christi, TX 78412"
}
]);
}
if (url.includes("geocoding.geo.census.gov") && url.includes("geographies/coordinates")) {
return JSON.stringify(coordinatePayload);
}
if (url.endsWith("/county-directory/")) {
return countyIndexHtml;
}
if (url.endsWith("/county-directory/nueces.php")) {
return countyPageHtml;
}
throw new Error(`Unexpected URL: ${url}`);
};
const payload = await resolvePublicRecords(
"1011 Ennis Joslin Rd APT 235, Corpus Christi, TX 78412",
{
fetchText: fallbackFetchText
}
);
assert.equal(
payload.matchedAddress,
"1011 Ennis Joslin Rd Apt 235, Corpus Christi, TX 78412"
);
assert.equal(payload.county.name, "Nueces County");
assert.equal(payload.state.code, "TX");
assert.equal(payload.latitude, 27.708);
assert.equal(payload.longitude, -97.36);
assert.match(
payload.lookupRecommendations.join(" "),
/fallback geocoder/i
);
});
test("resolvePublicRecords retries fallback geocoding without the unit suffix", async () => {
const seenFallbackQueries: string[] = [];
const coordinatePayload = {
result: {
geographies: {
States: [{ NAME: "Texas", STUSAB: "TX", STATE: "48" }],
Counties: [{ NAME: "Nueces County", COUNTY: "355", GEOID: "48355" }],
"2020 Census Blocks": [{ GEOID: "483550031013005" }]
}
}
};
const retryingFetchText = async (url: string): Promise<string> => {
if (url.includes("geocoding.geo.census.gov") && url.includes("onelineaddress")) {
return JSON.stringify({ result: { addressMatches: [] } });
}
if (url.includes("nominatim.openstreetmap.org/search")) {
const query = new URL(url).searchParams.get("q") || "";
seenFallbackQueries.push(query);
if (query.includes("APT 235")) {
return "[]";
}
if (query === "1011 Ennis Joslin Rd, Corpus Christi, TX 78412") {
return JSON.stringify([
{
lat: "27.6999080",
lon: "-97.3338107",
display_name: "Ennis Joslin Road, Corpus Christi, Nueces County, Texas, 78412, United States"
}
]);
}
}
if (url.includes("geocoding.geo.census.gov") && url.includes("geographies/coordinates")) {
return JSON.stringify(coordinatePayload);
}
if (url.endsWith("/county-directory/")) {
return countyIndexHtml;
}
if (url.endsWith("/county-directory/nueces.php")) {
return countyPageHtml;
}
throw new Error(`Unexpected URL: ${url}`);
};
const payload = await resolvePublicRecords(
"1011 Ennis Joslin Rd APT 235, Corpus Christi, TX 78412",
{
fetchText: retryingFetchText
}
);
assert.deepEqual(seenFallbackQueries, [
"1011 Ennis Joslin Rd APT 235, Corpus Christi, TX 78412",
"1011 Ennis Joslin Rd, Corpus Christi, TX 78412"
]);
assert.equal(payload.county.name, "Nueces County");
assert.equal(payload.state.code, "TX");
});