def setup(self):
     link = 'https://dl.dropboxusercontent.com/u/1371559/test/audio.mp3'
     self.gears = Gears(
         logger=logging.getLogger('temp.log'),
         hist_file='tem.p'
     )
     self.song = self.gears.download(link)
     self.song.meta.tag.artist = u'Demo Artist www.trashyurl.com'
     self.song.meta.tag.title += u'www.trashyurl.net'
     self.song.meta.tag.album_artist = u'Various www.trashyurl.ru'
     self.song.meta.tag.comments.set(
         u'DOWNLOAD THINGS FROM MY BLOG.WORDPRESS.ORG'
         )
     self.song.save()
     with open('test.txt', 'wb') as _:
         pass
     self.not_song = Song('test.txt')
class TestSong(object):
    def setup(self):
        link = 'https://dl.dropboxusercontent.com/u/1371559/test/audio.mp3'
        self.gears = Gears(
            logger=logging.getLogger('temp.log'),
            hist_file='tem.p'
        )
        self.song = self.gears.download(link)
        self.song.meta.tag.artist = u'Demo Artist www.trashyurl.com'
        self.song.meta.tag.title += u'www.trashyurl.net'
        self.song.meta.tag.album_artist = u'Various www.trashyurl.ru'
        self.song.meta.tag.comments.set(
            u'DOWNLOAD THINGS FROM MY BLOG.WORDPRESS.ORG'
            )
        self.song.save()
        with open('test.txt', 'wb') as _:
            pass
        self.not_song = Song('test.txt')

    def teardown(self):
        os.remove(self.song.loc)
        os.remove('test.txt')
        os.remove('tem.p')
        if os.path.exists('temp.log'):
            os.remove('temp.log')

    def test_song_init(self):
        song = Song(self.song.loc, logger=None)
        assert isinstance(song, Song)

    def test_type(self):
        eq_(type(self.song), Song)

    def test_scrub(self):
        val = u'The Carpenters www.cahulhousemafia.net'
        eq_(u'The Carpenters', scrub(val))

    def test_edm_scrub(self):
        self.song.edm_scrubber()
        assert u'.com' not in self.song.meta.tag.artist
        assert u'.net' not in self.song.meta.tag.title
        assert u'.ru' not in self.song.meta.tag.album_artist
        assert not self.song.meta.tag.comments[0].text

    def test_grouping(self):
        self.song.set_grouping('Jacques Jamms Tracklist')
        audio = ID3(self.song.loc)
        assert 'Jacques Jamms' in audio['TIT1'].text[0]

    def test_grouping_err(self):
        eq_(self.not_song.set_grouping('literally anything'), False)

    def test_del_comment(self):
        self.song.del_comment()
        assert not self.song.meta.tag.comments[0].text

    def test_del_comment_err(self):
        result = self.not_song.del_comment()
        eq_(result, False)

    def test_song_repr(self):
        string = self.song.__repr__()
        assert string.startswith('<Song')

    def test_song_save_err(self):
        # if save fails, result is false
        result = self.not_song.save()
        eq_(result, False)

    def test_reverse_naming(self):
        self.song.meta.tag.artist = u''
        self.song.meta.tag.title = u'Demo Artist - Demo Song'
        self.song.save()
        self.song.reverse_naming()
        eq_(self.song.meta.tag.artist, 'Demo Artist')
        eq_(self.song.meta.tag.title, 'Demo Song')