示例#1
0
def test_rov_sol_empty(dbtransaction, global_environ, rover_params, sol):
    """Test get_rov_sol return value for Rover with no cameras or photos."""
    rover = rover_params['name']
    DBSession.add(Rover(**rover_params))
    DBSession.flush()
    # expected = {'rover': rover, 'sol': sol, 'photos_by_cam': {}}
    # assert Photo.get_rov_sol(rover, sol) == expected
    with pytest.raises(ValueError):
        Photo.get_rov_sol(rover, sol)
def test_rov_sol_empty(dbtransaction, global_environ, rover_params, sol):
    """Test get_rov_sol return value for Rover with no cameras or photos."""
    rover = rover_params['name']
    DBSession.add(Rover(**rover_params))
    DBSession.flush()
    # expected = {'rover': rover, 'sol': sol, 'photos_by_cam': {}}
    # assert Photo.get_rov_sol(rover, sol) == expected
    with pytest.raises(ValueError):
        Photo.get_rov_sol(rover, sol)
def test_get_rov_sol_too_big(dbtransaction, global_environ, photo_params,
                             rover_params, camera_params):
    """Compare sol with no photos to next sol with photos. Should be equal."""
    rover = rover_params['name']
    sol = photo_params['sol']
    photo = Photo(**photo_params)
    DBSession.add(Rover(**rover_params))
    DBSession.add(Camera(**camera_params))
    DBSession.add(photo)
    DBSession.flush()
    assert Photo.get_rov_sol(rover, sol + 500) == Photo.get_rov_sol(rover, sol)
示例#4
0
def test_get_rov_sol_too_big(dbtransaction, global_environ, photo_params,
                             rover_params, camera_params):
    """Compare sol with no photos to next sol with photos. Should be equal."""
    rover = rover_params['name']
    sol = photo_params['sol']
    photo = Photo(**photo_params)
    DBSession.add(Rover(**rover_params))
    DBSession.add(Camera(**camera_params))
    DBSession.add(photo)
    DBSession.flush()
    assert Photo.get_rov_sol(rover, sol + 500) == Photo.get_rov_sol(rover, sol)
def test_rov_sol_one_camera(dbtransaction, global_environ, rover_params,
                            camera_params, sol):
    """Test get_rov_sol return value for a Rover with one Camera."""
    rover = rover_params['name']
    # camera = '_'.join((rover, camera_params['name']))
    DBSession.add(Rover(**rover_params))
    DBSession.add(Camera(**camera_params))
    DBSession.flush()
    # expected = {'rover': rover, 'sol': sol, 'photos_by_cam': {camera: []}}
    # assert Photo.get_rov_sol(rover, sol) == expected
    with pytest.raises(ValueError):
        Photo.get_rov_sol(rover, sol)
示例#6
0
def test_rov_sol_one_camera(dbtransaction, global_environ, rover_params,
                            camera_params, sol):
    """Test get_rov_sol return value for a Rover with one Camera."""
    rover = rover_params['name']
    # camera = '_'.join((rover, camera_params['name']))
    DBSession.add(Rover(**rover_params))
    DBSession.add(Camera(**camera_params))
    DBSession.flush()
    # expected = {'rover': rover, 'sol': sol, 'photos_by_cam': {camera: []}}
    # assert Photo.get_rov_sol(rover, sol) == expected
    with pytest.raises(ValueError):
        Photo.get_rov_sol(rover, sol)
示例#7
0
def test_rov_sol_lots(pre_pop_transaction, global_environ, rover_name, sol):
    """Test get_rov_sol returns correct camera names on pre-populated DB."""
    result = Photo.get_rov_sol(rover_name, sol)
    rover = DBSession.query(Rover).filter(Rover.name == rover_name).one()
    cam_name_list = [camera.name for camera in rover.cameras]
    assert sorted(cam_name_list) == sorted(list(
        result['photos_by_cam'].keys()))
def test_photos_sorted(pre_pop_transaction, rover_name, sol, camera):
    """Second test that pre-populated photos will come in sorted order."""
    from mars_street_view.models import Photo
    data = Photo.get_rov_sol(rover_name, sol)
    photos_by_cam = data.get('photos_by_cam', {})
    photos = photos_by_cam.get(camera, [])
    urls_from_method = [photo.img_src for photo in photos]
    assert urls_from_method == list(sorted(urls_from_method))
def test_left_lens_only(pre_pop_transaction, global_environ, rover_name,
                        sol):
    """Check that get_sol_rov returns no photos from right lens."""
    result = Photo.get_rov_sol(rover_name, sol)
    photo_list = [photo for photos in result['photos_by_cam'].values()
                  for photo in photos]
    assert photo_list and all([photo.img_src[-11] != 'R'
                               for photo in photo_list])
def test_rov_sol_photos(pre_pop_transaction, global_environ, rover_name,
                        sol):
    """Check that all contents of data are Photo objects."""
    result = Photo.get_rov_sol(rover_name, sol)
    photo_list = [photo for photos in result['photos_by_cam'].values()
                  for photo in photos]
    assert len(photo_list) > 0 and all([isinstance(photo, Photo)
                                        for photo in photo_list])
def test_rov_sol_lots(pre_pop_transaction, global_environ, rover_name,
                      sol):
    """Test get_rov_sol returns correct camera names on pre-populated DB."""
    result = Photo.get_rov_sol(rover_name, sol)
    rover = DBSession.query(Rover).filter(Rover.name == rover_name).one()
    cam_name_list = [camera.name for camera in rover.cameras]
    assert sorted(cam_name_list) == sorted(list(
        result['photos_by_cam'].keys()))
示例#12
0
def test_left_lens_only(pre_pop_transaction, global_environ, rover_name, sol):
    """Check that get_sol_rov returns no photos from right lens."""
    result = Photo.get_rov_sol(rover_name, sol)
    photo_list = [
        photo for photos in result['photos_by_cam'].values()
        for photo in photos
    ]
    assert photo_list and all(
        [photo.img_src[-11] != 'R' for photo in photo_list])
示例#13
0
def test_rov_sol_photos(pre_pop_transaction, global_environ, rover_name, sol):
    """Check that all contents of data are Photo objects."""
    result = Photo.get_rov_sol(rover_name, sol)
    photo_list = [
        photo for photos in result['photos_by_cam'].values()
        for photo in photos
    ]
    assert len(photo_list) > 0 and all(
        [isinstance(photo, Photo) for photo in photo_list])
def test_photos_seq(pre_pop_transaction, rover_name, sol, camera):
    """Test that pre-populated photos will be retrieved in url sorted order."""
    from mars_street_view.models import Photo
    data = Photo.get_rov_sol(rover_name, sol)
    photos_by_cam = data.get('photos_by_cam', {})
    photos = photos_by_cam.get(camera, [])
    urls_from_method = [photo.img_src for photo in photos]
    prev_url = ''
    for url in urls_from_method:
        assert url > prev_url
        prev_url = url
def test_rov_sol_one_photo(dbtransaction, global_environ, rover_params,
                           camera_params, photo_params):
    """Test return value for get_rov_sol with one Photo."""
    rover = rover_params['name']
    sol = photo_params['sol']
    camera = '_'.join((rover, camera_params['name']))
    photo = Photo(**photo_params)
    DBSession.add(Rover(**rover_params))
    DBSession.add(Camera(**camera_params))
    DBSession.add(photo)
    DBSession.flush()
    expected = {'rover': rover, 'sol': sol,
                'photos_by_cam': {camera: [photo]},
                'last_day': True, 'first_day': False}
    assert Photo.get_rov_sol(rover, sol) == expected
示例#16
0
def test_rov_sol_one_photo(dbtransaction, global_environ, rover_params,
                           camera_params, photo_params):
    """Test return value for get_rov_sol with one Photo."""
    rover = rover_params['name']
    sol = photo_params['sol']
    camera = '_'.join((rover, camera_params['name']))
    photo = Photo(**photo_params)
    DBSession.add(Rover(**rover_params))
    DBSession.add(Camera(**camera_params))
    DBSession.add(photo)
    DBSession.flush()
    expected = {
        'rover': rover,
        'sol': sol,
        'photos_by_cam': {
            camera: [photo]
        },
        'last_day': True,
        'first_day': False
    }
    assert Photo.get_rov_sol(rover, sol) == expected