diff --git a/openiziai/fine_tuning.py b/openiziai/fine_tuning.py index b831012..ef807f5 100644 --- a/openiziai/fine_tuning.py +++ b/openiziai/fine_tuning.py @@ -105,7 +105,6 @@ def status(self) -> Optional[str]: return self._job_status.name - # TODO: Consertar mocks para testar a propriedade @property def model(self) -> Optional[GPTModel]: if self._model: diff --git a/tests/test_fine_tuning.py b/tests/test_fine_tuning.py index 3bde3a9..b577e61 100644 --- a/tests/test_fine_tuning.py +++ b/tests/test_fine_tuning.py @@ -2,6 +2,7 @@ from unittest.mock import MagicMock, mock_open, patch import pytest +from openai import OpenAI from pydantic import ValidationError from openiziai.fine_tuning import FineTuning @@ -81,3 +82,41 @@ def test_retrieve_fine_tuned_model(fine_tuning, valid_task): assert fine_tuning.model.task == valid_task assert fine_tuning.model.base_model == 'gpt-3.5-turbo' assert fine_tuning.model.created_at + + +def test_start_fine_tuning_without_uploaded_file(fine_tuning): + assert not fine_tuning.start() + + +def test_retrieve_status_without_job(fine_tuning): + assert not fine_tuning.status + + +def test_retrieve_model_without_completed_job(valid_task): + mock_path = MagicMock(spec=Path) + mock_path.stat.return_value.st_size = 100000 + client = MagicMock(spec=OpenAI) + files_mock = MagicMock( + create=MagicMock(return_value=MagicMock(id='file-id')) + ) + fine_tuning_mock = MagicMock( + jobs=MagicMock( + create=MagicMock(return_value=MagicMock(id='job-id')), + retrieve=MagicMock( + return_value=MagicMock(status='failed', fine_tuned_model=None) + ), + ) + ) + + client.files = files_mock + client.fine_tuning = fine_tuning_mock + + fine_tuning = FineTuning( + client=client, train_file=mock_path, task=valid_task + ) + + with patch('builtins.open', mock_open(read_data='data')): + fine_tuning.upload_file_to_openai().start() + + assert fine_tuning.status == 'FAILED' + assert not fine_tuning.model