Add __repr__ to ImmutableObject to get better output from failed model comparisions in tests
This commit is contained in:
parent
037da6f460
commit
005260eb9c
@ -21,6 +21,17 @@ class ImmutableObject(object):
|
||||
return super(ImmutableObject, self).__setattr__(name, value)
|
||||
raise AttributeError('Object is immutable.')
|
||||
|
||||
def __repr__(self):
|
||||
kwarg_pairs = []
|
||||
for (key, value) in sorted(self.__dict__.items()):
|
||||
if isinstance(value, (frozenset, tuple)):
|
||||
value = list(value)
|
||||
kwarg_pairs.append('%s=%s' % (key, repr(value)))
|
||||
return '%(classname)s(%(kwargs)s)' % {
|
||||
'classname': self.__class__.__name__,
|
||||
'kwargs': ', '.join(kwarg_pairs),
|
||||
}
|
||||
|
||||
def __hash__(self):
|
||||
hash_sum = 0
|
||||
for key, value in self.__dict__.items():
|
||||
|
||||
@ -73,6 +73,11 @@ class ArtistTest(unittest.TestCase):
|
||||
test = lambda: Artist(foo='baz')
|
||||
self.assertRaises(TypeError, test)
|
||||
|
||||
def test_repr(self):
|
||||
self.assertEquals(
|
||||
"Artist(name='name', uri='uri')",
|
||||
repr(Artist(uri='uri', name='name')))
|
||||
|
||||
def test_eq_name(self):
|
||||
artist1 = Artist(name=u'name')
|
||||
artist2 = Artist(name=u'name')
|
||||
@ -164,6 +169,16 @@ class AlbumTest(unittest.TestCase):
|
||||
test = lambda: Album(foo='baz')
|
||||
self.assertRaises(TypeError, test)
|
||||
|
||||
def test_repr_without_artists(self):
|
||||
self.assertEquals(
|
||||
"Album(artists=[], name='name', uri='uri')",
|
||||
repr(Album(uri='uri', name='name')))
|
||||
|
||||
def test_repr_with_artists(self):
|
||||
self.assertEquals(
|
||||
"Album(artists=[Artist(name='foo')], name='name', uri='uri')",
|
||||
repr(Album(uri='uri', name='name', artists=[Artist(name='foo')])))
|
||||
|
||||
def test_eq_name(self):
|
||||
album1 = Album(name=u'name')
|
||||
album2 = Album(name=u'name')
|
||||
@ -319,6 +334,16 @@ class TrackTest(unittest.TestCase):
|
||||
test = lambda: Track(foo='baz')
|
||||
self.assertRaises(TypeError, test)
|
||||
|
||||
def test_repr_without_artists(self):
|
||||
self.assertEquals(
|
||||
"Track(artists=[], name='name', uri='uri')",
|
||||
repr(Track(uri='uri', name='name')))
|
||||
|
||||
def test_repr_with_artists(self):
|
||||
self.assertEquals(
|
||||
"Track(artists=[Artist(name='foo')], name='name', uri='uri')",
|
||||
repr(Track(uri='uri', name='name', artists=[Artist(name='foo')])))
|
||||
|
||||
def test_eq_uri(self):
|
||||
track1 = Track(uri=u'uri1')
|
||||
track2 = Track(uri=u'uri1')
|
||||
@ -551,6 +576,17 @@ class PlaylistTest(unittest.TestCase):
|
||||
test = lambda: Playlist(foo='baz')
|
||||
self.assertRaises(TypeError, test)
|
||||
|
||||
def test_repr_without_tracks(self):
|
||||
self.assertEquals(
|
||||
"Playlist(name='name', tracks=[], uri='uri')",
|
||||
repr(Playlist(uri='uri', name='name')))
|
||||
|
||||
def test_repr_with_tracks(self):
|
||||
self.assertEquals(
|
||||
"Playlist(name='name', tracks=[Track(artists=[], name='foo')], "
|
||||
"uri='uri')",
|
||||
repr(Playlist(uri='uri', name='name', tracks=[Track(name='foo')])))
|
||||
|
||||
def test_eq(self):
|
||||
# FIXME missing all equal and hash tests
|
||||
raise SkipTest
|
||||
|
||||
Loading…
Reference in New Issue
Block a user