From 18e31a6aea0624f7264e81fff716a28c09a7f80a Mon Sep 17 00:00:00 2001 From: Jose Borreguero Date: Tue, 1 Mar 2022 20:54:18 -0500 Subject: [PATCH 1/3] provide for deprecated method and correct the name of a method Signed-off-by: Jose Borreguero --- django_remote_submission/models.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/django_remote_submission/models.py b/django_remote_submission/models.py index ed50c36..405f0ec 100644 --- a/django_remote_submission/models.py +++ b/django_remote_submission/models.py @@ -64,8 +64,11 @@ class ListField(models.TextField): # noqa: D101 return str(value) def value_to_string(self, obj): # noqa: D102 - value = self._get_val_from_obj(obj) - return self.get_db_prep_value(value) + try: + value = self._get_val_from_obj(obj) # deprecated in Django 2.0 + except AttributeError: + value = self.value_from_object(obj) + return self.get_prep_value(value) class Interpreter(TimeStampedModel): -- GitLab From c6125adb603660f7bdab110dfe040d5ad3bc7f2d Mon Sep 17 00:00:00 2001 From: Jose Borreguero Date: Tue, 1 Mar 2022 20:54:36 -0500 Subject: [PATCH 2/3] unit test for ListField Signed-off-by: Jose Borreguero --- tests/unit/test_models.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tests/unit/test_models.py b/tests/unit/test_models.py index 4919dbb..653757c 100644 --- a/tests/unit/test_models.py +++ b/tests/unit/test_models.py @@ -8,7 +8,7 @@ test_django-remote-submission Tests for `django-remote-submission` models module. """ # package imports -from django_remote_submission.models import IdentityFileModel, Interpreter, Log, Job, Result, Server +from django_remote_submission.models import ListField, IdentityFileModel, Interpreter, Log, Job, Result, Server from django_remote_submission.wrapper.remote import IdentityFile # third party imports @@ -20,6 +20,7 @@ import pytest # standard imports from pathlib import Path import os +from unittest.mock import MagicMock @pytest.fixture @@ -72,6 +73,13 @@ def result(job): ) +@pytest.mark.django_db +def test_interpreter_string_representation(interpreter): + assert str(interpreter.name) in str(interpreter) + assert str(interpreter.path) in str(interpreter) + assert str(interpreter.arguments) in str(interpreter) + + @pytest.mark.django_db def test_server_string_representation(server): assert str(server.title) in str(server) @@ -96,6 +104,26 @@ def test_result_string_representation(result): assert str(result.job) in str(result) +class TestListField: + def test_to_python(self): + for null_value in (None, "", [], 0): + assert isinstance(ListField().to_python(null_value), list) + items = [1, 2, 3] + assert id(ListField().to_python(items)) == id(items) + assert ListField().to_python('[1, 2, "three"]') == [1, 2, "three"] + + def test_get_prep_value(self): + for null_value in ("", [], 0): + assert ListField().get_prep_value(null_value) == str(null_value) + + def test_value_to_string(self): + items = ListField() + items.attname = 'mock_object' + obj = MagicMock() + obj.mock_object = 'fake' + assert items.value_to_string(obj) == 'fake' + + class TestIdentityFileModel: r''' @pytest.mark.django_db -- GitLab From b50519c15ec645b4f06329d27b119d90859e803e Mon Sep 17 00:00:00 2001 From: Jose Borreguero Date: Thu, 3 Mar 2022 16:17:58 -0500 Subject: [PATCH 3/3] not backwards compatible with Django < 2.0 Signed-off-by: Jose Borreguero --- django_remote_submission/models.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/django_remote_submission/models.py b/django_remote_submission/models.py index 405f0ec..f1ffcf1 100644 --- a/django_remote_submission/models.py +++ b/django_remote_submission/models.py @@ -64,10 +64,7 @@ class ListField(models.TextField): # noqa: D101 return str(value) def value_to_string(self, obj): # noqa: D102 - try: - value = self._get_val_from_obj(obj) # deprecated in Django 2.0 - except AttributeError: - value = self.value_from_object(obj) + value = self.value_from_object(obj) return self.get_prep_value(value) -- GitLab