From 9c2dc6a8a0f6eb7cf179b590bba17a52b17dc700 Mon Sep 17 00:00:00 2001 From: Olezhich Date: Sat, 16 Aug 2025 20:43:51 +0300 Subject: [PATCH] added more db tests --- audiostats/db/api.py | 3 --- audiostats/db/repositories.py | 4 +++- tests/test_db_api.py | 17 ++++++++++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/audiostats/db/api.py b/audiostats/db/api.py index 2ebb4ed..8e52228 100644 --- a/audiostats/db/api.py +++ b/audiostats/db/api.py @@ -15,17 +15,14 @@ def __init__(self, session_factory : sessionmaker[Session]): self._session_factory = session_factory def upsert_albums(self, albums : Iterator[AlbumDTO]): - t_start = time.time() with UnitOfWork(self._session_factory) as uof: total, success = 0, 0 for album in albums: uof.albums.upsert(album) total += 1 success += 1 - logger.info(f'Albums updated/inserted in {(time.time() - t_start) * 1000:.3f} ms. Total: {total}, success: {success}') def get_all_albums(self): - t_start = time.time() with UnitOfWork(self._session_factory) as uof: return uof.albums.all() diff --git a/audiostats/db/repositories.py b/audiostats/db/repositories.py index 4cbe948..def9794 100644 --- a/audiostats/db/repositories.py +++ b/audiostats/db/repositories.py @@ -26,10 +26,12 @@ def upsert(self, album_data : AlbumDTO): update_track_orm_f_dto(old_track, dto) else: track = create_track_orm_f_dto(dto) + track.album = album album.tracks.append(track) for track in old_tracks_by_title.values(): - album.tracks.remove(track) + #album.tracks.remove(track) + self._session.delete(track) def find_by_title_performer(self, title : str, performer : str | None) -> Album | None: return self._session.query(Album).filter(Album.title == title and Album.performer == performer if performer else Album.performer.is_(None)).first() diff --git a/tests/test_db_api.py b/tests/test_db_api.py index 3167adf..1526cec 100644 --- a/tests/test_db_api.py +++ b/tests/test_db_api.py @@ -1,6 +1,5 @@ -import logging - from audiostats.db.api import DBApi +from audiostats.handlers import TrackDTO from tests import test_sessionmaker, test_engine def test_upsert_albums(test_sessionmaker, processed_album_dtos): @@ -10,7 +9,19 @@ def test_upsert_albums(test_sessionmaker, processed_album_dtos): albums = api.get_all_albums() - assert albums.sort(key=lambda x: x.title) == processed_album_dtos.sort(key=lambda x: x.title) + assert albums.sort(key=lambda x: x.title) == processed_album_dtos.sort(key=lambda x: x.title), 'Insert some albums to db' + + processed_album_dtos[0].tracks.pop(-1) + processed_album_dtos[0].tracks.pop(2) + processed_album_dtos[1].tracks.append(TrackDTO(title='New_Track_1', number=6, path='music/new_track_1.flac', offset=None, duration=None)) + processed_album_dtos[1].year = None + + api.upsert_albums(processed_album_dtos) + + albums=api.get_all_albums() + + assert albums.sort(key=lambda x: x.title) == processed_album_dtos.sort(key=lambda x: x.title), 'Update some albums in db' +