Example #1
0
    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)
Example #2
0
    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
Example #3
0
 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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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()
Example #7
0
    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)
Example #8
0
    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
Example #9
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)
Example #10
0
    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)