Skip to content

Commit

Permalink
geojsontojson: Fix crash
Browse files Browse the repository at this point in the history
  • Loading branch information
jarofgreen committed Feb 10, 2023
1 parent 68ff302 commit 6471986
Show file tree
Hide file tree
Showing 8 changed files with 300 additions and 2 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

## [Unreleased]

### Fixed

- GeoJSON to JSON:
- [#69](https://github.com/Open-Telecoms-Data/lib-cove-ofds/issues/69) AttributeError: 'str' object has no attribute 'get'


## [0.7.0] - 2023-01-11

### Added
Expand Down
6 changes: 4 additions & 2 deletions libcoveofds/geojson.py
Original file line number Diff line number Diff line change
Expand Up @@ -381,8 +381,10 @@ def _process_span(self, geojson_feature_span: dict) -> None:
if geojson_feature_span.get("geometry"):
span["route"] = geojson_feature_span["geometry"]

span["start"] = span.get("start", {}).get("id")
span["end"] = span.get("end", {}).get("id")
if isinstance(span.get("start"), dict):
span["start"] = span["start"].get("id")
if isinstance(span.get("end"), dict):
span["end"] = span["end"].get("id")

self._networks[network_id]["spans"].append(span)

Expand Down
1 change: 1 addition & 0 deletions make_expected_test_data.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ libcoveofds gjtoj --outputmetafilename tests/fixtures/geojson_to_json/phase_fund
libcoveofds gjtoj --outputmetafilename tests/fixtures/geojson_to_json/phases_inconsistent_1.meta.expected.json tests/fixtures/geojson_to_json/phases_inconsistent_1.nodes.geo.json tests/fixtures/geojson_to_json/phases_inconsistent_1.spans.geo.json tests/fixtures/geojson_to_json/phases_inconsistent_1.expected.json
libcoveofds gjtoj --outputmetafilename tests/fixtures/geojson_to_json/organisations_inconsistent_1.meta.expected.json tests/fixtures/geojson_to_json/organisations_inconsistent_1.nodes.geo.json tests/fixtures/geojson_to_json/organisations_inconsistent_1.spans.geo.json tests/fixtures/geojson_to_json/organisations_inconsistent_1.expected.json
libcoveofds gjtoj --outputmetafilename tests/fixtures/geojson_to_json/network_inconsistent_1.meta.expected.json tests/fixtures/geojson_to_json/network_inconsistent_1.nodes.geo.json tests/fixtures/geojson_to_json/network_inconsistent_1.spans.geo.json tests/fixtures/geojson_to_json/network_inconsistent_1.expected.json
libcoveofds gjtoj --outputmetafilename tests/fixtures/geojson_to_json/bad_1.meta.expected.json tests/fixtures/geojson_to_json/bad_1.nodes.geo.json tests/fixtures/geojson_to_json/bad_1.spans.geo.json tests/fixtures/geojson_to_json/bad_1.expected.json

# JSON to GeoJSON
libcoveofds jtogj --outputmetafilename tests/fixtures/json_to_geojson/basic_1.expected.meta.json tests/fixtures/json_to_geojson/basic_1.json tests/fixtures/json_to_geojson/basic_1.expected.nodes.geo.json tests/fixtures/json_to_geojson/basic_1.expected.spans.geo.json
Expand Down
98 changes: 98 additions & 0 deletions tests/fixtures/geojson_to_json/bad_1.expected.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
{
"networks": [
{
"id": "a096d627-72e1-4f9b-b129-951b1737bff4",
"name": "Ghana Fibre Network",
"nodes": [
{
"id": "1",
"name": "Accra",
"location": {
"type": "Point",
"coordinates": [
-0.174,
5.625
]
}
},
{
"id": "2",
"name": "Kumasi",
"status": "operational",
"location": {
"type": "Point",
"coordinates": [
-1.628,
6.711
]
}
}
],
"spans": [
{
"id": "1",
"name": "Accra to Kumasi",
"start": "BAD - this should be a dict",
"end": "2",
"route": {
"type": "LineString",
"coordinates": [
[
-0.173,
5.626
],
[
-0.178,
5.807
],
[
-0.112,
5.971
],
[
-0.211,
5.963
],
[
-0.321,
6.17
],
[
-0.488,
6.29
],
[
-0.56,
6.421
],
[
-0.752,
6.533
],
[
-0.867,
6.607
],
[
-1.101,
6.585
],
[
-1.304,
6.623
],
[
-1.461,
6.727
],
[
-1.628,
6.713
]
]
}
}
]
}
]
}
61 changes: 61 additions & 0 deletions tests/fixtures/geojson_to_json/bad_1.meta.expected.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
{
"output_field_coverage": {
"/networks": {
"count": 1
},
"/networks/id": {
"count": 1
},
"/networks/name": {
"count": 1
},
"/networks/nodes": {
"count": 1
},
"/networks/nodes/id": {
"count": 2
},
"/networks/nodes/name": {
"count": 2
},
"/networks/nodes/location": {
"count": 2
},
"/networks/nodes/location/type": {
"count": 2
},
"/networks/nodes/location/coordinates": {
"count": 2
},
"/networks/nodes/status": {
"count": 1
},
"/networks/spans": {
"count": 1
},
"/networks/spans/id": {
"count": 1
},
"/networks/spans/name": {
"count": 1
},
"/networks/spans/start": {
"count": 1
},
"/networks/spans/end": {
"count": 1
},
"/networks/spans/route": {
"count": 1
},
"/networks/spans/route/type": {
"count": 1
},
"/networks/spans/route/coordinates": {
"count": 1
}
},
"inconsistent_phases_by_network_id": {},
"inconsistent_organisations_by_network_id": {},
"inconsistent_network_ids": []
}
42 changes: 42 additions & 0 deletions tests/fixtures/geojson_to_json/bad_1.nodes.geo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-0.174,
5.625
]
},
"properties": {
"id": "1",
"name": "Accra",
"network": {
"id": "a096d627-72e1-4f9b-b129-951b1737bff4",
"name": "Ghana Fibre Network"
}
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-1.628,
6.711
]
},
"properties": {
"id": "2",
"name": "Kumasi",
"status": "operational",
"network": {
"id": "a096d627-72e1-4f9b-b129-951b1737bff4",
"name": "Ghana Fibre Network"
}
}
}
]
}
86 changes: 86 additions & 0 deletions tests/fixtures/geojson_to_json/bad_1.spans.geo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
-0.173,
5.626
],
[
-0.178,
5.807
],
[
-0.112,
5.971
],
[
-0.211,
5.963
],
[
-0.321,
6.17
],
[
-0.488,
6.29
],
[
-0.56,
6.421
],
[
-0.752,
6.533
],
[
-0.867,
6.607
],
[
-1.101,
6.585
],
[
-1.304,
6.623
],
[
-1.461,
6.727
],
[
-1.628,
6.713
]
]
},
"properties": {
"id": "1",
"name": "Accra to Kumasi",
"start": "BAD - this should be a dict",
"end": {
"id": "2",
"name": "Kumasi",
"status": "operational",
"location": {
"type": "Point",
"coordinates": [
-1.628,
6.711
]
}
},
"network": {
"id": "a096d627-72e1-4f9b-b129-951b1737bff4",
"name": "Ghana Fibre Network"
}
}
}
]
}
2 changes: 2 additions & 0 deletions tests/test_geojson_to_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
("phases_inconsistent_1"),
("organisations_inconsistent_1"),
("network_inconsistent_1"),
# bad example
("bad_1"),
]


Expand Down

0 comments on commit 6471986

Please sign in to comment.