Issues (157)

elodie/tests/media/media_test.py (2 issues)

Enable duplicate code detection for Python code

Duplication Informational
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
22
os.environ['TZ'] = 'GMT'
23
24
setup_module = helper.setup_module
25
teardown_module = helper.teardown_module
26
27
def test_get_file_path():
28
    media = Media(helper.get_file('plain.jpg'))
29
    path = media.get_file_path()
30
31
    assert 'plain.jpg' in path, path
32
33
def test_get_class_by_file_photo():
34
    media = Media.get_class_by_file(helper.get_file('plain.jpg'), [Photo, Video])
35
36
    assert media.__name__ == 'Photo'
37
38
def test_get_class_by_file_video():
39
    media = Media.get_class_by_file(helper.get_file('video.mov'), [Photo, Video])
40
41
    assert media.__name__ == 'Video'
42
43
def test_get_class_by_file_unsupported():
44
    media = Media.get_class_by_file(helper.get_file('text.txt'), [Photo, Video])
45
46
    assert media is None
47
48
def test_get_class_by_file_ds_store():
49
    media = Media.get_class_by_file(helper.get_file('.DS_Store'),
50
                                    [Photo, Video, Audio])
51
    assert media is None
52
53
def test_get_class_by_file_invalid_type():
54
    media = Media.get_class_by_file(None,
55
                                    [Photo, Video, Audio])
56
    assert media is None
57
58
    media = Media.get_class_by_file(False,
59
                                    [Photo, Video, Audio])
60
    assert media is None
61
62
    media = Media.get_class_by_file(True,
63
                                    [Photo, Video, Audio])
64
    assert media is None
65
66 View Code Duplication
def test_get_original_name():
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
67
    temporary_folder, folder = helper.create_working_folder()
68
69
    origin = '%s/%s' % (folder, 'with-original-name.jpg')
70
    file = helper.get_file('with-original-name.jpg')
71
    
72
    shutil.copyfile(file, origin)
73
74
    media = Media.get_class_by_file(origin, [Photo])
75
    original_name = media.get_original_name()
76
77
    assert original_name == 'originalfilename.jpg', original_name
78
79 View Code Duplication
def test_get_original_name_invalid_file():
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
80
    temporary_folder, folder = helper.create_working_folder()
81
82
    origin = '%s/%s' % (folder, 'invalid.jpg')
83
    file = helper.get_file('invalid.jpg')
84
    
85
    shutil.copyfile(file, origin)
86
87
    media = Media.get_class_by_file(origin, [Photo])
88
    original_name = media.get_original_name()
89
90
    assert original_name is None, original_name
91
92
def test_set_original_name_when_exists():
93
    temporary_folder, folder = helper.create_working_folder()
94
95
    origin = '%s/%s' % (folder, 'with-original-name.jpg')
96
    file = helper.get_file('with-original-name.jpg')
97
    
98
    shutil.copyfile(file, origin)
99
100
    media = Media.get_class_by_file(origin, [Photo])
101
    result = media.set_original_name()
102
103
    assert result is None, result
104
105
def test_set_original_name_when_does_not_exist():
106
    temporary_folder, folder = helper.create_working_folder()
107
108
    origin = '%s/%s' % (folder, 'plain.jpg')
109
    file = helper.get_file('plain.jpg')
110
    
111
    shutil.copyfile(file, origin)
112
113
    media = Media.get_class_by_file(origin, [Photo])
114
    metadata_before = media.get_metadata()
115
    result = media.set_original_name()
116
    metadata_after = media.get_metadata()
117
118
    assert metadata_before['original_name'] is None, metadata_before
119
    assert metadata_after['original_name'] == 'plain.jpg', metadata_after
120
    assert result is True, result
121
122
def test_set_original_name_with_arg():
123
    temporary_folder, folder = helper.create_working_folder()
124
125
    origin = '%s/%s' % (folder, 'plain.jpg')
126
    file = helper.get_file('plain.jpg')
127
    
128
    shutil.copyfile(file, origin)
129
130
    new_name = helper.random_string(15)
131
132
    media = Media.get_class_by_file(origin, [Photo])
133
    metadata_before = media.get_metadata()
134
    result = media.set_original_name(new_name)
135
    metadata_after = media.get_metadata()
136
137
    assert metadata_before['original_name'] is None, metadata_before
138
    assert metadata_after['original_name'] == new_name, metadata_after
139
    assert result is True, result
140
141
def test_set_original_name():
142
    files = ['plain.jpg', 'audio.m4a', 'photo.nef', 'video.mov']
143
144
    for file in files:
145
        ext = os.path.splitext(file)[1]
146
147
        temporary_folder, folder = helper.create_working_folder()
148
149
        random_file_name = '%s%s' % (helper.random_string(10), ext)
150
        origin = '%s/%s' % (folder, random_file_name)
151
        file_path = helper.get_file(file)
152
        if file_path is False:
153
            file_path = helper.download_file(file, folder)
154
155
        shutil.copyfile(file_path, origin)
156
157
        media = Media.get_class_by_file(origin, [Audio, Media, Photo, Video])
158
        metadata = media.get_metadata()
159
        media.set_original_name()
160
        metadata_updated = media.get_metadata()
161
162
        shutil.rmtree(folder)
163
164
        assert metadata['original_name'] is None, metadata['original_name']
165
        assert metadata_updated['original_name'] == random_file_name, metadata_updated['original_name']
166
167
def is_valid():
168
    media = Media()
169
170
    assert not media.is_valid()
171