Initial Climate Mood Analysis project
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user