Skip to content

Commit

Permalink
Update add image form and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
zacdezgeo committed Feb 16, 2025
1 parent 18db1d0 commit e08e0b5
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 44 deletions.
2 changes: 2 additions & 0 deletions ee_plugin/ui/forms/add_ee_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
)


# TODO: iface is not used
def form(
iface: gui.QgisInterface, accepted: Optional[Callable] = None, **dialog_kwargs
) -> QtWidgets.QDialog:
Expand Down Expand Up @@ -58,6 +59,7 @@ def form(
return dialog


# TODO: message logging
def callback(image_id: str = None, viz_params: dict = None):
"""Fetch and add the selected Earth Engine dataset to the map with user-defined visualization parameters."""
if not image_id:
Expand Down
1 change: 1 addition & 0 deletions ee_plugin/ui/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ def get_dialog_values(dialog: QDialog) -> dict:
QgsDateEdit: lambda w: None if w.isNull() else w.findChild(QLineEdit).text(),
QCheckBox: lambda w: w.isChecked(),
QgsColorButton: lambda w: w.color().name(),
QTextEdit: lambda w: w.toPlainText(),
QgsExtentGroupBox: widget_parsers.qgs_extent_to_bbox,
}
values = {}
Expand Down
3 changes: 2 additions & 1 deletion test/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ def load_ee_plugin(qgis_app, setup_ee, ee_config):
yield qgis_app


@fixture(autouse=True)
@fixture(autouse=True, scope="function")
def clean_qgis_iface(qgis_iface: QgisInterface):
qgis_iface.mapCanvas().setLayers([])
yield qgis_iface
84 changes: 42 additions & 42 deletions test/test_form_add_ee_image.py
Original file line number Diff line number Diff line change
@@ -1,81 +1,81 @@
from qgis.PyQt import QtWidgets

from ee_plugin.ui.utils import get_values
from ee_plugin.ui.forms.add_ee_image import form, _load_gee_layer
from ee_plugin.ui.utils import get_dialog_values
from ee_plugin.ui.forms.add_ee_image import form, callback


def test_add_gee_layer_dialog(qgis_iface_clean):
dialog = form(qgis_iface_clean)
dialog.findChild(QtWidgets.QLineEdit, "imageId").setText("COPERNICUS/S2")
def test_add_gee_layer_dialog(clean_qgis_iface):
dialog = form(clean_qgis_iface)
dialog.findChild(QtWidgets.QLineEdit, "image_id").setText("COPERNICUS/S2")

dialog.findChild(QtWidgets.QTextEdit, "vizParams").setText(
dialog.findChild(QtWidgets.QTextEdit, "viz_params").setText(
'{"min": 0, "max": 4000, "palette": ["006633", "E5FFCC", "662A00"]}'
)

assert get_values(dialog) == {
"imageId": "COPERNICUS/S2",
"vizParams": '{"min": 0, "max": 4000, "palette": ["006633", "E5FFCC", "662A00"]}',
assert get_dialog_values(dialog) == {
"image_id": "COPERNICUS/S2",
"viz_params": '{"min": 0, "max": 4000, "palette": ["006633", "E5FFCC", "662A00"]}',
}


def test_load_gee_layer_srtm(qgis_iface_clean):
dialog = form(qgis_iface_clean)
dialog.findChild(QtWidgets.QLineEdit, "imageId").setText("USGS/SRTMGL1_003")
def test_load_gee_layer_srtm(clean_qgis_iface):
dialog = form(clean_qgis_iface)
dialog.findChild(QtWidgets.QLineEdit, "image_id").setText("USGS/SRTMGL1_003")

dialog.findChild(QtWidgets.QTextEdit, "vizParams").setText(
dialog.findChild(QtWidgets.QTextEdit, "viz_params").setText(
'{"min": 0, "max": 4000, "palette": ["006633", "E5FFCC", "662A00"]}'
)

assert get_values(dialog) == {
"imageId": "USGS/SRTMGL1_003",
"vizParams": '{"min": 0, "max": 4000, "palette": ["006633", "E5FFCC", "662A00"]}',
assert get_dialog_values(dialog) == {
"image_id": "USGS/SRTMGL1_003",
"viz_params": '{"min": 0, "max": 4000, "palette": ["006633", "E5FFCC", "662A00"]}',
}

_load_gee_layer(dialog)
callback(**get_dialog_values(dialog))

assert len(qgis_iface_clean.mapCanvas().layers()) == 1
assert qgis_iface_clean.mapCanvas().layers()[0].name() == "USGS/SRTMGL1_003"
assert qgis_iface_clean.mapCanvas().layers()[0].dataProvider().name() == "EE"
assert len(clean_qgis_iface.mapCanvas().layers()) == 1
assert clean_qgis_iface.mapCanvas().layers()[0].name() == "USGS/SRTMGL1_003"
assert clean_qgis_iface.mapCanvas().layers()[0].dataProvider().name() == "EE"


def test_converting_viz_params_json(qgis_iface_clean):
dialog = form(qgis_iface_clean)
dialog.findChild(QtWidgets.QLineEdit, "imageId").setText("USGS/SRTMGL1_003")
def test_converting_viz_params_json(clean_qgis_iface):
dialog = form(clean_qgis_iface)
dialog.findChild(QtWidgets.QLineEdit, "image_id").setText("USGS/SRTMGL1_003")

# single quotes should get replaced to double quotes
# by _load_gee_layer, so dialog still has single quotes
dialog.findChild(QtWidgets.QTextEdit, "vizParams").setText(
dialog.findChild(QtWidgets.QTextEdit, "viz_params").setText(
"{'min': 0, 'max': 4000, 'palette': ['006633', 'E5FFCC', '662A00']}"
)

_load_gee_layer(dialog)
callback(**get_dialog_values(dialog))

assert len(qgis_iface_clean.mapCanvas().layers()) == 1
assert qgis_iface_clean.mapCanvas().layers()[0].name() == "USGS/SRTMGL1_003"
assert qgis_iface_clean.mapCanvas().layers()[0].dataProvider().name() == "EE"
assert len(clean_qgis_iface.mapCanvas().layers()) == 1
assert clean_qgis_iface.mapCanvas().layers()[0].name() == "USGS/SRTMGL1_003"
assert clean_qgis_iface.mapCanvas().layers()[0].dataProvider().name() == "EE"


def test_invalid_vis_params(qgis_iface_clean):
dialog = form(qgis_iface_clean)
dialog.findChild(QtWidgets.QLineEdit, "imageId").setText("USGS/SRTMGL1_003")
def test_invalid_viz_params(clean_qgis_iface):
dialog = form(clean_qgis_iface)
dialog.findChild(QtWidgets.QLineEdit, "image_id").setText("USGS/SRTMGL1_003")

dialog.findChild(QtWidgets.QTextEdit, "vizParams").setText(
dialog.findChild(QtWidgets.QTextEdit, "viz_params").setText(
"not a valid JSON string"
)

_load_gee_layer(dialog)
callback(**get_dialog_values(dialog))

assert len(qgis_iface_clean.mapCanvas().layers()) == 0
assert len(clean_qgis_iface.mapCanvas().layers()) == 0


def test_empty_vis_params(qgis_iface_clean):
dialog = form(qgis_iface_clean)
dialog.findChild(QtWidgets.QLineEdit, "imageId").setText("USGS/SRTMGL1_003")
def test_empty_viz_params(clean_qgis_iface):
dialog = form(clean_qgis_iface)
dialog.findChild(QtWidgets.QLineEdit, "image_id").setText("USGS/SRTMGL1_003")

dialog.findChild(QtWidgets.QTextEdit, "vizParams").setText("")
dialog.findChild(QtWidgets.QTextEdit, "viz_params").setText("")

_load_gee_layer(dialog)
callback(**get_dialog_values(dialog))

assert len(qgis_iface_clean.mapCanvas().layers()) == 1
assert qgis_iface_clean.mapCanvas().layers()[0].name() == "USGS/SRTMGL1_003"
assert qgis_iface_clean.mapCanvas().layers()[0].dataProvider().name() == "EE"
assert len(clean_qgis_iface.mapCanvas().layers()) == 1
assert clean_qgis_iface.mapCanvas().layers()[0].name() == "USGS/SRTMGL1_003"
assert clean_qgis_iface.mapCanvas().layers()[0].dataProvider().name() == "EE"
2 changes: 1 addition & 1 deletion test/test_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,5 +131,5 @@ def test_callback(qgis_iface):
)

assert len(qgis_iface.mapCanvas().layers()) == 1
assert qgis_iface.mapCanvas().layers()[0].name() == "FC: SGS/WBD/2017/HUC06"
assert qgis_iface.mapCanvas().layers()[0].name() == "FC: USGS/WBD/2017/HUC06"
assert qgis_iface.mapCanvas().layers()[0].dataProvider().name() == "EE"

0 comments on commit e08e0b5

Please sign in to comment.