Skip to content

Commit

Permalink
Merge pull request jmathai#131 from jmathai/increase-coverage
Browse files Browse the repository at this point in the history
jmathaigh-40 Add tests to increase coverage in geolocation and photo module
  • Loading branch information
jmathai committed Sep 13, 2016
2 parents 9e1c92a + 71b1e9f commit 55df071
Show file tree
Hide file tree
Showing 11 changed files with 82 additions and 153 deletions.
1 change: 1 addition & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
omit =
*/tests/*
*/external/*
*/tools/*
6 changes: 0 additions & 6 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,6 @@ elodie.media
.. automodule:: elodie.media.video
:members:

elodie.arguments
----------------

.. automodule:: elodie.arguments
:members:

elodie.constants
----------------

Expand Down
35 changes: 0 additions & 35 deletions elodie/arguments.py

This file was deleted.

23 changes: 0 additions & 23 deletions elodie/media/photo.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import imghdr
import os
import re
import subprocess
import time
from datetime import datetime
from re import compile
Expand Down Expand Up @@ -38,28 +37,6 @@ def __init__(self, source=None):
# We only want to parse EXIF once so we store it here
self.exif = None

def get_duration(self):
"""Get the duration of a photo in seconds. Uses ffmpeg/ffprobe.
:returns: str or None for a non-photo file
"""
if(not self.is_valid()):
return None

source = self.source
result = subprocess.Popen(
['ffprobe', source],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT
)
for key in result.stdout.readlines():
if 'Duration' in key:
return re.search(
'(\d{2}:\d{2}.\d{2})',
key
).group(1).replace('.', ':')
return None

def get_date_taken(self):
"""Get the date which the photo was taken.
Expand Down
16 changes: 0 additions & 16 deletions elodie/media/video.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
from __future__ import division

# load modules
from distutils.spawn import find_executable
from datetime import datetime

import os
Expand Down Expand Up @@ -53,21 +52,6 @@ def __init__(self, source=None):
self.longitude_ref_key = 'EXIF:GPSLongitudeRef'
self.set_gps_ref = False

def get_avmetareadwrite(self):
"""Get path to executable avmetareadwrite binary.
We wrap this since we call it in a few places and we do a fallback.
:returns: None or string
"""
avmetareadwrite = find_executable('avmetareadwrite')
if(avmetareadwrite is None):
avmetareadwrite = '/usr/bin/avmetareadwrite'
if(not os.path.isfile(avmetareadwrite) or not os.access(avmetareadwrite, os.X_OK)): # noqa
return None

return avmetareadwrite

def get_date_taken(self):
"""Get the date which the photo was taken.
Expand Down
14 changes: 14 additions & 0 deletions elodie/tests/geolocation_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,20 @@ def test_decimal_to_dms():

assert target_decimal_value == check_value, '%s does not match %s' % (check_value, target_decimal_value)

def test_dms_to_decimal_positive_sign():
decimal = geolocation.dms_to_decimal(10, 20, 100, 'NE')
assert helper.isclose(decimal, 10.3611111111)

decimal = geolocation.dms_to_decimal(10, 20, 100, 'ne')
assert helper.isclose(decimal, 10.3611111111)

def test_dms_to_decimal_negative_sign():
decimal = geolocation.dms_to_decimal(10, 20, 100, 'SW')
assert helper.isclose(decimal, -10.3611111111)

decimal = geolocation.dms_to_decimal(10, 20, 100, 'sw')
assert helper.isclose(decimal, -10.3611111111)

def test_dms_string_latitude():

for x in range(0, 5):
Expand Down
72 changes: 67 additions & 5 deletions elodie/tests/media/base_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@
os.environ['TZ'] = 'GMT'



def test_get_class_by_file_without_extension():
base_file = helper.get_file('withoutextension')

cls = Base.get_class_by_file(base_file, [Audio, Text, Photo, Video])

assert cls is None, cls

def test_set_album_from_folder_invalid_file():
temporary_folder, folder = helper.create_working_folder()

Expand All @@ -38,9 +46,63 @@ def test_set_album_from_folder_invalid_file():

assert status == False, status

def test_get_class_by_file_without_extension():
base_file = helper.get_file('withoutextension')
def test_set_album_from_folder():
temporary_folder, folder = helper.create_working_folder()

cls = Base.get_class_by_file(base_file, [Audio, Text, Photo, Video])

assert cls is None, cls
origin = '%s/photo.jpg' % folder
shutil.copyfile(helper.get_file('plain.jpg'), origin)

photo = Photo(origin)
metadata = photo.get_metadata()

assert metadata['album'] is None, metadata['album']

new_album_name = os.path.split(folder)[1]
status = photo.set_album_from_folder()

assert status == True, status

photo_new = Photo(origin)
metadata_new = photo_new.get_metadata()

shutil.rmtree(folder)

assert metadata_new['album'] == new_album_name, metadata_new['album']

def test_set_metadata():
temporary_folder, folder = helper.create_working_folder()

origin = '%s/photo.jpg' % folder
shutil.copyfile(helper.get_file('plain.jpg'), origin)

photo = Photo(origin)

metadata = photo.get_metadata()

assert metadata['title'] == None, metadata['title']

new_title = 'Some Title'
photo.set_metadata(title = new_title)

new_metadata = photo.get_metadata()

assert new_metadata['title'] == new_title, new_metadata['title']

def test_set_metadata_basename():
temporary_folder, folder = helper.create_working_folder()

origin = '%s/photo.jpg' % folder
shutil.copyfile(helper.get_file('plain.jpg'), origin)

photo = Photo(origin)

metadata = photo.get_metadata()

assert metadata['base_name'] == 'photo', metadata['base_name']

new_basename = 'Some Base Name'
photo.set_metadata_basename(new_basename)

new_metadata = photo.get_metadata()

assert new_metadata['base_name'] == new_basename, new_metadata['base_name']
Empty file removed tools/__init__.py
Empty file.
Empty file removed tools/scripts/__init__.py
Empty file.
32 changes: 0 additions & 32 deletions tools/scripts/datetime.py

This file was deleted.

36 changes: 0 additions & 36 deletions tools/scripts/geolocation.py

This file was deleted.

0 comments on commit 55df071

Please sign in to comment.