elodie.tests.media.base_test   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 141
Duplicated Lines 17.02 %

Importance

Changes 0
Metric Value
eloc 90
dl 24
loc 141
rs 10
c 0
b 0
f 0
wmc 8

8 Functions

Rating   Name   Duplication   Size   Complexity  
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

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