From 65c93d7ad56f68533b47c9a3acdbc3576bda0f88 Mon Sep 17 00:00:00 2001 From: Tasawer Date: Wed, 21 Oct 2015 17:01:47 +0500 Subject: [PATCH] Fix for multiple provider ids ECOM-2538 --- .../djangoapps/credit/tests/test_views.py | 45 +++++++++++++++++++ openedx/core/djangoapps/credit/views.py | 4 +- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/openedx/core/djangoapps/credit/tests/test_views.py b/openedx/core/djangoapps/credit/tests/test_views.py index fc95c762b6..075271e22a 100644 --- a/openedx/core/djangoapps/credit/tests/test_views.py +++ b/openedx/core/djangoapps/credit/tests/test_views.py @@ -336,6 +336,51 @@ class CreditProviderViewTests(UrlResetMixin, TestCase): request = CreditRequest.objects.get(uuid=uuid) self.assertEqual(request.status, expected_status) + def test_get_providers_detail(self): + """Verify that the method 'get_provider_detail' returns provider with + the given provide in 'provider_ids'. + """ + url = reverse("credit:providers_detail") + "?provider_ids=hogwarts" + response = self.client.get(url) + expected = [ + { + 'enable_integration': True, + 'description': '', + 'url': 'https://credit.example.com/request', + 'status_url': '', + 'thumbnail_url': '', + 'fulfillment_instructions': None, + 'display_name': '', + 'id': 'hogwarts' + } + ] + + self.assertListEqual(json.loads(response.content), expected) + + def test_get_providers_with_multiple_provider_ids(self): + """Test that the method 'get_provider_detail' returns multiple + providers with given 'provider_ids' or when no provider in + 'provider_ids' is given. + """ + # Add another credit provider for the course + CreditProvider.objects.create( + provider_id='dummy_id', + enable_integration=True, + provider_url='https://example.com', + ) + + # verify that all the matching providers are returned when provider ids + # are given in parameter 'provider_ids' + url = reverse("credit:providers_detail") + "?provider_ids=hogwarts,dummy_id" + response = self.client.get(url) + self.assertEquals(len(json.loads(response.content)), 2) + + # verify that all providers are returned when no provider id in + # parameter 'provider_ids' is provided + url = reverse("credit:providers_detail") + response = self.client.get(url) + self.assertEquals(len(json.loads(response.content)), 2) + @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') class CreditCourseViewSetTests(TestCase): diff --git a/openedx/core/djangoapps/credit/views.py b/openedx/core/djangoapps/credit/views.py index 21bec85ad4..2ef961e919 100644 --- a/openedx/core/djangoapps/credit/views.py +++ b/openedx/core/djangoapps/credit/views.py @@ -74,8 +74,8 @@ def get_providers_detail(request): * 404 Not Found: The provider does not exist. """ - provider_id = request.GET.get("provider_id", None) - providers_list = provider_id.split(",") if provider_id else None + provider_ids = request.GET.get("provider_ids", None) + providers_list = provider_ids.split(",") if provider_ids else None providers = api.get_credit_providers(providers_list) return JsonResponse(providers)