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)
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)
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_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_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
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