Closes gh-21 Add all tests for FileSystem class and test photo files
This commit is contained in:
		
							parent
							
								
									1a9498a5d8
								
							
						
					
					
						commit
						3a916aa589
					
				| @ -5,8 +5,12 @@ virtualenv: | ||||
|   system_site_packages: true | ||||
| before_install: | ||||
|   - "sudo apt-get update -qq" | ||||
|   - "sudo apt-get install python-dev python-pip python-pyexiv2 -y" | ||||
|   - "sudo apt-get install python-dev python-pip python-pyexiv2 libimage-exiftool-perl -y" | ||||
| install: | ||||
|   - "sudo pip install docopt LatLon nose requests" | ||||
| # command to run tests | ||||
| # test mapquest key | ||||
| before_script: | ||||
|   - "mkdir ~/.elodie" | ||||
|   - "sed 's/your-api-key-goes-here/x8wQLqGhW7qK3sFpjYtVTogVtoMK0S8s/g' config.ini-sample > ~/.elodie/config.ini" | ||||
| script: "nosetests elodie/tests/*.py" | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| from os import path | ||||
| 
 | ||||
| debug = False | ||||
| debug = True | ||||
| application_directory = '{}/.elodie'.format(path.expanduser('~')) | ||||
| hash_db = '{}/hash.json'.format(application_directory) | ||||
| script_directory = path.dirname(path.dirname(path.abspath(__file__))) | ||||
|  | ||||
| @ -43,9 +43,12 @@ class FileSystem: | ||||
|     def delete_directory_if_empty(self, directory_path): | ||||
|         try: | ||||
|             os.rmdir(directory_path) | ||||
|             return True | ||||
|         except OSError: | ||||
|             pass | ||||
| 
 | ||||
|         return False | ||||
| 
 | ||||
|     """ | ||||
|     Recursively get all files which match a path and extension. | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								elodie/tests/files/plain.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								elodie/tests/files/plain.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 28 KiB | 
							
								
								
									
										
											BIN
										
									
								
								elodie/tests/files/with-location-and-title.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								elodie/tests/files/with-location-and-title.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 28 KiB | 
							
								
								
									
										
											BIN
										
									
								
								elodie/tests/files/with-location.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								elodie/tests/files/with-location.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 28 KiB | 
							
								
								
									
										
											BIN
										
									
								
								elodie/tests/files/with-title.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								elodie/tests/files/with-title.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 28 KiB | 
| @ -3,13 +3,20 @@ import os | ||||
| import sys | ||||
| 
 | ||||
| import random | ||||
| import re | ||||
| import shutil | ||||
| import string | ||||
| import tempfile | ||||
| import time | ||||
| 
 | ||||
| sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))) | ||||
| 
 | ||||
| from elodie import filesystem | ||||
| from elodie.media.media import Media | ||||
| from elodie.media.photo import Photo | ||||
| from elodie.media.video import Video | ||||
| 
 | ||||
| os.environ['TZ'] = 'GMT' | ||||
| 
 | ||||
| filesystem = filesystem.FileSystem() | ||||
| 
 | ||||
| @ -46,6 +53,191 @@ def test_create_directory_invalid_permissions(): | ||||
| 
 | ||||
|     assert status == False | ||||
| 
 | ||||
| def test_delete_directory_if_empty(): | ||||
|     folder = '%s/%s' % (tempfile.gettempdir(), 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(): | ||||
|     folder = '%s/%s/%s' % (tempfile.gettempdir(), random_string(10), 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(): | ||||
|     folder = populate_folder(5) | ||||
|     files = filesystem.get_all_files(folder) | ||||
|     shutil.rmtree(folder) | ||||
| 
 | ||||
|     assert len(files) == 5 | ||||
| 
 | ||||
| 
 | ||||
| def test_get_all_files_by_extension(): | ||||
|     folder = 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(): | ||||
|     assert os.getcwd() == filesystem.get_current_directory() | ||||
| 
 | ||||
| def test_get_file_name_plain(): | ||||
|     media = Photo(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(): | ||||
|     media = Photo(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(): | ||||
|     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(): | ||||
|     media = Photo(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(): | ||||
|     media = Photo(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(): | ||||
|     media = Photo(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(): | ||||
|     media = Photo(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(): | ||||
|     temporary_folder = tempfile.gettempdir() | ||||
|     folder = '%s/%s/%s' % (temporary_folder, random_string(10), random_string(10)) | ||||
|     os.makedirs(folder) | ||||
| 
 | ||||
|     origin = '%s/plain.jpg' % folder | ||||
|     shutil.copyfile(get_file('plain.jpg'), origin) | ||||
| 
 | ||||
|     media = Photo(origin) | ||||
|     destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) | ||||
| 
 | ||||
|     shutil.rmtree(folder) | ||||
|     shutil.rmtree(os.path.dirname(os.path.dirname(destination))) | ||||
| 
 | ||||
|     assert '2015-12-Dec/Unknown Location/2015-12-05_00-59-26-plain.jpg' in destination | ||||
| 
 | ||||
| def test_process_file_with_title(): | ||||
|     temporary_folder = tempfile.gettempdir() | ||||
|     folder = '%s/%s/%s' % (temporary_folder, random_string(10), random_string(10)) | ||||
|     os.makedirs(folder) | ||||
| 
 | ||||
|     origin = '%s/plain.jpg' % folder | ||||
|     shutil.copyfile(get_file('with-title.jpg'), origin) | ||||
| 
 | ||||
|     media = Photo(origin) | ||||
|     destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) | ||||
| 
 | ||||
|     shutil.rmtree(folder) | ||||
|     shutil.rmtree(os.path.dirname(os.path.dirname(destination))) | ||||
| 
 | ||||
|     assert '2015-12-Dec/Unknown Location/2015-12-05_00-59-26-plain-some-title.jpg' in destination | ||||
| 
 | ||||
| def test_process_file_with_location(): | ||||
|     temporary_folder = tempfile.gettempdir() | ||||
|     folder = '%s/%s/%s' % (temporary_folder, random_string(10), random_string(10)) | ||||
|     os.makedirs(folder) | ||||
| 
 | ||||
|     origin = '%s/plain.jpg' % folder | ||||
|     shutil.copyfile(get_file('with-location.jpg'), origin) | ||||
| 
 | ||||
|     media = Photo(origin) | ||||
|     destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) | ||||
| 
 | ||||
|     shutil.rmtree(folder) | ||||
|     shutil.rmtree(os.path.dirname(os.path.dirname(destination))) | ||||
| 
 | ||||
|     assert '2015-12-Dec/Sunnyvale/2015-12-05_00-59-26-plain.jpg' in destination | ||||
| 
 | ||||
| def test_process_file_with_location_and_title(): | ||||
|     temporary_folder = tempfile.gettempdir() | ||||
|     folder = '%s/%s/%s' % (temporary_folder, random_string(10), random_string(10)) | ||||
|     os.makedirs(folder) | ||||
| 
 | ||||
|     origin = '%s/plain.jpg' % folder | ||||
|     shutil.copyfile(get_file('with-location-and-title.jpg'), origin) | ||||
| 
 | ||||
|     media = Photo(origin) | ||||
|     destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) | ||||
| 
 | ||||
|     shutil.rmtree(folder) | ||||
|     shutil.rmtree(os.path.dirname(os.path.dirname(destination))) | ||||
| 
 | ||||
|     assert '2015-12-Dec/Sunnyvale/2015-12-05_00-59-26-plain-some-title.jpg' in destination | ||||
| 
 | ||||
| def populate_folder(number_of_files): | ||||
|     folder = '%s/%s' % (tempfile.gettempdir(), random_string(10)) | ||||
|     os.makedirs(folder) | ||||
| 
 | ||||
|     for x in range(0, number_of_files): | ||||
|         ext = 'jpg' if x % 2 == 0 else 'txt' | ||||
|         fname = '%s/%s.%s' % (folder, x, ext) | ||||
|         with open(fname, 'a'): | ||||
|             os.utime(fname, None) | ||||
| 
 | ||||
|     return folder | ||||
| 
 | ||||
| def get_file(name): | ||||
|     current_folder = os.path.dirname(os.path.realpath(__file__)) | ||||
|     return '%s/files/%s' % (current_folder, name) | ||||
| 
 | ||||
| def random_string(length): | ||||
|     return ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(length)) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jaisen Mathai
						Jaisen Mathai