# Project imports import os import sys import re import shutil sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))) import helper from elodie.filesystem import FileSystem from elodie.media.media import Media from elodie.media.photo import Photo from elodie.media.video import Video os.environ['TZ'] = 'GMT' def test_create_directory_success(): filesystem = FileSystem() folder = '%s/%s' % (helper.temp_dir(), helper.random_string(10)) status = filesystem.create_directory(folder) # Needs to be a subdirectory assert helper.temp_dir() != folder assert status == True assert os.path.isdir(folder) == True assert os.path.exists(folder) == True # Clean up shutil.rmtree(folder) def test_create_directory_recursive_success(): filesystem = FileSystem() folder = '%s/%s/%s' % (helper.temp_dir(), helper.random_string(10), helper.random_string(10)) status = filesystem.create_directory(folder) # Needs to be a subdirectory assert helper.temp_dir() != folder assert status == True assert os.path.isdir(folder) == True assert os.path.exists(folder) == True shutil.rmtree(folder) def test_create_directory_invalid_permissions(): filesystem = FileSystem() status = filesystem.create_directory('/apathwhichdoesnotexist/afolderwhichdoesnotexist') assert status == False def test_delete_directory_if_empty(): filesystem = FileSystem() folder = '%s/%s' % (helper.temp_dir(), helper.random_string(10)) os.makedirs(folder) assert os.path.isdir(folder) == True assert os.path.exists(folder) == True filesystem.delete_directory_if_empty(folder) assert os.path.isdir(folder) == False assert os.path.exists(folder) == False def test_delete_directory_if_empty_when_not_empty(): filesystem = FileSystem() folder = '%s/%s/%s' % (helper.temp_dir(), helper.random_string(10), helper.random_string(10)) os.makedirs(folder) parent_folder = os.path.dirname(folder) assert os.path.isdir(folder) == True assert os.path.exists(folder) == True assert os.path.isdir(parent_folder) == True assert os.path.exists(parent_folder) == True filesystem.delete_directory_if_empty(parent_folder) assert os.path.isdir(folder) == True assert os.path.exists(folder) == True assert os.path.isdir(parent_folder) == True assert os.path.exists(parent_folder) == True shutil.rmtree(parent_folder) def test_get_all_files_success(): filesystem = FileSystem() folder = helper.populate_folder(5) files = filesystem.get_all_files(folder) shutil.rmtree(folder) assert len(files) == 5 def test_get_all_files_by_extension(): filesystem = FileSystem() folder = helper.populate_folder(5) files = filesystem.get_all_files(folder) assert len(files) == 5 files = filesystem.get_all_files(folder, 'jpg') assert len(files) == 3 files = filesystem.get_all_files(folder, 'txt') assert len(files) == 2 files = filesystem.get_all_files(folder, 'gif') assert len(files) == 0 shutil.rmtree(folder) def test_get_current_directory(): filesystem = FileSystem() assert os.getcwd() == filesystem.get_current_directory() def test_get_file_name_plain(): filesystem = FileSystem() media = Photo(helper.get_file('plain.jpg')) file_name = filesystem.get_file_name(media) assert file_name == '2015-12-05_00-59-26-plain.jpg' def test_get_file_name_with_title(): filesystem = FileSystem() media = Photo(helper.get_file('with-title.jpg')) file_name = filesystem.get_file_name(media) assert file_name == '2015-12-05_00-59-26-with-title-some-title.jpg' def test_get_folder_name_by_date(): filesystem = FileSystem() time_tuple = (2010, 4, 15, 1, 2, 3, 0, 0, 0) folder_name = filesystem.get_folder_name_by_date(time_tuple) assert folder_name == '2010-04-Apr' time_tuple = (2010, 9, 15, 1, 2, 3, 0, 0, 0) folder_name = filesystem.get_folder_name_by_date(time_tuple) assert folder_name == '2010-09-Sep' def test_get_folder_path_plain(): filesystem = FileSystem() media = Photo(helper.get_file('plain.jpg')) path = filesystem.get_folder_path(media.get_metadata()) assert path == '2015-12-Dec/Unknown Location' def test_get_folder_path_with_title(): filesystem = FileSystem() media = Photo(helper.get_file('with-title.jpg')) path = filesystem.get_folder_path(media.get_metadata()) assert path == '2015-12-Dec/Unknown Location' def test_get_folder_path_with_location(): filesystem = FileSystem() media = Photo(helper.get_file('with-location.jpg')) path = filesystem.get_folder_path(media.get_metadata()) assert path == '2015-12-Dec/Sunnyvale' def test_get_folder_path_with_location_and_title(): filesystem = FileSystem() media = Photo(helper.get_file('with-location-and-title.jpg')) path = filesystem.get_folder_path(media.get_metadata()) assert path == '2015-12-Dec/Sunnyvale' def test_process_file_plain(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None assert origin_checksum == destination_checksum assert '2015-12-Dec/Unknown Location/2015-12-05_00-59-26-photo.jpg' in destination def test_process_file_with_title(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-title.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None assert origin_checksum == destination_checksum assert '2015-12-Dec/Unknown Location/2015-12-05_00-59-26-photo-some-title.jpg' in destination def test_process_file_with_location(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-location.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None assert origin_checksum == destination_checksum assert '2015-12-Dec/Sunnyvale/2015-12-05_00-59-26-photo.jpg' in destination def test_process_file_with_location_and_title(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-location-and-title.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None assert origin_checksum == destination_checksum assert '2015-12-Dec/Sunnyvale/2015-12-05_00-59-26-photo-some-title.jpg' in destination def test_process_file_with_album(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-album.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None assert origin_checksum == destination_checksum assert '2015-12-Dec/Test Album/2015-12-05_00-59-26-photo.jpg' in destination def test_process_file_with_album_and_title(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-album-and-title.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None assert origin_checksum == destination_checksum assert '2015-12-Dec/Test Album/2015-12-05_00-59-26-photo-some-title.jpg' in destination def test_process_file_with_album_and_title_and_location(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-album-and-title-and-location.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None assert origin_checksum == destination_checksum assert '2015-12-Dec/Test Album/2015-12-05_00-59-26-photo-some-title.jpg' in destination