Make listing discovery unit-aware
This commit is contained in:
59
skills/web-automation/scripts/real-estate-address.test.mjs
Normal file
59
skills/web-automation/scripts/real-estate-address.test.mjs
Normal file
@@ -0,0 +1,59 @@
|
||||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import {
|
||||
buildZillowAddressSlug,
|
||||
parseAddressIdentity,
|
||||
scoreAddressCandidate,
|
||||
} from "./real-estate-address.js";
|
||||
|
||||
test("parseAddressIdentity detects unit numbers when present", () => {
|
||||
const identity = parseAddressIdentity("4141 Whiteley Dr Apt 204, Corpus Christi, TX 78418");
|
||||
|
||||
assert.equal(identity.streetWithoutUnit, "4141 Whiteley Dr");
|
||||
assert.equal(identity.unitValue, "204");
|
||||
assert.equal(identity.hasUnit, true);
|
||||
assert.deepEqual(identity.streetTokens, ["4141", "whiteley"]);
|
||||
});
|
||||
|
||||
test("parseAddressIdentity supports plain single-family style addresses with no unit", () => {
|
||||
const identity = parseAddressIdentity("1201 E Iberian Ct, Granbury, TX 76048");
|
||||
|
||||
assert.equal(identity.unitValue, null);
|
||||
assert.equal(identity.hasUnit, false);
|
||||
assert.deepEqual(identity.streetTokens, ["1201", "e", "iberian"]);
|
||||
});
|
||||
|
||||
test("buildZillowAddressSlug keeps unit identifiers in the slug", () => {
|
||||
assert.equal(
|
||||
buildZillowAddressSlug("4141 Whiteley Dr Apt 204, Corpus Christi, TX 78418"),
|
||||
"4141-Whiteley-Dr-Apt-204-Corpus-Christi-TX-78418"
|
||||
);
|
||||
});
|
||||
|
||||
test("scoreAddressCandidate rejects a wrong unit on the same street", () => {
|
||||
const identity = parseAddressIdentity("4141 Whiteley Dr Apt 204, Corpus Christi, TX 78418");
|
||||
const good = scoreAddressCandidate(
|
||||
identity,
|
||||
"https://www.zillow.com/homedetails/4141-Whiteley-Dr-Apt-204-Corpus-Christi-TX-78418/123_zpid/"
|
||||
);
|
||||
const bad = scoreAddressCandidate(
|
||||
identity,
|
||||
"https://www.zillow.com/homedetails/4141-Whiteley-Dr-Apt-305-Corpus-Christi-TX-78418/456_zpid/"
|
||||
);
|
||||
|
||||
assert.equal(good.matched, true);
|
||||
assert.equal(good.unitMatched, true);
|
||||
assert.equal(bad.matched, false);
|
||||
assert.equal(bad.unitMatched, false);
|
||||
});
|
||||
|
||||
test("scoreAddressCandidate still matches plain addresses with no unit", () => {
|
||||
const identity = parseAddressIdentity("1201 E Iberian Ct, Granbury, TX 76048");
|
||||
const result = scoreAddressCandidate(
|
||||
identity,
|
||||
"1201 E Iberian Ct Granbury, TX 76048 For Sale, Residential"
|
||||
);
|
||||
|
||||
assert.equal(result.matched, true);
|
||||
});
|
||||
Reference in New Issue
Block a user