Ejemplo n.º 1
0
    def test_parse_position(self):
        """Test the conversion of discogs `position` to medium, medium_index
        and subtrack_index."""
        # List of tuples (discogs_position, (medium, medium_index, subindex)
        positions = [('1',       (None,   '1',  None)),
                     ('A12',     ('A',    '12', None)),
                     ('12-34',   ('12-',  '34', None)),
                     ('CD1-1',   ('CD1-', '1',  None)),
                     ('1.12',    (None,   '1',  '12')),
                     ('12.a',    (None,   '12', 'A')),
                     ('12.34',   (None,   '12', '34')),
                     ('1ab',     (None,   '1',  'AB')),
                     # Non-standard
                     ('IV',      ('IV',   None, None)),
                     ]

        d = DiscogsPlugin()
        for position, expected in positions:
            self.assertEqual(d.get_track_index(position), expected)
Ejemplo n.º 2
0
    def test_parse_position(self):
        """Test the conversion of discogs `position` to medium, medium_index
        and subtrack_index."""
        # List of tuples (discogs_position, (medium, medium_index, subindex)
        positions = [
            ("1", (None, "1", None)),
            ("A12", ("A", "12", None)),
            ("12-34", ("12-", "34", None)),
            ("CD1-1", ("CD1-", "1", None)),
            ("1.12", (None, "1", "12")),
            ("12.a", (None, "12", "A")),
            ("12.34", (None, "12", "34")),
            ("1ab", (None, "1", "AB")),
            # Non-standard
            ("IV", ("IV", None, None)),
        ]

        d = DiscogsPlugin()
        for position, expected in positions:
            self.assertEqual(d.get_track_index(position), expected)
Ejemplo n.º 3
0
    def test_parse_position(self):
        """Test the conversion of discogs `position` to medium, medium_index
        and subtrack_index."""
        # List of tuples (discogs_position, (medium, medium_index, subindex)
        positions = [
            ('1', (None, '1', None)),
            ('A12', ('A', '12', None)),
            ('12-34', ('12-', '34', None)),
            ('CD1-1', ('CD1-', '1', None)),
            ('1.12', (None, '1', '12')),
            ('12.a', (None, '12', 'A')),
            ('12.34', (None, '12', '34')),
            ('1ab', (None, '1', 'AB')),
            # Non-standard
            ('IV', ('IV', None, None)),
        ]

        d = DiscogsPlugin()
        for position, expected in positions:
            self.assertEqual(d.get_track_index(position), expected)
Ejemplo n.º 4
0
    def test_parse_track_indices(self):
        release = self._make_release_from_positions(['1', '2'])
        d = DiscogsPlugin().get_album_info(release)
        t = d.tracks

        self.assertEqual(t[0].medium_index, 1)
        self.assertEqual(t[0].index, 1)
        self.assertEqual(t[0].medium_total, 2)
        self.assertEqual(t[1].medium_index, 2)
        self.assertEqual(t[1].index, 2)
        self.assertEqual(t[1].medium_total, 2)
Ejemplo n.º 5
0
    def test_parse_media_for_tracks(self):
        tracks = [
            self._make_track('TITLE ONE', '1', '01:01'),
            self._make_track('TITLE TWO', '2', '02:02')
        ]
        release = self._make_release(tracks=tracks)

        d = DiscogsPlugin().get_album_info(release)
        t = d.tracks
        self.assertEqual(d.media, 'FORMAT')
        self.assertEqual(t[0].media, d.media)
        self.assertEqual(t[1].media, d.media)
Ejemplo n.º 6
0
    def test_parse_tracklist_subtracks_indices(self):
        """Test parsing of subtracks that include index tracks."""
        release = self._make_release_from_positions(['', '', '1.1', '1.2'])
        # Track 1: Index track with medium title
        release.data['tracklist'][0]['title'] = 'MEDIUM TITLE'
        # Track 2: Index track with track group title
        release.data['tracklist'][1]['title'] = 'TRACK GROUP TITLE'

        d = DiscogsPlugin().get_album_info(release)
        self.assertEqual(d.mediums, 1)
        self.assertEqual(len(d.tracks), 1)
        self.assertEqual(d.tracks[0].title, 'TRACK GROUP TITLE')
Ejemplo n.º 7
0
 def test_parse_minimal_release(self):
     """Test parsing of a release with the minimal amount of information."""
     data = {'id': 123,
             'tracklist': [self._make_track('A', '1', '01:01')],
             'artists': [{'name': 'ARTIST NAME', 'id': 321, 'join': ''}],
             'title': 'TITLE'}
     release = Bag(data=data,
                   title=data['title'],
                   artists=[Bag(data=d) for d in data['artists']])
     d = DiscogsPlugin().get_album_info(release)
     self.assertEqual(d.artist, 'ARTIST NAME')
     self.assertEqual(d.album, 'TITLE')
     self.assertEqual(len(d.tracks), 1)
Ejemplo n.º 8
0
    def test_parse_tracklist_subtracks_nested(self):
        """Test parsing of subtracks defined inside a index track."""
        release = self._make_release_from_positions(['1', '', '3'])
        # Track 2: Index track with track group title, and sub_tracks
        release.data['tracklist'][1]['title'] = 'TRACK GROUP TITLE'
        release.data['tracklist'][1]['sub_tracks'] = [
            self._make_track('TITLE ONE', '2.1', '01:01'),
            self._make_track('TITLE TWO', '2.2', '02:02')
        ]

        d = DiscogsPlugin().get_album_info(release)
        self.assertEqual(d.mediums, 1)
        self.assertEqual(len(d.tracks), 3)
        self.assertEqual(d.tracks[1].title, 'TRACK GROUP TITLE')
Ejemplo n.º 9
0
    def test_parse_medium_numbers_two_mediums_two_sided(self):
        release = self._make_release_from_positions(['A1', 'B1', 'C1'])
        d = DiscogsPlugin().get_album_info(release)
        t = d.tracks

        self.assertEqual(d.mediums, 2)
        self.assertEqual(t[0].medium, 1)
        self.assertEqual(t[0].medium_total, 2)
        self.assertEqual(t[0].medium_index, 1)
        self.assertEqual(t[1].medium, 1)
        self.assertEqual(t[1].medium_total, 2)
        self.assertEqual(t[1].medium_index, 2)
        self.assertEqual(t[2].medium, 2)
        self.assertEqual(t[2].medium_total, 2)
        self.assertEqual(t[2].medium_index, 1)
Ejemplo n.º 10
0
    def test_parse_tracklist_disctitles(self):
        """Test parsing of index tracks that act as disc titles."""
        release = self._make_release_from_positions(['', '1-1', '1-2', '',
                                                     '2-1'])
        # Track 1: Index track with medium title (Cd1)
        release.data['tracklist'][0]['title'] = 'MEDIUM TITLE CD1'
        # Track 4: Index track with medium title (Cd2)
        release.data['tracklist'][3]['title'] = 'MEDIUM TITLE CD2'

        d = DiscogsPlugin().get_album_info(release)
        self.assertEqual(d.mediums, 2)
        self.assertEqual(d.tracks[0].disctitle, 'MEDIUM TITLE CD1')
        self.assertEqual(d.tracks[1].disctitle, 'MEDIUM TITLE CD1')
        self.assertEqual(d.tracks[2].disctitle, 'MEDIUM TITLE CD2')
        self.assertEqual(len(d.tracks), 3)
Ejemplo n.º 11
0
 def test_album_for_id(self):
     """Test parsing for a valid Discogs release_id"""
     test_patterns = [('http://www.discogs.com/G%C3%BCnther-Lause-Meru-Ep/release/4354798', 4354798),  # NOQA E501
                      ('http://www.discogs.com/release/4354798-G%C3%BCnther-Lause-Meru-Ep', 4354798),  # NOQA E501
                      ('http://www.discogs.com/G%C3%BCnther-4354798Lause-Meru-Ep/release/4354798', 4354798),  # NOQA E501
                      ('http://www.discogs.com/release/4354798-G%C3%BCnther-4354798Lause-Meru-Ep/', 4354798),  # NOQA E501
                      ('[r4354798]', 4354798),
                      ('r4354798', 4354798),
                      ('4354798', 4354798),
                      ('yet-another-metadata-provider.org/foo/12345', ''),
                      ('005b84a0-ecd6-39f1-b2f6-6eb48756b268', ''),
                      ]
     for test_pattern, expected in test_patterns:
         match = DiscogsPlugin.extract_release_id_regex(test_pattern)
         if not match:
             match = ''
         self.assertEqual(match, expected)
Ejemplo n.º 12
0
    def test_parse_track_indices_several_media(self):
        release = self._make_release_from_positions(
            ['1-1', '1-2', '2-1', '3-1'])
        d = DiscogsPlugin().get_album_info(release)
        t = d.tracks

        self.assertEqual(d.mediums, 3)
        self.assertEqual(t[0].medium_index, 1)
        self.assertEqual(t[0].index, 1)
        self.assertEqual(t[0].medium_total, 3)
        self.assertEqual(t[1].medium_index, 2)
        self.assertEqual(t[1].index, 2)
        self.assertEqual(t[1].medium_total, 3)
        self.assertEqual(t[2].medium_index, 1)
        self.assertEqual(t[2].index, 3)
        self.assertEqual(t[2].medium_total, 3)
        self.assertEqual(t[3].medium_index, 1)
        self.assertEqual(t[3].index, 4)
        self.assertEqual(t[3].medium_total, 3)
Ejemplo n.º 13
0
 def test_parse_with_featuring_both(self):
     """Test parsing of a release with featuring album artists and a featuring artists track."""
     data = {
         'id':
         123,
         'tracklist': [
             self._make_track('A',
                              '1',
                              '01:01',
                              extraartists=[{
                                  'name': 'SECOND ARTIST NAME',
                                  'id': 320,
                                  'role': 'Featuring'
                              }])
         ],
         'artists': [{
             'name': 'ARTIST NAME',
             'id': 321,
             'join': ''
         }],
         'credits': [{
             'name': 'ANOTHER ARTIST NAME',
             'role': 'Featuring'
         }],
         'title':
         'TITLE'
     }
     release = Bag(data=data,
                   title=data['title'],
                   artists=[Bag(data=d) for d in data['artists']],
                   credits=[Bag(data=d) for d in data['credits']])
     d = DiscogsPlugin().get_album_info(release)
     self.assertEqual(d.artist, 'ARTIST NAME feat. ANOTHER ARTIST NAME')
     print(d.tracks[0])
     self.assertEqual(
         d.tracks[0].artist,
         'ARTIST NAME feat. ANOTHER ARTIST NAME, SECOND ARTIST NAME')
     self.assertEqual(d.album, 'TITLE')
     self.assertEqual(len(d.tracks), 1)