Completed
Pull Request — master (#352)
by
unknown
01:56
created

elodie.tests.media.media_test.teardown_module()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 0
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
# Project imports
2
import os
3
import sys
4
5
import hashlib
6
import random
7
import re
8
import shutil
9
import string
10
import tempfile
11
import time
12
13
sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))))
14
sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))
15
16
import helper
17
from elodie.media.audio import Audio
18
from elodie.media.media import Media
19
from elodie.media.photo import Photo
20
from elodie.media.video import Video
21
from elodie.external.pyexiftool import ExifTool
22
from elodie.dependencies import get_exiftool
23
from elodie import constants
24
25
os.environ['TZ'] = 'GMT'
26
27
def setup_module():
28
    exiftool_addedargs = [
29
            u'-config',
30
            u'"{}"'.format(constants.exiftool_config)
31
        ]
32
    ExifTool(executable_=get_exiftool(), addedargs=exiftool_addedargs).start()
33
34
def teardown_module():
35
    ExifTool().terminate
36
37
def test_get_file_path():
38
    media = Media(helper.get_file('plain.jpg'))
39
    path = media.get_file_path()
40
41
    assert 'plain.jpg' in path, path
42
43
def test_get_class_by_file_photo():
44
    media = Media.get_class_by_file(helper.get_file('plain.jpg'), [Photo, Video])
45
46
    assert media.__name__ == 'Photo'
47
48
def test_get_class_by_file_video():
49
    media = Media.get_class_by_file(helper.get_file('video.mov'), [Photo, Video])
50
51
    assert media.__name__ == 'Video'
52
53
def test_get_class_by_file_unsupported():
54
    media = Media.get_class_by_file(helper.get_file('text.txt'), [Photo, Video])
55
56
    assert media is None
57
58
def test_get_class_by_file_ds_store():
59
    media = Media.get_class_by_file(helper.get_file('.DS_Store'),
60
                                    [Photo, Video, Audio])
61
    assert media is None
62
63
def test_get_class_by_file_invalid_type():
64
    media = Media.get_class_by_file(None,
65
                                    [Photo, Video, Audio])
66
    assert media is None
67
68
    media = Media.get_class_by_file(False,
69
                                    [Photo, Video, Audio])
70
    assert media is None
71
72
    media = Media.get_class_by_file(True,
73
                                    [Photo, Video, Audio])
74
    assert media is None
75
76 View Code Duplication
def test_get_original_name():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
77
    temporary_folder, folder = helper.create_working_folder()
78
79
    origin = '%s/%s' % (folder, 'with-original-name.jpg')
80
    file = helper.get_file('with-original-name.jpg')
81
    
82
    shutil.copyfile(file, origin)
83
84
    media = Media.get_class_by_file(origin, [Photo])
85
    original_name = media.get_original_name()
86
87
    assert original_name == 'originalfilename.jpg', original_name
88
89 View Code Duplication
def test_get_original_name_invalid_file():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
90
    temporary_folder, folder = helper.create_working_folder()
91
92
    origin = '%s/%s' % (folder, 'invalid.jpg')
93
    file = helper.get_file('invalid.jpg')
94
    
95
    shutil.copyfile(file, origin)
96
97
    media = Media.get_class_by_file(origin, [Photo])
98
    original_name = media.get_original_name()
99
100
    assert original_name is None, original_name
101
102
def test_set_original_name_when_exists():
103
    temporary_folder, folder = helper.create_working_folder()
104
105
    origin = '%s/%s' % (folder, 'with-original-name.jpg')
106
    file = helper.get_file('with-original-name.jpg')
107
    
108
    shutil.copyfile(file, origin)
109
110
    media = Media.get_class_by_file(origin, [Photo])
111
    result = media.set_original_name()
112
113
    assert result is None, result
114
115
def test_set_original_name_when_does_not_exist():
116
    temporary_folder, folder = helper.create_working_folder()
117
118
    origin = '%s/%s' % (folder, 'plain.jpg')
119
    file = helper.get_file('plain.jpg')
120
    
121
    shutil.copyfile(file, origin)
122
123
    media = Media.get_class_by_file(origin, [Photo])
124
    metadata_before = media.get_metadata()
125
    result = media.set_original_name()
126
    metadata_after = media.get_metadata()
127
128
    assert metadata_before['original_name'] is None, metadata_before
129
    assert metadata_after['original_name'] == 'plain.jpg', metadata_after
130
    assert result is True, result
131
132
def test_set_original_name_with_arg():
133
    temporary_folder, folder = helper.create_working_folder()
134
135
    origin = '%s/%s' % (folder, 'plain.jpg')
136
    file = helper.get_file('plain.jpg')
137
    
138
    shutil.copyfile(file, origin)
139
140
    new_name = helper.random_string(15)
141
142
    media = Media.get_class_by_file(origin, [Photo])
143
    metadata_before = media.get_metadata()
144
    result = media.set_original_name(new_name)
145
    metadata_after = media.get_metadata()
146
147
    assert metadata_before['original_name'] is None, metadata_before
148
    assert metadata_after['original_name'] == new_name, metadata_after
149
    assert result is True, result
150
151
def test_set_original_name():
152
    files = ['plain.jpg', 'audio.m4a', 'photo.nef', 'video.mov']
153
154
    for file in files:
155
        ext = os.path.splitext(file)[1]
156
157
        temporary_folder, folder = helper.create_working_folder()
158
159
        random_file_name = '%s%s' % (helper.random_string(10), ext)
160
        origin = '%s/%s' % (folder, random_file_name)
161
        file_path = helper.get_file(file)
162
        if file_path is False:
163
            file_path = helper.download_file(file, folder)
164
165
        shutil.copyfile(file_path, origin)
166
167
        media = Media.get_class_by_file(origin, [Audio, Media, Photo, Video])
168
        metadata = media.get_metadata()
169
        media.set_original_name()
170
        metadata_updated = media.get_metadata()
171
172
        shutil.rmtree(folder)
173
174
        assert metadata['original_name'] is None, metadata['original_name']
175
        assert metadata_updated['original_name'] == random_file_name, metadata_updated['original_name']
176
177
def is_valid():
178
    media = Media()
179
180
    assert not media.is_valid()
181