def test_download_with_files_not_found_and_some_backed_up( self, client_activities, tmp_path): activities = client_activities.list_activities() assert len(list(tmp_path.glob("*"))) == 0 with client_activities: # Fake that GPX was not found for all activities for activity_entry in activities[:5]: activity = Activity.from_garmin_activity_list_entry( activity_entry) for fmt in DEFAULT_FORMATS: if fmt == "gpx": with open(str(Path(tmp_path) / ".not_found"), mode="a") as not_found: not_found.write( str( activity.get_export_filepath( tmp_path, fmt).name) + "\n") else: activity.download(client_activities, fmt, tmp_path) assert len(list( tmp_path.glob("*"))) == 5 * (len(DEFAULT_FORMATS) - 1) + 1 downloader = ActivitiesDownloader(client_activities, tmp_path) downloader.download_all(Activities.list(client_activities)) assert (len(list(tmp_path.glob("*"))) == len(activities) * (len(DEFAULT_FORMATS) - 1) + 5 + 1)
def test_list(self, client_activities): activities = Activities.list(client_activities) assert isinstance(activities, Activities) assert activities[0].id == 2532452238 assert activities[0].type == "walking" assert activities[0].name == "Random walking" assert len(activities) == 10
def test_download_with_backup_from_scratch(self, client_activities, tmp_path): assert len(list(tmp_path.glob("*"))) == 0 with client_activities: # Discover what should be downloaded downloader = ActivitiesDownloader(client_activities, tmp_path) activities = Activities.list(client_activities) downloader.download_all(activities) assert len(list( tmp_path.glob("*"))) == len(activities) * len(DEFAULT_FORMATS)
def test_discover_formats_to_download_with_backup_from_scratch( self, client_activities, tmp_path): activities = client_activities.list_activities() assert len(activities) == 10 with client_activities: downloader = ActivitiesDownloader(client_activities, tmp_path) to_download = downloader._discover_formats_to_download( Activities.list(client_activities)) assert len(to_download) == 10 for activity, formats in to_download.items(): assert set(formats) == set(DEFAULT_FORMATS)
def test_discover_formats_to_download_with_incremental_backup( self, client_activities, tmp_path): activities = client_activities.list_activities() assert len(activities) == 10 with client_activities: activity = Activity.from_garmin_activity_list_entry(activities[0]) for fmt in DEFAULT_FORMATS: activity.download(client_activities, fmt, tmp_path) downloader = ActivitiesDownloader(client_activities, tmp_path) to_download = downloader._discover_formats_to_download( Activities.list(client_activities)) assert len(to_download) == 9 for activity, formats in to_download.items(): assert set(formats) == set(DEFAULT_FORMATS)
def test_download_manually_uploaded_gpx(self, client_activities, tmp_path): with client_activities: activities = Activities.list(client_activities) activity = activities[1] fmt = "original" activity.download(client_activities, fmt, tmp_path) # A GPX should have been downloaded expected_downloaded_file_path = activity.get_export_filepath( tmp_path, "gpx" ) assert expected_downloaded_file_path.exists() # The default FIT format for 'original' should not exist and be listed on .not_found fit_file_path = activity.get_export_filepath(tmp_path, "original") assert not fit_file_path.exists() assert (Path(tmp_path) / ".not_found").exists() assert fit_file_path.name in (Path(tmp_path) / ".not_found").read_text()
def test_download_with_backup_up_to_date(self, client_activities, tmp_path): activities = client_activities.list_activities() assert len(list(tmp_path.glob("*"))) == 0 with client_activities: # Download everything manually first for activity_entry in activities: activity = Activity.from_garmin_activity_list_entry( activity_entry) for fmt in DEFAULT_FORMATS: activity.download(client_activities, fmt, tmp_path) assert len(list( tmp_path.glob("*"))) == len(activities) * len(DEFAULT_FORMATS) downloader = ActivitiesDownloader(client_activities, tmp_path) downloader.download_all(Activities.list(client_activities)) assert len(list( tmp_path.glob("*"))) == len(activities) * len(DEFAULT_FORMATS)
def test_discover_formats_to_download_with_backup_up_to_date( self, client_activities, tmp_path): activities = client_activities.list_activities() assert len(activities) == 10 with client_activities: # Download everything manually first for activity_entry in activities: activity = Activity.from_garmin_activity_list_entry( activity_entry) for fmt in DEFAULT_FORMATS: activity.download(client_activities, fmt, tmp_path) # Discover what should be downloaded downloader = ActivitiesDownloader(client_activities, tmp_path) to_download = downloader._discover_formats_to_download( Activities.list(client_activities)) assert len(to_download) == 0
def test_discover_formats_to_download_with_not_found( self, client_activities, tmp_path): activities = client_activities.list_activities() assert len(activities) == 10 with client_activities: # Download one activity manually first activity = Activity.from_garmin_activity_list_entry(activities[0]) (tmp_path / ".not_found").write_text( str(activity.get_export_filepath(tmp_path, "gpx"))) # Discover what should be downloaded downloader = ActivitiesDownloader(client_activities, tmp_path) to_download = downloader._discover_formats_to_download( Activities.list(client_activities)) assert len(to_download) == 10 for activity, formats in to_download.items(): if len(formats) < len(DEFAULT_FORMATS): assert "gpx" not in formats assert set(formats) <= set(DEFAULT_FORMATS) else: assert set(formats) == set(DEFAULT_FORMATS)
def test_download_with_files_not_found(self, client_activities, tmp_path): activities = client_activities.list_activities() assert len(list(tmp_path.glob("*"))) == 0 with client_activities: # Fake that GPX was not found for all activities for activity_entry in activities: activity = Activity.from_garmin_activity_list_entry( activity_entry) for fmt in DEFAULT_FORMATS: if fmt == "gpx": with open(str(Path(tmp_path) / ".not_found"), mode="a") as not_found: not_found.write( str( activity.get_export_filepath( tmp_path, fmt).name) + "\n") assert ( len(list(tmp_path.glob("*"))) == 1 ), "There should be a '.not_found' file in the backup directory" downloader = ActivitiesDownloader(client_activities, tmp_path) downloader.download_all(Activities.list(client_activities)) assert (len(list(tmp_path.glob("*"))) == len(activities) * (len(DEFAULT_FORMATS) - 1) + 1)