error en cache, no se validaba si existia el conteo de recordings
This commit is contained in:
@@ -177,6 +177,11 @@ def get_recordings_of_release(mbid):
|
|||||||
jobs.load_entities_of_release.delay(mbid)
|
jobs.load_entities_of_release.delay(mbid)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
if f'{recordings_key}:count' not in redis:
|
||||||
|
_log.debug('%s no existe en redis', f'{recordings_key}:count')
|
||||||
|
jobs.load_entities_of_release.delay(mbid)
|
||||||
|
return None
|
||||||
|
|
||||||
recordings_count = int(redis.get(f'{recordings_key}:count'))
|
recordings_count = int(redis.get(f'{recordings_key}:count'))
|
||||||
if redis.zcard(recordings_key) != recordings_count:
|
if redis.zcard(recordings_key) != recordings_count:
|
||||||
_log.debug('La cantidad de recordings de la media %s no coinciden con el total',
|
_log.debug('La cantidad de recordings de la media %s no coinciden con el total',
|
||||||
|
|||||||
@@ -485,6 +485,61 @@ class CacheTest(TestCase):
|
|||||||
|
|
||||||
mock_jobs.load_entities_of_release.delay.assert_called_with('mbid')
|
mock_jobs.load_entities_of_release.delay.assert_called_with('mbid')
|
||||||
|
|
||||||
|
@patch('fetcher.cache.jobs')
|
||||||
|
@patch('fetcher.cache.get_redis_connection')
|
||||||
|
def test_get_recordings_of_release_all_medias_no_recordings_count(self,
|
||||||
|
mock_connection, mock_jobs):
|
||||||
|
"""Testear get recordings of release estan las medias y hay una lista de recordings
|
||||||
|
pero no se tiene la cuenta de ellas"""
|
||||||
|
|
||||||
|
medias = [{'id': id, 'position': id} for id in range(1, 3)]
|
||||||
|
mock_redis = CacheTest.mock_redis(mock_connection)
|
||||||
|
|
||||||
|
def __contains__(_, key):
|
||||||
|
if key == 'release:mbid:media':
|
||||||
|
return True
|
||||||
|
elif key == 'release:mbid:media:1:recordings':
|
||||||
|
return True
|
||||||
|
elif key == 'release:mbid:media:2:recordings':
|
||||||
|
return True
|
||||||
|
elif key == 'release:mbid:media:1:recordings:count':
|
||||||
|
return False
|
||||||
|
elif key == 'release:mbid:media:2:recordings:count':
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
self.fail(f'Key inesperada en __contains__: {key}')
|
||||||
|
mock_redis.__contains__ = __contains__
|
||||||
|
|
||||||
|
def get(key):
|
||||||
|
if key == 'release:mbid:media:count':
|
||||||
|
return 2
|
||||||
|
elif key == 'release:mbid:media:1:recordings:count':
|
||||||
|
return None
|
||||||
|
elif key == 'release:mbid:media:2:recordings:count':
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
self.fail(f'Key inesperada en get: {key}')
|
||||||
|
mock_redis.get = get
|
||||||
|
|
||||||
|
def zcard(key):
|
||||||
|
if key == 'release:mbid:media':
|
||||||
|
return 2
|
||||||
|
else:
|
||||||
|
self.fail(f'Key inesperada en zcard: {key}')
|
||||||
|
mock_redis.zcard = zcard
|
||||||
|
|
||||||
|
def zrange(key, start, finish):
|
||||||
|
if key == 'release:mbid:media':
|
||||||
|
return [json.dumps(media) for media in medias]
|
||||||
|
else:
|
||||||
|
self.fail(f'Key inesperada en zrange: {key}')
|
||||||
|
mock_redis.zrange = zrange
|
||||||
|
|
||||||
|
response = cache.get_recordings_of_release('mbid')
|
||||||
|
self.assertEquals(response, None)
|
||||||
|
|
||||||
|
mock_jobs.load_entities_of_release.delay.assert_called_with('mbid')
|
||||||
|
|
||||||
@patch('fetcher.cache.jobs')
|
@patch('fetcher.cache.jobs')
|
||||||
@patch('fetcher.cache.get_redis_connection')
|
@patch('fetcher.cache.get_redis_connection')
|
||||||
def test_get_recordings_of_release_all_medias_bad_recording_count(self,
|
def test_get_recordings_of_release_all_medias_bad_recording_count(self,
|
||||||
@@ -503,6 +558,10 @@ class CacheTest(TestCase):
|
|||||||
return True
|
return True
|
||||||
elif key == 'release:mbid:media:2:recordings':
|
elif key == 'release:mbid:media:2:recordings':
|
||||||
return True
|
return True
|
||||||
|
elif key == 'release:mbid:media:1:recordings:count':
|
||||||
|
return True
|
||||||
|
elif key == 'release:mbid:media:2:recordings:count':
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
self.fail(f'Key inesperada en __contains__: {key}')
|
self.fail(f'Key inesperada en __contains__: {key}')
|
||||||
mock_redis.__contains__ = __contains__
|
mock_redis.__contains__ = __contains__
|
||||||
@@ -557,6 +616,10 @@ class CacheTest(TestCase):
|
|||||||
return True
|
return True
|
||||||
elif key == 'release:mbid:media:2:recordings':
|
elif key == 'release:mbid:media:2:recordings':
|
||||||
return True
|
return True
|
||||||
|
elif key == 'release:mbid:media:1:recordings:count':
|
||||||
|
return True
|
||||||
|
elif key == 'release:mbid:media:2:recordings:count':
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
self.fail(f'Key inesperada en __contains__: {key}')
|
self.fail(f'Key inesperada en __contains__: {key}')
|
||||||
mock_redis.__contains__ = __contains__
|
mock_redis.__contains__ = __contains__
|
||||||
@@ -615,6 +678,10 @@ class CacheTest(TestCase):
|
|||||||
return True
|
return True
|
||||||
elif key == 'release:mbid:media:2:recordings':
|
elif key == 'release:mbid:media:2:recordings':
|
||||||
return True
|
return True
|
||||||
|
elif key == 'release:mbid:media:1:recordings:count':
|
||||||
|
return True
|
||||||
|
elif key == 'release:mbid:media:2:recordings:count':
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
self.fail(f'Key inesperada en __contains__: {key}')
|
self.fail(f'Key inesperada en __contains__: {key}')
|
||||||
mock_redis.__contains__ = __contains__
|
mock_redis.__contains__ = __contains__
|
||||||
|
|||||||
Reference in New Issue
Block a user