From 20aceb1932767c684fdbbeac96cd7cc8a9cbd3a5 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Fri, 11 Apr 2025 14:28:45 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(backend)=20add=20property=20to=20chec?= =?UTF-8?q?k=20if=20recording=20file=20is=20saved?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce new property that verifies if a recording file has a saved status. While the implementation is straightforward, it improves code readability and provides a clear, semantic way to check file status. --- src/backend/core/models.py | 5 +++ .../core/tests/test_models_recording.py | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/src/backend/core/models.py b/src/backend/core/models.py index f5199ec1..49e8b732 100644 --- a/src/backend/core/models.py +++ b/src/backend/core/models.py @@ -578,6 +578,11 @@ class Recording(BaseModel): RecordingStatusChoices.STOPPED, } + @property + def is_saved(self) -> bool: + """Check if the recording is in a saved state.""" + return self.status == RecordingStatusChoices.SAVED + @property def extension(self): """Get recording extension based on its mode.""" diff --git a/src/backend/core/tests/test_models_recording.py b/src/backend/core/tests/test_models_recording.py index abcefede..e45023be 100644 --- a/src/backend/core/tests/test_models_recording.py +++ b/src/backend/core/tests/test_models_recording.py @@ -250,3 +250,38 @@ def test_models_recording_key_for_unknown_mode(settings): recording.mode = "unknown_mode" expected_path = f"/custom/path/{recording.id}.{FileExtension.MP4.value}" assert recording.key == expected_path + + +# Test is_saved method + + +def test_models_recording_is_saved_true(): + """Test is_saved property returns True for SAVED status.""" + recording = RecordingFactory(status=RecordingStatusChoices.SAVED) + assert recording.is_saved is True + + +def test_models_recording_is_saved_false_active(): + """Test is_saved property returns False for ACTIVE status.""" + recording = RecordingFactory(status=RecordingStatusChoices.ACTIVE) + assert recording.is_saved is False + + +def test_models_recording_is_saved_false_initiated(): + """Test is_saved property returns False for INITIATED status.""" + recording = RecordingFactory(status=RecordingStatusChoices.INITIATED) + assert recording.is_saved is False + + +@pytest.mark.parametrize( + "status", + [ + RecordingStatusChoices.FAILED_TO_STOP, + RecordingStatusChoices.FAILED_TO_START, + RecordingStatusChoices.ABORTED, + ], +) +def test_models_recording_is_saved_false_error_states(status): + """Test is_saved property returns False for error statuses.""" + recording = RecordingFactory(status=status) + assert recording.is_saved is False