Skip to content

Commit

Permalink
feat: käytä velhon metadataa kuntiin, maakuntiin, elyihin ja liikenne…
Browse files Browse the repository at this point in the history
…vastuu-elyihin. Käytä ympäristökeskuksen tietoja vain ruotsinkielisiin käännöksiin.
  • Loading branch information
haapamakim committed Feb 14, 2023
1 parent 5aeb772 commit 3621672
Show file tree
Hide file tree
Showing 19 changed files with 346 additions and 315 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import * as personSearchUpdaterHandler from "../../src/personSearch/lambda/perso
import { aloitusKuulutusTilaManager } from "../../src/handler/tila/aloitusKuulutusTilaManager";
import { fileService } from "../../src/files/fileService";
import { replaceFieldsByName } from "../api/testFixtureRecorder";
import { CloudFrontStub, EmailClientStub, mockSaveProjektiToVelho, PDFGeneratorStub } from "../api/testUtil/util";
import { CloudFrontStub, defaultMocks, EmailClientStub, mockSaveProjektiToVelho, PDFGeneratorStub } from "../api/testUtil/util";
import { ImportAineistoMock } from "../api/testUtil/importAineistoMock";
import { ProjektiPaths } from "../../src/files/ProjektiPath";
import fs from "fs";
Expand All @@ -36,6 +36,7 @@ describe("AloitusKuulutus", () => {
const pdfGeneratorStub = new PDFGeneratorStub();
let awsCloudfrontInvalidationStub: CloudFrontStub;
let emailClientStub = new EmailClientStub();
defaultMocks();

before(async () => {
readUsersFromSearchUpdaterLambda = sinon.stub(personSearchUpdaterClient, "readUsersFromSearchUpdaterLambda");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import * as personSearchUpdaterHandler from "../../src/personSearch/lambda/perso
import { aloitusKuulutusTilaManager } from "../../src/handler/tila/aloitusKuulutusTilaManager";
import { fileService } from "../../src/files/fileService";
import { FixtureName, useProjektiTestFixture } from "../api/testFixtureRecorder";
import { CloudFrontStub, EmailClientStub, PDFGeneratorStub, SchedulerMock } from "../api/testUtil/util";
import { CloudFrontStub, defaultMocks, EmailClientStub, PDFGeneratorStub, SchedulerMock } from "../api/testUtil/util";
import { testPublicAccessToProjekti, testYllapitoAccessToProjekti } from "../api/testUtil/tests";
import { api } from "../api/apiClient";
import assert from "assert";
Expand All @@ -40,6 +40,7 @@ describe("AloitusKuulutuksen uudelleenkuuluttaminen", () => {
let importAineistoMock: ImportAineistoMock;
let schedulerMock: SchedulerMock;
let awsCloudfrontInvalidationStub: CloudFrontStub;
defaultMocks();

before(async () => {
schedulerMock = new SchedulerMock();
Expand Down
12 changes: 4 additions & 8 deletions backend/integrationtest/api/api.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { Status, TilasiirtymaToiminto, TilasiirtymaTyyppi } from "../../../commo
import * as sinon from "sinon";
import { personSearchUpdaterClient } from "../../src/personSearch/personSearchUpdaterClient";
import * as personSearchUpdaterHandler from "../../src/personSearch/lambda/personSearchUpdaterHandler";
import { openSearchClientYllapito } from "../../src/projektiSearch/openSearchClient";
import { UserFixture } from "../../test/fixture/userFixture";
import { userService } from "../../src/user";
import { cleanProjektiS3Files } from "../util/s3Util";
Expand All @@ -28,13 +27,14 @@ import {
} from "./testUtil/tests";
import {
CloudFrontStub,
EmailClientStub, mockKirjaamoOsoitteet,
defaultMocks,
EmailClientStub,
mockSaveProjektiToVelho,
PDFGeneratorStub,
SchedulerMock,
takePublicS3Snapshot,
takeS3Snapshot,
takeYllapitoS3Snapshot
takeYllapitoS3Snapshot,
} from "./testUtil/util";
import {
testImportNahtavillaoloAineistot,
Expand Down Expand Up @@ -65,7 +65,7 @@ describe("Api", () => {
const pdfGeneratorStub = new PDFGeneratorStub();
let importAineistoMock: ImportAineistoMock;
let schedulerMock: SchedulerMock;
mockKirjaamoOsoitteet();
defaultMocks();

before(async () => {
await setupLocalDatabase();
Expand All @@ -76,10 +76,6 @@ describe("Api", () => {
return await personSearchUpdaterHandler.handleEvent();
});

sinon.stub(openSearchClientYllapito, "query").resolves({ status: 200 });
sinon.stub(openSearchClientYllapito, "deleteDocument");
sinon.stub(openSearchClientYllapito, "putDocument");

importAineistoMock = new ImportAineistoMock();
awsCloudfrontInvalidationStub = new CloudFrontStub();
pdfGeneratorStub.init();
Expand Down
3 changes: 3 additions & 0 deletions backend/integrationtest/api/jatkopaatos.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { testCreateHyvaksymisPaatosWithAineistot } from "./testUtil/hyvaksymisPa
import { ImportAineistoMock } from "./testUtil/importAineistoMock";
import {
CloudFrontStub,
defaultMocks,
expectJulkinenNotFound,
expectToMatchSnapshot,
mockSaveProjektiToVelho,
Expand All @@ -41,6 +42,8 @@ describe("Jatkopäätökset", () => {
let awsCloudfrontInvalidationStub: CloudFrontStub;
let importAineistoMock: ImportAineistoMock;

defaultMocks();

before(async () => {
userFixture = new UserFixture(userService);
importAineistoMock = new ImportAineistoMock();
Expand Down
40 changes: 39 additions & 1 deletion backend/integrationtest/api/testUtil/util.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { cleanupGeneratedIds } from "./cleanUpFunctions";
import { fileService } from "../../../src/files/fileService";
import { AineistoInput, IlmoitettavaViranomainen, KirjaamoOsoite, VelhoAineisto } from "../../../../common/graphql/apiModel";
import { AineistoInput, IlmoitettavaViranomainen, Kieli, KirjaamoOsoite, VelhoAineisto } from "../../../../common/graphql/apiModel";
import { loadProjektiJulkinenFromDatabase } from "./tests";
import { UserFixture } from "../../../test/fixture/userFixture";
import * as sinon from "sinon";
Expand All @@ -24,6 +24,11 @@ import { SQSRecord } from "aws-lambda/trigger/sqs";
import assert from "assert";
import SMTPTransport from "nodemailer/lib/smtp-transport";
import { kirjaamoOsoitteetService } from "../../../src/kirjaamoOsoitteet/kirjaamoOsoitteetService";
import {
openSearchClientIlmoitustauluSyote,
openSearchClientJulkinen,
openSearchClientYllapito,
} from "../../../src/projektiSearch/openSearchClient";

const { expect } = require("chai");

Expand Down Expand Up @@ -231,3 +236,36 @@ export function mockKirjaamoOsoitteet(): void {
kirjaamoOsoitteetStub.resolves([osoite]);
});
}

function mockOpenSearch() {
const queryMocks: sinon.SinonStub[] = [];
mocha.before(() => {
queryMocks.push(sinon.stub(openSearchClientYllapito, "query"));
sinon.stub(openSearchClientYllapito, "deleteDocument");
sinon.stub(openSearchClientYllapito, "putDocument");
queryMocks.push(sinon.stub(openSearchClientIlmoitustauluSyote, "query"));
sinon.stub(openSearchClientIlmoitustauluSyote, "deleteDocument");
sinon.stub(openSearchClientIlmoitustauluSyote, "putDocument");

queryMocks.push(sinon.stub(openSearchClientJulkinen[Kieli.SUOMI], "query"));
sinon.stub(openSearchClientJulkinen[Kieli.SUOMI], "deleteDocument");
sinon.stub(openSearchClientJulkinen[Kieli.SUOMI], "putDocument");

queryMocks.push(sinon.stub(openSearchClientJulkinen[Kieli.RUOTSI], "query"));
sinon.stub(openSearchClientJulkinen[Kieli.RUOTSI], "deleteDocument");
sinon.stub(openSearchClientJulkinen[Kieli.RUOTSI], "putDocument");

queryMocks.push(sinon.stub(openSearchClientJulkinen[Kieli.SAAME], "query"));
sinon.stub(openSearchClientJulkinen[Kieli.SAAME], "deleteDocument");
sinon.stub(openSearchClientJulkinen[Kieli.SAAME], "putDocument");
});

mocha.beforeEach(() => {
queryMocks.forEach((qm) => qm.resolves({ status: 200 }));
});
}

export function defaultMocks() {
mockKirjaamoOsoitteet();
mockOpenSearch();
}
10 changes: 2 additions & 8 deletions backend/integrationtest/migraatio/migration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,7 @@ import { setupLocalDatabase } from "../util/databaseUtil";
import * as sinon from "sinon";
import { UserFixture } from "../../test/fixture/userFixture";
import { MOCKED_TIMESTAMP, useProjektiTestFixture } from "../api/testFixtureRecorder";
import {
CloudFrontStub,
expectJulkinenNotFound,
mockKirjaamoOsoitteet,
mockSaveProjektiToVelho,
PDFGeneratorStub,
} from "../api/testUtil/util";
import { CloudFrontStub, defaultMocks, expectJulkinenNotFound, mockSaveProjektiToVelho, PDFGeneratorStub } from "../api/testUtil/util";
import {
julkaiseSuunnitteluvaihe,
listDocumentsToImport,
Expand Down Expand Up @@ -42,7 +36,7 @@ describe("Migraatio", () => {
let importAineistoMock: ImportAineistoMock;
const pdfGeneratorStub = new PDFGeneratorStub();
let awsCloudfrontInvalidationStub: CloudFrontStub;
mockKirjaamoOsoitteet();
defaultMocks();

before(async () => {
await setupLocalDatabase();
Expand Down
4 changes: 2 additions & 2 deletions backend/src/ilmoitustauluSyote/ilmoitusKuulutus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ export type IlmoitusKuulutus = {
maakunnat?: number[];
vaylamuoto?: string[];
date: string;
elyt?: number[];
lelyt?: number[];
elyt?: string[];
lelyt?: string[];
};
14 changes: 9 additions & 5 deletions backend/src/ilmoitustauluSyote/ilmoitustauluSyoteAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { linkAloituskuulutus, linkHyvaksymisPaatos, linkSuunnitteluVaihe } from
import { parseDate } from "../util/dateUtil";
import { kuntametadata } from "../../../common/kuntametadata";
import { assertIsDefined } from "../util/assertions";
import { sortedUniq } from "lodash";

class IlmoitustauluSyoteAdapter {
adaptAloitusKuulutusJulkaisu(
Expand Down Expand Up @@ -128,11 +129,14 @@ class IlmoitustauluSyoteAdapter {
assertIsDefined(velho.kunnat);
assertIsDefined(velho.vaylamuoto);
const maakunnat = velho.maakunnat;
const elyt = maakunnat
?.map(kuntametadata.maakuntaForMaakuntaId)
.map((maakunta) => maakunta?.ely)
.filter((m) => !!m) as number[];
const lelyt = elyt?.map(kuntametadata.liikennevastuuElyIdFromElyId).filter((m) => !!m) as number[];
let elyt = velho.kunnat
?.map(kuntametadata.kuntaForKuntaId)
.map((kunta) => kunta?.ely)
.filter((m) => !!m) as string[];
if (elyt) {
elyt = sortedUniq(elyt);
}
const lelyt = velho.kunnat?.map(kuntametadata.liikennevastuuElyIdFromKuntaId).filter((m) => !!m) as string[];
return {
oid,
kunnat: velho.kunnat,
Expand Down
4 changes: 2 additions & 2 deletions backend/src/ilmoitustauluSyote/ilmoitustauluSyoteHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class IlmoitustauluSyoteHandler {
if (ely) {
if (elyId) {
terms.push({
term: { elyt: elyId },
term: { "elyt.keyword": elyId },
});
} else {
throw new NotFoundError("ELY " + ely + " on tuntematon");
Expand All @@ -33,7 +33,7 @@ class IlmoitustauluSyoteHandler {
if (lely) {
if (lelyId) {
terms.push({
term: { lelyt: lelyId },
term: { "lelyt.keyword": lelyId },
});
} else {
throw new NotFoundError("Liikenne-ELY " + lely + " on tuntematon");
Expand Down
15 changes: 13 additions & 2 deletions backend/src/velho/velhoAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ function getKunnat(data: ProjektiProjekti): number[] | undefined {
if (data.ominaisuudet.kunta) {
const kunnat: number[] = [];
data.ominaisuudet.kunta.forEach((kuntaVelhoKey) => {
const kuntaId = kuntametadata.parseNumberIdFromVelhoKey(kuntaVelhoKey as unknown as string);
const kuntaId = parseNumberIdFromVelhoKey(kuntaVelhoKey as unknown as string);
if (!kuntametadata.kuntaForKuntaId(kuntaId)) {
log.warn("Velhosta saatua kuntaa ei löydy: " + kuntaId);
} else {
Expand All @@ -178,7 +178,7 @@ function getMaakunnat(data: ProjektiProjekti) {
if (data.ominaisuudet.maakunta) {
const maakunnat: number[] = [];
data.ominaisuudet.maakunta.forEach((maakuntaVelhoKey) => {
const maakuntaId = kuntametadata.parseNumberIdFromVelhoKey(maakuntaVelhoKey as unknown as string);
const maakuntaId = parseNumberIdFromVelhoKey(maakuntaVelhoKey as unknown as string);
if (!kuntametadata.maakuntaForMaakuntaId(maakuntaId)) {
log.warn("Velhosta saatua maakuntaa ei löydy: " + maakuntaId);
} else {
Expand Down Expand Up @@ -363,3 +363,14 @@ function objectToString<T>(s: unknown): T | undefined {
// eslint-disable-next-line @typescript-eslint/ban-types
return s as unknown as T;
}

function parseNumberIdFromVelhoKey(key: string): number {
const match = key.match(/\w+\/[a-z]+(\d+)/);
if (match && match.length == 2) {
const val = Number.parseInt(match[1]);
if (!isNaN(val)) {
return val;
}
}
throw new Error("Could not parse number from key:" + key);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ Array [
Object {
"date": "2022-03-28T14:28:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely07",
],
"kieli": "SUOMI",
"kunnat": Array [
Expand All @@ -15,8 +14,9 @@ Array [
740,
],
"lelyt": Array [
1001,
1019,
"ely/ely08",
"ely/ely08",
"ely/ely08",
],
"maakunnat": Array [
1,
Expand All @@ -33,8 +33,7 @@ Array [
Object {
"date": "2022-03-28T14:28:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely07",
],
"kieli": "RUOTSI",
"kunnat": Array [
Expand All @@ -43,8 +42,9 @@ Array [
740,
],
"lelyt": Array [
1001,
1019,
"ely/ely08",
"ely/ely08",
"ely/ely08",
],
"maakunnat": Array [
1,
Expand All @@ -61,16 +61,14 @@ Array [
Object {
"date": "2022-06-20T11:54:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely01",
],
"kieli": "SUOMI",
"kunnat": Array [
245,
],
"lelyt": Array [
1001,
1019,
"ely/ely01",
],
"maakunnat": Array [
1,
Expand All @@ -87,16 +85,14 @@ Array [
Object {
"date": "2022-06-20T11:54:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely01",
],
"kieli": "RUOTSI",
"kunnat": Array [
245,
],
"lelyt": Array [
1001,
1019,
"ely/ely01",
],
"maakunnat": Array [
1,
Expand All @@ -113,15 +109,16 @@ Array [
Object {
"date": "2022-06-09T00:00:00+03:00",
"elyt": Array [
1001,
"ely/ely01",
],
"kieli": "SUOMI",
"kunnat": Array [
91,
92,
],
"lelyt": Array [
1001,
"ely/ely01",
"ely/ely01",
],
"maakunnat": Array [
1,
Expand All @@ -137,15 +134,16 @@ Array [
Object {
"date": "2022-06-09T00:00:00+03:00",
"elyt": Array [
1001,
"ely/ely01",
],
"kieli": "RUOTSI",
"kunnat": Array [
91,
92,
],
"lelyt": Array [
1001,
"ely/ely01",
"ely/ely01",
],
"maakunnat": Array [
1,
Expand Down
Loading

0 comments on commit 3621672

Please sign in to comment.