Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix bug i hent_punkt #721

Merged
merged 2 commits into from
Dec 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion fire/api/firedb/hent.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,19 @@ def hent_punkt(self, ident: str) -> Punkt:
"""
Returnerer det første punkt der matcher 'ident'

Prioriterer punkter som matcher 1:1.
Hvis intet punkt findes udsendes en NoResultFound exception.
"""
if ident not in self._cache["punkt"].keys():
punkt = self.hent_punkter(ident)[0]
punkter = self.hent_punkter(ident)
for pkt in punkter:
if ident in pkt.identer:
punkt = pkt
break
else:
punkt = punkter[0]
ident = punkt.ident

for idt in punkt.identer:
self._cache["punkt"][idt] = punkt
self._cache["punkt"][punkt.id] = punkt
Expand Down
6 changes: 6 additions & 0 deletions test/sql/testdata.sql
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,12 @@ Insert into PUNKTINFO (REGISTRERINGFRA,REGISTRERINGTIL,SAGSEVENTFRAID,INFOTYPEID
Insert into PUNKTINFO (REGISTRERINGFRA,REGISTRERINGTIL,SAGSEVENTFRAID,INFOTYPEID,TAL,TEKST,PUNKTID) values (to_timestamp_tz('2015-11-25 13:23:00','YYYY-MM-DD HH24:MI:SS'),null,'sagevent-aaaa-bbbb-0001-000000000002',347,null,'RDO1','4b4c5c17-32e8-495d-a598-cdf42e0892de');
Insert into PUNKTINFO (REGISTRERINGFRA,REGISTRERINGTIL,SAGSEVENTFRAID,INFOTYPEID,TAL,TEKST,PUNKTID) values (to_timestamp_tz('2015-11-25 13:23:00','YYYY-MM-DD HH24:MI:SS'),null,'sagevent-aaaa-bbbb-0001-000000000002',346,null,'K-63-05436','4b4c5c17-32e8-495d-a598-cdf42e0892de');
Insert into PUNKTINFO (REGISTRERINGFRA,REGISTRERINGTIL,SAGSEVENTFRAID,INFOTYPEID,TAL,TEKST,PUNKTID) values (to_timestamp_tz('1991-02-03 00:34:00','YYYY-MM-DD HH24:MI:SS'),null,'sagevent-aaaa-bbbb-0001-000000000002',346,null,'K-63-09944','61c61847-ed54-4969-b94e-df74fd63f108');

-- Nedenstående punkt, "GL RDO1" indsættes for at teste håndtering af dupletter blandt GNSS-identer i DK,
-- GL og FO. Der er desværre et par punkter i FIRE som deler ident og kun adskilles af den foranstillede
-- landekode
Insert into PUNKTINFO (REGISTRERINGFRA,REGISTRERINGTIL,SAGSEVENTFRAID,INFOTYPEID,TAL,TEKST,PUNKTID) values (to_timestamp_tz('1991-02-03 00:34:01','YYYY-MM-DD HH24:MI:SS'),null,'sagevent-aaaa-bbbb-0001-000000000002',347,null,'GL RDO1','61c61847-ed54-4969-b94e-df74fd63f108');

Insert into PUNKTINFO (REGISTRERINGFRA,REGISTRERINGTIL,SAGSEVENTFRAID,INFOTYPEID,TAL,TEKST,PUNKTID) values (to_timestamp_tz('1991-02-03 00:34:00','YYYY-MM-DD HH24:MI:SS'),null,'sagevent-aaaa-bbbb-0001-000000000002',346,null,'K-63-09946','67e3987a-dc6b-49ee-8857-417ef35777af');
Insert into PUNKTINFO (REGISTRERINGFRA,REGISTRERINGTIL,SAGSEVENTFRAID,INFOTYPEID,TAL,TEKST,PUNKTID) values (to_timestamp_tz('2015-11-25 13:23:00','YYYY-MM-DD HH24:MI:SS'),null,'sagevent-aaaa-bbbb-0001-000000000002',348,null,'G.I.2222','67e3987a-dc6b-49ee-8857-417ef35777af');
Insert into PUNKTINFO (REGISTRERINGFRA,REGISTRERINGTIL,SAGSEVENTFRAID,INFOTYPEID,TAL,TEKST,PUNKTID) values (to_timestamp_tz('1946-07-01 00:00:00','YYYY-MM-DD HH24:MI:SS'),null,'sagevent-aaaa-bbbb-0001-000000000002',346,null,'K-63-09191','7a45fb99-0772-4be5-9182-d651d429b3b7');
Expand Down
15 changes: 14 additions & 1 deletion test/test_punkt.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,19 @@ def test_hent_punkt(firedb: FireDb, punkt: Punkt):
s = p.sagsevent
assert isinstance(s, Sagsevent)

def test_hent_punkt(firedb: FireDb):
"""
Test at `hent_punkt()` returnerer det eksakte match i tilfælde af der
findes ens identer, hvor et eller flere har foranstillet landekode.
Eksempelvis "SAND" og "FO SAND". Her tester vi med "RDO1" og "GL RDO1"
der er opfundet til lejligheden.
"""
punkt = firedb.hent_punkt("RDO1")
assert punkt.gnss_navn == "RDO1"

punkt = firedb.hent_punkt("GL RDO1")
assert punkt.gnss_navn == "GL RDO1"


def test_hent_alle_punkter(firedb: FireDb):
p = firedb.hent_alle_punkter()
Expand Down Expand Up @@ -188,7 +201,7 @@ def test_soeg_punkter(firedb: FireDb):
punkter = firedb.soeg_punkter("%rd%")

for punkt in punkter:
assert punkt.ident in ("RDIO", "RDO1")
assert punkt.ident in ("RDIO", "RDO1", "GL RDO1")

kun_et_punkt = firedb.soeg_punkter("K-63-%", antal=1)
assert len(kun_et_punkt) == 1
Expand Down