171 lines
5.7 KiB
Python
171 lines
5.7 KiB
Python
from __future__ import annotations
|
|
|
|
import sys
|
|
import unittest
|
|
from pathlib import Path
|
|
from tempfile import TemporaryDirectory
|
|
from unittest.mock import patch
|
|
|
|
|
|
SCRIPTS_DIR = Path(__file__).resolve().parents[1] / "scripts"
|
|
sys.path.insert(0, str(SCRIPTS_DIR))
|
|
|
|
import download_nsrdb_county_polygon_cloud_archives as cloud_download # noqa: E402
|
|
import download_nsrdb_county_polygon_ghi_archives as ghi_download # noqa: E402
|
|
import request_nsrdb_county_polygon_cloud_archives as cloud_request # noqa: E402
|
|
import request_nsrdb_county_polygon_ghi_archives as ghi_request # noqa: E402
|
|
|
|
|
|
class PolygonCloudWrapperTests(unittest.TestCase):
|
|
def test_request_uses_cloud_artifact_label(self) -> None:
|
|
args = cloud_request.polygon_request.parse_args(cloud_request.DEFAULT_ARGS)
|
|
with TemporaryDirectory() as temp_dir:
|
|
args.response_dir = Path(temp_dir)
|
|
path = cloud_request.polygon_request.response_path(
|
|
args,
|
|
"01001",
|
|
"goes-tmy",
|
|
"tmy-2024",
|
|
)
|
|
|
|
self.assertEqual(
|
|
path.name,
|
|
"01001_goes-tmy_tmy-2024_cloud_response.json",
|
|
)
|
|
|
|
def test_request_reuses_legacy_cloud_response_name(self) -> None:
|
|
args = cloud_request.polygon_request.parse_args(cloud_request.DEFAULT_ARGS)
|
|
with TemporaryDirectory() as temp_dir:
|
|
args.response_dir = Path(temp_dir)
|
|
legacy_path = args.response_dir / "01001_goes-tmy_tmy-2024_ghi_response.json"
|
|
legacy_path.touch()
|
|
|
|
path = cloud_request.polygon_request.response_path(
|
|
args,
|
|
"01001",
|
|
"goes-tmy",
|
|
"tmy-2024",
|
|
)
|
|
|
|
self.assertEqual(path, legacy_path)
|
|
|
|
def test_request_user_arguments_override_cloud_defaults(self) -> None:
|
|
args = cloud_request.polygon_request.parse_args(
|
|
[
|
|
*cloud_request.DEFAULT_ARGS,
|
|
"--attributes",
|
|
"ghi",
|
|
"--requests-csv",
|
|
"custom.csv",
|
|
]
|
|
)
|
|
|
|
self.assertEqual(args.attributes, "ghi")
|
|
self.assertEqual(args.requests_csv, Path("custom.csv"))
|
|
|
|
def test_request_wrapper_passes_cloud_defaults_and_user_arguments(self) -> None:
|
|
with (
|
|
patch.object(sys, "argv", ["cloud-request", "--limit", "12"]),
|
|
patch.object(cloud_request.polygon_request, "main") as shared_main,
|
|
):
|
|
cloud_request.main()
|
|
|
|
shared_main.assert_called_once_with(
|
|
[*cloud_request.DEFAULT_ARGS, "--limit", "12"],
|
|
description=cloud_request.__doc__,
|
|
)
|
|
|
|
def test_download_wrapper_passes_cloud_defaults_and_user_arguments(self) -> None:
|
|
with (
|
|
patch.object(sys, "argv", ["cloud-download", "--overwrite"]),
|
|
patch.object(cloud_download.polygon_download, "main") as shared_main,
|
|
):
|
|
cloud_download.main()
|
|
|
|
shared_main.assert_called_once_with(
|
|
[*cloud_download.DEFAULT_ARGS, "--overwrite"],
|
|
description=cloud_download.__doc__,
|
|
)
|
|
|
|
def test_download_user_arguments_override_cloud_defaults(self) -> None:
|
|
args = cloud_download.polygon_download.parse_args(
|
|
[
|
|
*cloud_download.DEFAULT_ARGS,
|
|
"--output-dir",
|
|
"custom-archives",
|
|
]
|
|
)
|
|
|
|
self.assertEqual(args.output_dir, Path("custom-archives"))
|
|
|
|
|
|
class PolygonGhiWrapperTests(unittest.TestCase):
|
|
def test_request_uses_ghi_artifact_label(self) -> None:
|
|
args = ghi_request.polygon_request.parse_args(ghi_request.DEFAULT_ARGS)
|
|
with TemporaryDirectory() as temp_dir:
|
|
args.response_dir = Path(temp_dir)
|
|
path = ghi_request.polygon_request.response_path(
|
|
args,
|
|
"01001",
|
|
"goes-tmy",
|
|
"tmy-2024",
|
|
)
|
|
|
|
self.assertEqual(
|
|
path.name,
|
|
"01001_goes-tmy_tmy-2024_ghi_response.json",
|
|
)
|
|
|
|
def test_request_wrapper_passes_ghi_defaults_and_user_arguments(self) -> None:
|
|
with (
|
|
patch.object(sys, "argv", ["ghi-request", "--limit", "12"]),
|
|
patch.object(ghi_request.polygon_request, "main") as shared_main,
|
|
):
|
|
ghi_request.main()
|
|
|
|
shared_main.assert_called_once_with(
|
|
[*ghi_request.DEFAULT_ARGS, "--limit", "12"],
|
|
description=ghi_request.__doc__,
|
|
)
|
|
|
|
def test_request_user_arguments_override_ghi_defaults(self) -> None:
|
|
args = ghi_request.polygon_request.parse_args(
|
|
[
|
|
*ghi_request.DEFAULT_ARGS,
|
|
"--attributes",
|
|
"ghi,clearsky_ghi",
|
|
"--requests-csv",
|
|
"custom.csv",
|
|
]
|
|
)
|
|
|
|
self.assertEqual(args.attributes, "ghi,clearsky_ghi")
|
|
self.assertEqual(args.requests_csv, Path("custom.csv"))
|
|
|
|
def test_download_wrapper_passes_ghi_defaults_and_user_arguments(self) -> None:
|
|
with (
|
|
patch.object(sys, "argv", ["ghi-download", "--overwrite"]),
|
|
patch.object(ghi_download.polygon_download, "main") as shared_main,
|
|
):
|
|
ghi_download.main()
|
|
|
|
shared_main.assert_called_once_with(
|
|
[*ghi_download.DEFAULT_ARGS, "--overwrite"],
|
|
description=ghi_download.__doc__,
|
|
)
|
|
|
|
def test_download_user_arguments_override_ghi_defaults(self) -> None:
|
|
args = ghi_download.polygon_download.parse_args(
|
|
[
|
|
*ghi_download.DEFAULT_ARGS,
|
|
"--output-dir",
|
|
"custom-archives",
|
|
]
|
|
)
|
|
|
|
self.assertEqual(args.output_dir, Path("custom-archives"))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|