Passed
Push — test-coverage ( 674d38...ea590c )
by Konstantinos
02:18
created

tests.test_metadata.test_album_dir()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 0
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
from glob import glob
2
3
import os
4
import pytest
5
from mutagen.id3 import ID3
6
7
from music_album_creation.metadata import MetadataDealer as MD
8
from music_album_creation.tracks_parsing import StringParser
9
10
11
@pytest.fixture(scope='module')
12
def test_album_dir():
13
    return os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data/album_0/')
14
15
16
@pytest.fixture(scope='module')
17
def album_info():
18
    return {'artist': ['ratm', 'TPE1'],
19
            'album-artist': ['ratm', 'TPE2'],
20
            'album': ['renegades', 'TALB'],
21
            'year': ['2000', 'TDRC']
22
            }
23
24
@pytest.fixture(scope='module')
25
def tags_from_file_name():
26
    return {'track_number': {'tag': 'TRCK', 'parser': lambda x: str(int(x))},  # 4.2.1   TRCK    [#TRCK Track number/Position in set]
27
            'track_name': {'tag': 'TIT2'}   # 4.2.1   TIT2    [#TIT2 Title/songname/content description]
28
            }
29
30
def test_writting_album_metadata(test_album_dir, album_info, tags_from_file_name):
31
    MD.set_album_metadata(test_album_dir, track_number=True, track_name=True, artist=album_info['artist'][0],
32
                          album_artist=album_info['album-artist'][0], album=album_info['album'][0], year=album_info['year'][0])
33
    for file_path in glob(test_album_dir + '/*'):
34
        c = StringParser.parse_track_number_n_name(os.path.basename(file_path))
35
        audio = ID3(file_path)
36
        assert all(str(audio.get(v[1]) == v[0] for v in album_info.values()))
37
        # for k, v in tags_from_file_name.items():
38
        #     print("TAG SET: {}={}, requested: {}={}".format(v, str(audio.get(v)), k, c[k]))
39
        assert all([str(audio.get(data['tag'])) == data.get('parser', lambda x: x)(c[k]) for k, data in tags_from_file_name.items()])
40