diff --git a/awx/main/models/label.py b/awx/main/models/label.py index af9a2241b7..9323ab4973 100644 --- a/awx/main/models/label.py +++ b/awx/main/models/label.py @@ -37,7 +37,7 @@ class Label(CommonModelNameNotUnique): return \ Label.objects.filter( organization=None, - jobtemplate_labels__isnull=True + unifiedjobtemplate_labels__isnull=True ) def is_detached(self): diff --git a/awx/main/tests/unit/api/serializers/test_inventory_serializers.py b/awx/main/tests/unit/api/serializers/test_inventory_serializers.py index 0208105179..35f36a1100 100644 --- a/awx/main/tests/unit/api/serializers/test_inventory_serializers.py +++ b/awx/main/tests/unit/api/serializers/test_inventory_serializers.py @@ -28,12 +28,12 @@ class TestCustomInventoryScriptSerializer(object): (False, False, False, None))) def test_to_representation_orphan(self, superuser, sysaudit, admin_role, value): with mock.patch.object(CustomInventoryScriptSerializer, 'get_summary_fields', return_value={}): - User.add_to_class('is_system_auditor', sysaudit) + with mock.patch.object(User, 'is_system_auditor', return_value=sysaudit): user = User(username="root", is_superuser=superuser) roles = [user] if admin_role else [] with mock.patch('awx.main.models.CustomInventoryScript.admin_role', new_callable=PropertyMock, return_value=roles): - cis = CustomInventoryScript(pk=1, script='#!/python') + cis = CustomInventoryScript(pk=1, script=value) serializer = CustomInventoryScriptSerializer() factory = APIRequestFactory() diff --git a/awx/main/tests/unit/models/test_label.py b/awx/main/tests/unit/models/test_label.py index 20da73e9ad..9aaa6a1171 100644 --- a/awx/main/tests/unit/models/test_label.py +++ b/awx/main/tests/unit/models/test_label.py @@ -1,65 +1,66 @@ import pytest +import mock from awx.main.models.label import Label from awx.main.models.unified_jobs import UnifiedJobTemplate, UnifiedJob -def test_get_orphaned_labels(mocker): - mock_query_set = mocker.MagicMock() - Label.objects.filter = mocker.MagicMock(return_value=mock_query_set) +mock_query_set = mock.MagicMock() - ret = Label.get_orphaned_labels() +mock_objects = mock.MagicMock(filter=mock.MagicMock(return_value=mock_query_set)) - assert mock_query_set == ret - Label.objects.filter.assert_called_with(organization=None, jobtemplate_labels__isnull=True) +@mock.patch('awx.main.models.label.Label.objects', mock_objects) +class TestLabelFilterMocked: -def test_is_detached(mocker): - mock_query_set = mocker.MagicMock() - Label.objects.filter = mocker.MagicMock(return_value=mock_query_set) - mock_query_set.count.return_value = 1 + def test_get_orphaned_labels(self, mocker): + ret = Label.get_orphaned_labels() - label = Label(id=37) - ret = label.is_detached() + assert mock_query_set == ret + Label.objects.filter.assert_called_with(organization=None, unifiedjobtemplate_labels__isnull=True) - assert ret is True - Label.objects.filter.assert_called_with(id=37, unifiedjob_labels__isnull=True, unifiedjobtemplate_labels__isnull=True) - mock_query_set.count.assert_called_with() + def test_is_detached(self, mocker): + mock_query_set.count.return_value = 1 -def test_is_detached_not(mocker): - mock_query_set = mocker.MagicMock() - Label.objects.filter = mocker.MagicMock(return_value=mock_query_set) - mock_query_set.count.return_value = 0 + label = Label(id=37) + ret = label.is_detached() - label = Label(id=37) - ret = label.is_detached() + assert ret is True + Label.objects.filter.assert_called_with(id=37, unifiedjob_labels__isnull=True, unifiedjobtemplate_labels__isnull=True) + mock_query_set.count.assert_called_with() - assert ret is False - Label.objects.filter.assert_called_with(id=37, unifiedjob_labels__isnull=True, unifiedjobtemplate_labels__isnull=True) - mock_query_set.count.assert_called_with() + def test_is_detached_not(self, mocker): + mock_query_set.count.return_value = 0 -@pytest.mark.parametrize("jt_count,j_count,expected", [ - (1, 0, True), - (0, 1, True), - (1, 1, False), -]) -def test_is_candidate_for_detach(mocker, jt_count, j_count, expected): - mock_job_qs = mocker.MagicMock() - mock_job_qs.count = mocker.MagicMock(return_value=j_count) - UnifiedJob.objects = mocker.MagicMock() - UnifiedJob.objects.filter = mocker.MagicMock(return_value=mock_job_qs) + label = Label(id=37) + ret = label.is_detached() - mock_jt_qs = mocker.MagicMock() - mock_jt_qs.count = mocker.MagicMock(return_value=jt_count) - UnifiedJobTemplate.objects = mocker.MagicMock() - UnifiedJobTemplate.objects.filter = mocker.MagicMock(return_value=mock_jt_qs) + assert ret is False + Label.objects.filter.assert_called_with(id=37, unifiedjob_labels__isnull=True, unifiedjobtemplate_labels__isnull=True) + mock_query_set.count.assert_called_with() - label = Label(id=37) - ret = label.is_candidate_for_detach() + @pytest.mark.parametrize("jt_count,j_count,expected", [ + (1, 0, True), + (0, 1, True), + (1, 1, False), + ]) + def test_is_candidate_for_detach(self, mocker, jt_count, j_count, expected): + mock_job_qs = mocker.MagicMock() + mock_job_qs.count = mocker.MagicMock(return_value=j_count) + UnifiedJob.objects = mocker.MagicMock() + UnifiedJob.objects.filter = mocker.MagicMock(return_value=mock_job_qs) - UnifiedJob.objects.filter.assert_called_with(labels__in=[label.id]) - UnifiedJobTemplate.objects.filter.assert_called_with(labels__in=[label.id]) - mock_job_qs.count.assert_called_with() - mock_jt_qs.count.assert_called_with() + mock_jt_qs = mocker.MagicMock() + mock_jt_qs.count = mocker.MagicMock(return_value=jt_count) + UnifiedJobTemplate.objects = mocker.MagicMock() + UnifiedJobTemplate.objects.filter = mocker.MagicMock(return_value=mock_jt_qs) - assert ret is expected + label = Label(id=37) + ret = label.is_candidate_for_detach() + + UnifiedJob.objects.filter.assert_called_with(labels__in=[label.id]) + UnifiedJobTemplate.objects.filter.assert_called_with(labels__in=[label.id]) + mock_job_qs.count.assert_called_with() + mock_jt_qs.count.assert_called_with() + + assert ret is expected diff --git a/awx/main/tests/unit/test_tasks.py b/awx/main/tests/unit/test_tasks.py index ff2faf63a4..3c0f766553 100644 --- a/awx/main/tests/unit/test_tasks.py +++ b/awx/main/tests/unit/test_tasks.py @@ -34,7 +34,7 @@ def test_send_notifications_list(mocker): mock_job = mocker.MagicMock(spec=UnifiedJob) patches.append(mocker.patch('awx.main.models.UnifiedJob.objects.get', return_value=mock_job)) - mock_notification = mocker.MagicMock(spec=Notification, subject="test", body={ 'hello': 'world' }) + mock_notification = mocker.MagicMock(spec=Notification, subject="test", body={'hello': 'world'}) patches.append(mocker.patch('awx.main.models.Notification.objects.get', return_value=mock_notification)) with apply_patches(patches):