|
11 | 11 |
|
12 | 12 | import piexif |
13 | 13 | import pytest |
| 14 | +import pytz |
14 | 15 | from click.testing import CliRunner |
15 | 16 | from piexif._exceptions import InvalidImageDataError |
16 | 17 | from requests import Response |
@@ -942,19 +943,21 @@ def astimezone(self, _tz: (Optional[Any]) = None) -> NoReturn: |
942 | 943 |
|
943 | 944 | @pytest.mark.skipif(sys.platform == "win32", reason="does not run on windows") |
944 | 945 | @pytest.mark.skipif(sys.platform == "darwin", reason="does not run on mac") |
945 | | - def test_invalid_creation_year(self) -> None: |
| 946 | + def test_creation_date_without_century(self) -> None: |
946 | 947 | base_dir = os.path.join(self.fixtures_path, inspect.stack()[0][3]) |
947 | 948 |
|
948 | 949 | files_to_download = [("5/01/01", "IMG_7409.JPG")] |
949 | 950 |
|
950 | 951 | with mock.patch.object(PhotoAsset, "created", new_callable=mock.PropertyMock) as dt_mock: |
951 | 952 | # Can't mock `astimezone` because it's a readonly property, so have to |
952 | 953 | # create a new class that inherits from datetime.datetime |
953 | | - class NewDateTime(datetime.datetime): |
954 | | - def astimezone(self, _tz: (Optional[Any]) = None) -> NoReturn: |
955 | | - raise ValueError("Invalid date") |
| 954 | + # class NewDateTime(datetime.datetime): |
| 955 | + # def astimezone(self, _tz: (Optional[Any]) = None) -> NoReturn: |
| 956 | + # raise ValueError("Invalid date") |
956 | 957 |
|
957 | | - dt_mock.return_value = NewDateTime(5, 1, 1, 0, 0, 0) |
| 958 | + dt_mock.return_value = datetime.datetime( |
| 959 | + 5, 1, 1, 0, 0, 0, tzinfo=pytz.timezone("America/Los_Angeles") |
| 960 | + ) |
958 | 961 |
|
959 | 962 | data_dir, result = run_icloudpd_test( |
960 | 963 | self.assertEqual, |
@@ -985,12 +988,60 @@ def astimezone(self, _tz: (Optional[Any]) = None) -> NoReturn: |
985 | 988 | f"INFO Downloading the first original photo or video to {data_dir} ...", |
986 | 989 | self._caplog.text, |
987 | 990 | ) |
| 991 | + # self.assertIn( |
| 992 | + # "ERROR Could not convert photo created date to local timezone (0005-01-01 00:00:00)", |
| 993 | + # self._caplog.text, |
| 994 | + # ) |
| 995 | + self.assertIn( |
| 996 | + f"DEBUG Downloading {os.path.join(data_dir, os.path.normpath('5/01/01/IMG_7409.JPG'))}", |
| 997 | + self._caplog.text, |
| 998 | + ) |
| 999 | + self.assertIn("INFO All photos have been downloaded", self._caplog.text) |
| 1000 | + assert result.exit_code == 0 |
| 1001 | + |
| 1002 | + def test_creation_date_prior_1970(self) -> None: |
| 1003 | + base_dir = os.path.join(self.fixtures_path, inspect.stack()[0][3]) |
| 1004 | + |
| 1005 | + files_to_download = [("1965/01/01", "IMG_7409.JPG")] |
| 1006 | + |
| 1007 | + with mock.patch.object(PhotoAsset, "created", new_callable=mock.PropertyMock) as dt_mock: |
| 1008 | + # Can't mock `astimezone` because it's a readonly property, so have to |
| 1009 | + # create a new class that inherits from datetime.datetime |
| 1010 | + # class NewDateTime(datetime.datetime): |
| 1011 | + # def astimezone(self, _tz: (Optional[Any]) = None) -> NoReturn: |
| 1012 | + # raise ValueError("Invalid date") |
| 1013 | + |
| 1014 | + dt_mock.return_value = datetime.datetime(1965, 1, 1, 0, 0, 0) |
| 1015 | + |
| 1016 | + data_dir, result = run_icloudpd_test( |
| 1017 | + self.assertEqual, |
| 1018 | + self.root_path, |
| 1019 | + base_dir, |
| 1020 | + "listing_photos.yml", |
| 1021 | + [], |
| 1022 | + files_to_download, |
| 1023 | + [ |
| 1024 | + "--username", |
| 1025 | + "jdoe@gmail.com", |
| 1026 | + "--password", |
| 1027 | + "password1", |
| 1028 | + "--recent", |
| 1029 | + "1", |
| 1030 | + "--skip-live-photos", |
| 1031 | + "--no-progress-bar", |
| 1032 | + ], |
| 1033 | + ) |
| 1034 | + |
| 1035 | + self.assertIn( |
| 1036 | + "DEBUG Looking up all photos and videos...", |
| 1037 | + self._caplog.text, |
| 1038 | + ) |
988 | 1039 | self.assertIn( |
989 | | - "ERROR Could not convert photo created date to local timezone (0005-01-01 00:00:00)", |
| 1040 | + f"INFO Downloading the first original photo or video to {data_dir} ...", |
990 | 1041 | self._caplog.text, |
991 | 1042 | ) |
992 | 1043 | self.assertIn( |
993 | | - f"DEBUG Downloading {os.path.join(data_dir, os.path.normpath('5/01/01/IMG_7409.JPG'))}", |
| 1044 | + f"DEBUG Downloading {os.path.join(data_dir, os.path.normpath('1965/01/01/IMG_7409.JPG'))}", |
994 | 1045 | self._caplog.text, |
995 | 1046 | ) |
996 | 1047 | self.assertIn("INFO All photos have been downloaded", self._caplog.text) |
|
0 commit comments