Ejemplo n.º 1
0
    def test_folder_move_ops(self):
        test_objs = {}
        for i, name in enumerate(['wpt1', 'wpt2']):
            wpt = self.api.create_object(
                'waypoint',
                util.make_waypoint(_test_name(name), 45.0 + i, -122.0 - i))
            test_objs[name] = wpt
        for name in ('folder', 'subfolder'):
            fld = self.api.create_object('folder',
                                         util.make_folder(_test_name(name)))
            test_objs[name] = fld

        self.api.add_object_to_folder(test_objs['folder']['id'], 'waypoint',
                                      test_objs['wpt1']['id'])
        self.api.add_object_to_folder(test_objs['subfolder']['id'], 'waypoint',
                                      test_objs['wpt2']['id'])

        # Make sure the waypoints are in their respective folders
        folders = self.api.list_objects('folder')
        folder = apiclient.find(folders, 'id', test_objs['folder']['id'])
        self.assertEqual([test_objs['wpt1']['id']], folder['waypoints'])
        subfolder = apiclient.find(folders, 'id', test_objs['subfolder']['id'])
        self.assertEqual([test_objs['wpt2']['id']], subfolder['waypoints'])

        self.api.add_object_to_folder(test_objs['folder']['id'], 'folder',
                                      test_objs['subfolder']['id'])

        # Make sure the waypoints are in their respective folders, and that
        # the subfolder is in the main folder
        folders = self.api.list_objects('folder')
        folder = apiclient.find(folders, 'id', test_objs['folder']['id'])
        self.assertEqual([test_objs['wpt1']['id']], folder['waypoints'])
        self.assertEqual([test_objs['subfolder']['id']], folder['children'])
        subfolder = apiclient.find(folders, 'id', test_objs['subfolder']['id'])
        self.assertEqual([test_objs['wpt2']['id']], subfolder['waypoints'])

        # Move a waypoint out of its folder
        self.api.remove_object_from_folder(test_objs['subfolder']['id'],
                                           'waypoint', test_objs['wpt2']['id'])
        folders = self.api.list_objects('folder')
        subfolder = apiclient.find(folders, 'id', test_objs['subfolder']['id'])
        self.assertEqual([], subfolder['waypoints'])

        # Delete the top-level folder and make sure everything is gone,
        # not including wpt2, which was moved out to the root
        self.api.delete_object('folder', test_objs['folder']['id'])
        folders = self.api.list_objects('folder')
        self.assertRaises(apiclient.NotFound, apiclient.find, folders, 'id',
                          test_objs['folder']['id'])
        self.assertRaises(apiclient.NotFound, apiclient.find, folders, 'id',
                          test_objs['subfolder']['id'])
        waypoints = self.api.list_objects('waypoint')
        self.assertRaises(apiclient.NotFound, apiclient.find, waypoints, 'id',
                          test_objs['wpt1']['id'])
        wpt2 = apiclient.find(waypoints, 'id', test_objs['wpt2']['id'])
        self.api.delete_object('waypoint', wpt2['id'])
Ejemplo n.º 2
0
 def test_create_waypoint(self):
     name = test_name('waypoint')
     wpt = self.api.create_object('waypoint',
                                  util.make_waypoint(name, 45.0, -122.0))
     self.assertIn('id', wpt)
     self.assertEqual(name, wpt['properties']['title'])
     waypoints = self.api.list_objects('waypoint')
     the_wpt = apiclient.find(waypoints, 'id', wpt['id'])
     self.assertEqual(name, the_wpt['title'])
     self.assertEqual(wpt['id'], the_wpt['id'])
     self._clean()
Ejemplo n.º 3
0
    def add(self, args):
        try:
            args.latitude = util.validate_lat(args.latitude)
            args.longitude = util.validate_lon(args.longitude)
            args.altitude = util.validate_alt(args.altitude)
        except ValueError as e:
            print('Unable to add waypoint: %r' % e)
            return 1

        if args.existing_folder:
            folder = self.get_object(args.existing_folder, objtype='folder')
        else:
            folder = None

        if args.icon and args.icon in util.ICON_ALIASES:
            args.icon = util.ICON_ALIASES[args.icon]

        self.verbose('Creating waypoint %r' % args.name)
        if not args.dry_run:
            wpt = self.client.create_object(
                'waypoint',
                util.make_waypoint(args.name,
                                   args.latitude,
                                   args.longitude,
                                   alt=args.altitude,
                                   notes=args.notes,
                                   icon=args.icon))
        else:
            wpt = {'id': 'dry-run'}

        if not wpt:
            print('Failed to create waypoint')
            return 1

        if args.new_folder:
            self.verbose('Creating new folder %r' % args.new_folder)
            if not args.dry_run:
                folder = self.client.create_object(
                    'folder', util.make_folder(args.new_folder))
            else:
                folder = {'properties': {'name': args.new_folder}}
        if folder:
            self.verbose('Adding waypoint %r to folder %r' %
                         (args.name, folder['properties']['name']))
            if not args.dry_run:
                self.client.add_object_to_folder(folder['id'], 'waypoint',
                                                 wpt['id'])

        if args.dry_run:
            print('Dry run; no action taken')
Ejemplo n.º 4
0
 def test_create_waypoint(self):
     name = _test_name('waypoint')
     wpt = self.api.create_object(
         'waypoint',
         util.make_waypoint(name, 45.0, -122.0,
                            alt=123,
                            notes='These are the notes',
                            icon='chemist-24.png'))
     self.assertIn('id', wpt)
     self.assertEqual(name, wpt['properties']['title'])
     waypoints = self.api.list_objects('waypoint')
     the_wpt = apiclient.find(waypoints, 'id', wpt['id'])
     self.assertEqual(name, the_wpt['title'])
     self.assertEqual(wpt['id'], the_wpt['id'])
     self.assertEqual(wpt['properties']['icon'], 'chemist-24.png')
     self.assertEqual(wpt['properties']['notes'], 'These are the notes')
     self._clean()
Ejemplo n.º 5
0
    def test_get_as_gpx(self):
        test_objs = []
        for name in ('test1', 'test2'):
            wpt = self.api.create_object(
                'waypoint', util.make_waypoint(_test_name(name), 45.0, -122.0))
            test_objs.append(wpt)

        fld = self.api.create_object('folder',
                                     util.make_folder(_test_name('folder')))
        for obj in test_objs:
            self.api.add_object_to_folder(fld['id'], 'waypoint', obj['id'])

        gpx_data = self.api.get_object('folder', id_=fld['id'],
                                       fmt='gpx').decode()
        self.assertIn('gpx.xsd', gpx_data)
        self.assertIn('test1', gpx_data)
        self.assertIn('test2', gpx_data)
        self._clean()
Ejemplo n.º 6
0
    def add(self, args):
        try:
            args.latitude = util.validate_lat(args.latitude)
            args.longitude = util.validate_lon(args.longitude)
            args.altitude = util.validate_alt(args.altitude)
        except ValueError as e:
            print('Unable to add waypoint: %r' % e)
            return 1

        if args.existing_folder:
            folder = self.get_object(args.existing_folder,
                                     objtype='folder')
        else:
            folder = None

        self.verbose('Creating waypoint %r' % args.name)
        wpt = self.client.create_object('waypoint',
                                        util.make_waypoint(args.name,
                                                           args.latitude,
                                                           args.longitude,
                                                           args.altitude))

        if not wpt:
            print('Failed to create waypoint')
            return 1

        if args.new_folder:
            self.verbose('Creating new folder %r' % args.new_folder)
            folder = self.client.create_object(
                'folder',
                util.make_folder(args.new_folder))

        if folder:
            self.verbose('Adding waypoint %r to folder %r' % (
                args.name, folder['properties']['name']))
            self.client.add_object_to_folder(
                folder['id'], 'waypoint', wpt['id'])