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)
|
return super(ImmutableObject, self).__setattr__(name, value)
|
||||||
raise AttributeError('Object is immutable.')
|
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):
|
def __hash__(self):
|
||||||
hash_sum = 0
|
hash_sum = 0
|
||||||
for key, value in self.__dict__.items():
|
for key, value in self.__dict__.items():
|
||||||
|
|||||||
@ -73,6 +73,11 @@ class ArtistTest(unittest.TestCase):
|
|||||||
test = lambda: Artist(foo='baz')
|
test = lambda: Artist(foo='baz')
|
||||||
self.assertRaises(TypeError, test)
|
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):
|
def test_eq_name(self):
|
||||||
artist1 = Artist(name=u'name')
|
artist1 = Artist(name=u'name')
|
||||||
artist2 = Artist(name=u'name')
|
artist2 = Artist(name=u'name')
|
||||||
@ -164,6 +169,16 @@ class AlbumTest(unittest.TestCase):
|
|||||||
test = lambda: Album(foo='baz')
|
test = lambda: Album(foo='baz')
|
||||||
self.assertRaises(TypeError, test)
|
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):
|
def test_eq_name(self):
|
||||||
album1 = Album(name=u'name')
|
album1 = Album(name=u'name')
|
||||||
album2 = Album(name=u'name')
|
album2 = Album(name=u'name')
|
||||||
@ -319,6 +334,16 @@ class TrackTest(unittest.TestCase):
|
|||||||
test = lambda: Track(foo='baz')
|
test = lambda: Track(foo='baz')
|
||||||
self.assertRaises(TypeError, test)
|
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):
|
def test_eq_uri(self):
|
||||||
track1 = Track(uri=u'uri1')
|
track1 = Track(uri=u'uri1')
|
||||||
track2 = Track(uri=u'uri1')
|
track2 = Track(uri=u'uri1')
|
||||||
@ -551,6 +576,17 @@ class PlaylistTest(unittest.TestCase):
|
|||||||
test = lambda: Playlist(foo='baz')
|
test = lambda: Playlist(foo='baz')
|
||||||
self.assertRaises(TypeError, test)
|
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):
|
def test_eq(self):
|
||||||
# FIXME missing all equal and hash tests
|
# FIXME missing all equal and hash tests
|
||||||
raise SkipTest
|
raise SkipTest
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user