Cover enrichment, lookup-map, and region ordering in transform tests

This commit is contained in:
2026-04-17 03:13:46 +03:00
parent e5b49acecf
commit 64dd5421e2
+117
View File
@@ -94,3 +94,120 @@ describe("transformDictionaries — filtering", () => {
expect([...d.otherCityCodes]).toEqual(["PAR"]);
});
});
describe("transformDictionaries — enrichment", () => {
it("picks localized city name from title[lang]", () => {
const d = transformDictionaries(
{
regions: [],
countries: [],
cities: [
{ code: "MOW", title: { ru: "Москва", en: "Moscow" }, country_code: "RU", has_afl_flights: true, location: { lat: 55, lon: 37 } },
],
airports: [
{ code: "SVO", city_code: "MOW", title: { ru: "Шереметьево", en: "Sheremetyevo" }, has_afl_flights: true, location: { lat: 55, lon: 37 } },
],
},
"en",
);
expect(d.cities[0]!.name).toBe("Moscow");
expect(d.cities[0]!.airports[0]!.name).toBe("Sheremetyevo");
});
it("looks up countryName from countries dictionary", () => {
const d = transformDictionaries(
{
regions: [],
countries: [{ code: "RU", title: { ru: "Россия", en: "Russia" }, world_region_id: 500374 }],
cities: [
{ code: "MOW", title: { ru: "Москва" }, country_code: "RU", has_afl_flights: true, location: { lat: 55, lon: 37 } },
],
airports: [
{ code: "SVO", city_code: "MOW", title: { ru: "Шереметьево" }, has_afl_flights: true, location: { lat: 55, lon: 37 } },
],
},
"en",
);
expect(d.cities[0]!.countryName).toBe("Russia");
});
it("sorts a city's airports by localized name", () => {
const d = transformDictionaries(
{
regions: [],
countries: [],
cities: [
{ code: "MOW", title: { ru: "Москва" }, country_code: "RU", has_afl_flights: true, location: { lat: 55, lon: 37 } },
],
airports: [
{ code: "SVO", city_code: "MOW", title: { ru: "Шереметьево" }, has_afl_flights: true, location: { lat: 55, lon: 37 } },
{ code: "DME", city_code: "MOW", title: { ru: "Домодедово" }, has_afl_flights: true, location: { lat: 55, lon: 37 } },
{ code: "VKO", city_code: "MOW", title: { ru: "Внуково" }, has_afl_flights: true, location: { lat: 55, lon: 37 } },
],
},
"ru",
);
expect(d.cities[0]!.airports.map((a) => a.code)).toEqual(["VKO", "DME", "SVO"]);
});
});
describe("transformDictionaries — lookup maps", () => {
it("keys lookup maps by uppercase", () => {
const d = transformDictionaries(
{
regions: [],
countries: [],
cities: [
{ code: "mow", title: { ru: "Москва" }, country_code: "RU", has_afl_flights: true, location: { lat: 55, lon: 37 } },
],
airports: [
{ code: "svo", city_code: "mow", title: { ru: "Шереметьево" }, has_afl_flights: true, location: { lat: 55, lon: 37 } },
],
},
"ru",
);
expect(d.cityByCode.get("MOW")?.code).toBe("mow");
expect(d.airportByCode.get("SVO")?.code).toBe("svo");
});
});
describe("transformDictionaries — regions", () => {
it("drops Australia region (world_region_id 500373)", () => {
const d = transformDictionaries(
{
regions: [
{ world_region_id: 500373, title: { ru: "Австралия" } },
{ world_region_id: 500374, title: { ru: "Россия" } },
],
countries: [],
cities: [],
airports: [],
},
"ru",
);
expect(d.regions.map((r) => r.id)).toEqual([500374]);
});
it("places Russia region first, others alphabetical", () => {
const d = transformDictionaries(
{
regions: [
{ world_region_id: 500374, title: { ru: "Россия" } },
{ world_region_id: 1, title: { ru: "Азия" } },
{ world_region_id: 2, title: { ru: "Европа" } },
],
countries: [],
cities: [],
airports: [],
},
"ru",
);
expect(d.regions.map((r) => r.id)).toEqual([500374, 1, 2]);
});
});