def test_constant_representation_rk(self):
        ''' ensures that all services' API clients are consistent through a simulated download->upload cycle '''
        #  runkeeper
        rkSvc = Service.FromID("runkeeper")
        act = TestTools.create_random_activity(rkSvc, rkSvc.SupportedActivities[0], withLaps=False)
        record = rkSvc._createUploadData(act)
        record["has_path"] = act.GPS  # RK helpfully adds a "has_path" entry if we have waypoints.
        returnedAct = rkSvc._populateActivity(record)
        act.Name = None  # RK doesn't have a "name" field, so it's fudged into the notes, but not really
        rkSvc._populateActivityWaypoints(record, returnedAct)
        # RK deliberately doesn't set timezone..
        returnedAct.EnsureTZ()
        self.assertActivitiesEqual(returnedAct, act)

        #  can't test Strava well this way, the upload and download formats are entirely different

        #  can't test endomondo - upload data all constructed in upload function.. needs refactor?
 ensures that all services' API clients are consistent through a simulated download->upload cycle 
tapiriik/testing/interchange.py