Skip to content

Commit

Permalink
Merge pull request #1443 from CodyReichert/master
Browse files Browse the repository at this point in the history
MPDStats Plugin: handle update_rating when item is None / start tests for mpdstats
  • Loading branch information
sampsyo committed Apr 29, 2015
2 parents 631e097 + b776a71 commit 494d328
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 1 deletion.
6 changes: 5 additions & 1 deletion beetsplug/mpdstats.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,12 @@ def update_item(self, item, attribute, value=None, increment=None):
displayable_path(item.path))

def update_rating(self, item, skipped):
"""Update the rating for a beets item.
"""Update the rating for a beets item. The `item` can either be a
beets `Item` or None. If the item is None, nothing changes.
"""
if item is None:
return

item.load()
rating = self.rating(
int(item.get('play_count', 0)),
Expand Down
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ def build_manpages():
'responses',
'pyxdg',
'pathlib',
'python-mpd',
],

# Plugin (optional) dependencies:
Expand Down
51 changes: 51 additions & 0 deletions test/test_mpdstats.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# This file is part of beets.
# Copyright 2015
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.

from __future__ import (division, absolute_import, print_function,
unicode_literals)


from mock import Mock
from test._common import unittest
from test.helper import TestHelper

from beets.library import Item
from beetsplug.mpdstats import MPDStats


class MPDStatsTest(unittest.TestCase, TestHelper):
def setUp(self):
self.setup_beets()
self.load_plugins('mpdstats')

def tearDown(self):
self.teardown_beets()
self.unload_plugins()

def test_update_rating(self):
item = Item(title='title', path='', id=1)
item.add(self.lib)

log = Mock()
mpdstats = MPDStats(self.lib, log)

self.assertFalse(mpdstats.update_rating(item, True))
self.assertFalse(mpdstats.update_rating(None, True))


def suite():
return unittest.TestLoader().loadTestsFromName(__name__)

if __name__ == b'__main__':
unittest.main(defaultTest='suite')
1 change: 1 addition & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ deps =
pathlib
pyxdg
jellyfish
python-mpd
commands =
nosetests {posargs}

Expand Down

0 comments on commit 494d328

Please sign in to comment.