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

elodie.tests.media.base_test   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 151
Duplicated Lines 15.89 %

Importance

Changes 0
Metric Value
eloc 98
dl 24
loc 151
rs 10
c 0
b 0
f 0
wmc 10

10 Functions

Rating   Name   Duplication   Size   Complexity  
A teardown_module() 0 2 1
A test_get_original_name() 12 12 1
A test_set_metadata_basename() 0 18 1
A test_set_album_from_folder() 0 22 1
A test_get_all_subclasses() 0 4 1
A test_get_class_by_file_without_extension() 0 6 1
A test_get_original_name_invalid_file() 12 12 1
A test_set_metadata() 0 18 1
A test_set_album_from_folder_invalid_file() 0 13 1
A setup_module() 0 6 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

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.base import Base, get_all_subclasses
18
from elodie.media.media import Media
19
from elodie.media.audio import Audio
20
from elodie.media.text import Text
21
from elodie.media.photo import Photo
22
from elodie.media.video import Video
23
from elodie.external.pyexiftool import ExifTool
24
from elodie.dependencies import get_exiftool
25
from elodie import constants
26
27
os.environ['TZ'] = 'GMT'
28
29
def setup_module():
30
    exiftool_addedargs = [
31
            u'-config',
32
            u'"{}"'.format(constants.exiftool_config)
33
        ]
34
    ExifTool(executable_=get_exiftool(), addedargs=exiftool_addedargs).start()
35
36
def teardown_module():
37
    ExifTool().terminate
38
39
def test_get_all_subclasses():
40
    subclasses = get_all_subclasses(Base)
41
    expected = {Media, Base, Text, Photo, Video, Audio}
42
    assert subclasses == expected, subclasses
43
44
def test_get_class_by_file_without_extension():
45
    base_file = helper.get_file('withoutextension')
46
47
    cls = Base.get_class_by_file(base_file, [Audio, Text, Photo, Video])
48
    
49
    assert cls is None, cls
50
51 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...
52
    temporary_folder, folder = helper.create_working_folder()
53
54
    origin = '%s/%s' % (folder, 'with-original-name.jpg')
55
    file = helper.get_file('with-original-name.jpg')
56
    
57
    shutil.copyfile(file, origin)
58
59
    media = Media.get_class_by_file(origin, [Photo])
60
    original_name = media.get_original_name()
61
62
    assert original_name == 'originalfilename.jpg', original_name
63
64 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...
65
    temporary_folder, folder = helper.create_working_folder()
66
67
    origin = '%s/%s' % (folder, 'invalid.jpg')
68
    file = helper.get_file('invalid.jpg')
69
    
70
    shutil.copyfile(file, origin)
71
72
    media = Media.get_class_by_file(origin, [Photo])
73
    original_name = media.get_original_name()
74
75
    assert original_name is None, original_name
76
77
def test_set_album_from_folder_invalid_file():
78
    temporary_folder, folder = helper.create_working_folder()
79
80
    base_file = helper.get_file('invalid.jpg')
81
    origin = '%s/invalid.jpg' % folder
82
83
    shutil.copyfile(base_file, origin)
84
85
    base = Base(origin)
86
87
    status = base.set_album_from_folder()
88
89
    assert status == False, status
90
91
def test_set_album_from_folder():
92
    temporary_folder, folder = helper.create_working_folder()
93
94
    origin = '%s/photo.jpg' % folder
95
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
96
97
    photo = Photo(origin)
98
    metadata = photo.get_metadata()
99
100
    assert metadata['album'] is None, metadata['album']
101
102
    new_album_name = os.path.split(folder)[1]
103
    status = photo.set_album_from_folder()
104
105
    assert status == True, status
106
107
    photo_new = Photo(origin)
108
    metadata_new = photo_new.get_metadata()
109
110
    shutil.rmtree(folder)
111
112
    assert metadata_new['album'] == new_album_name, metadata_new['album']
113
114
def test_set_metadata():
115
    temporary_folder, folder = helper.create_working_folder()
116
117
    origin = '%s/photo.jpg' % folder
118
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
119
120
    photo = Photo(origin)
121
122
    metadata = photo.get_metadata()
123
124
    assert metadata['title'] == None, metadata['title']
125
126
    new_title = 'Some Title'
127
    photo.set_metadata(title = new_title)
128
129
    new_metadata = photo.get_metadata()
130
131
    assert new_metadata['title'] == new_title, new_metadata['title']
132
133
def test_set_metadata_basename():
134
    temporary_folder, folder = helper.create_working_folder()
135
136
    origin = '%s/photo.jpg' % folder
137
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
138
139
    photo = Photo(origin)
140
141
    metadata = photo.get_metadata()
142
143
    assert metadata['base_name'] == 'photo', metadata['base_name']
144
145
    new_basename = 'Some Base Name'
146
    photo.set_metadata_basename(new_basename)
147
148
    new_metadata = photo.get_metadata()
149
150
    assert new_metadata['base_name'] == new_basename, new_metadata['base_name']
151