UNPKG

@rr0/cms

Version:

RR0 Content Management System (CMS)

121 lines (120 loc) 5.75 kB
import { beforeEach, describe, expect, test } from "@javarome/testscript"; import { rr0TestUtil } from "../../../test/index.js"; import { Level2Date as EdtfDate } from "@rr0/time"; import { nuforcDatasource } from "./NuforcRR0Mapping.js"; import { nuforcTestCases } from "./NuforcTestCases.js"; import { castlegar } from "../../../org/ca/region/bc/rdck/Castlegar/Castlegar.js"; import { fortWorth } from "../../../org/us/region/tx/tarrant/fortworth/FortWorth.js"; import { campPendleton } from "../../../org/us/region/ca/sandiego/camppendleton/CampPendleton.js"; import { stPetersburg } from "../../../org/us/region/fl/pinellas/stpetersburg/StPetersburg.js"; import { monessen } from "../../../org/us/region/pa/westmoreland/monessen/Monessen.js"; import { bonneyLake } from "../../../org/us/region/wa/pierce/bonneylake/BonneyLake.js"; import { slocomb } from "../../../org/us/region/al/geneva/slocomb/Slocomb.js"; import { NuforcRR0Mapper } from "./NuforcRR0Mapper.js"; import { OrganizationPlace } from "../../../place/OrganizationPlace.js"; function expectedSource(datasource, dataDate, caseNumber) { const url = new URL("sighting/?id=" + caseNumber, datasource.baseUrl).href; return { previousSourceRefs: [], events: [], url, title: "cas n° " + caseNumber, authors: datasource.authors, publication: { publisher: datasource.copyright, time: EdtfDate.fromDate(dataDate) } }; } describe("NuforcRR0Mapper", () => { let context; beforeEach(() => { context = rr0TestUtil.time.newHtmlContext("1/9/7/0/03/index.html"); context.time.setYear(1970); context.time.setMonth(3); }); test("fetch native cases", async () => { const items = await nuforcDatasource.fetch(context); expect(items).toEqual(nuforcTestCases); }); test("fetch and map as RR0 cases", async () => { const nuforcRR0Mapper = new NuforcRR0Mapper(rr0TestUtil.cityService, rr0TestUtil.countryService, nuforcDatasource.baseUrl.href, nuforcDatasource.copyright, nuforcDatasource.authors); const dataDate = new Date("2024-08-12 00:00:00 GMT+1"); const testCases = nuforcTestCases.sort((c1, c2) => c1.id < c2.id ? -1 : c1.id > c2.id ? 1 : 0); const mapped = testCases.map(sourceCase => nuforcRR0Mapper.map(context, sourceCase, dataDate)); const nativeCase1 = testCases[0]; const nativeCase1Time = nativeCase1.time; const nativeCase2 = testCases[1]; const nativeCase2Time = nativeCase2.time; const nativeCase3 = testCases[2]; const nativeCase3Time = nativeCase3.time; const nativeCase4 = testCases[3]; const nativeCase4Time = nativeCase4.time; const nativeCase5 = testCases[4]; const nativeCase5Time = nativeCase5.time; const nativeCase6 = testCases[5]; const nativeCase6Time = nativeCase6.time; const nativeCase7 = testCases[6]; const nativeCase7Time = nativeCase7.time; const expected = [ { type: "event", eventType: "sighting", events: [], time: nativeCase1Time, place: new OrganizationPlace(slocomb), description: nuforcRR0Mapper.getDescription(nativeCase1), sources: [expectedSource(nuforcDatasource, dataDate, nativeCase1.id)] }, { type: "event", eventType: "sighting", events: [], time: nativeCase2Time, place: new OrganizationPlace(castlegar), description: nuforcRR0Mapper.getDescription(nativeCase2), sources: [expectedSource(nuforcDatasource, dataDate, nativeCase2.id)] }, { type: "event", eventType: "sighting", events: [], time: nativeCase3Time, place: new OrganizationPlace(fortWorth), description: nuforcRR0Mapper.getDescription(nativeCase3), sources: [expectedSource(nuforcDatasource, dataDate, nativeCase3.id)] }, { type: "event", eventType: "sighting", events: [], time: nativeCase4Time, place: new OrganizationPlace(campPendleton), description: nuforcRR0Mapper.getDescription(nativeCase4), sources: [expectedSource(nuforcDatasource, dataDate, nativeCase4.id)] }, { type: "event", eventType: "sighting", events: [], time: nativeCase5Time, place: new OrganizationPlace(stPetersburg), description: nuforcRR0Mapper.getDescription(nativeCase5), sources: [expectedSource(nuforcDatasource, dataDate, nativeCase5.id)] }, { type: "event", eventType: "sighting", events: [], time: nativeCase6Time, place: new OrganizationPlace(monessen), description: nuforcRR0Mapper.getDescription(nativeCase6), sources: [expectedSource(nuforcDatasource, dataDate, nativeCase6.id)] }, { type: "event", eventType: "sighting", events: [], time: nativeCase7Time, place: new OrganizationPlace(bonneyLake), description: nuforcRR0Mapper.getDescription(nativeCase7), sources: [expectedSource(nuforcDatasource, dataDate, nativeCase7.id)] } ]; expect(mapped).toEqual(expected); }); });