From fd078ae1f5e0537338baf6525f65c846b53c056c Mon Sep 17 00:00:00 2001
From: Nimisha Asthagiri <nasthagiri@edx.org>
Date: Sat, 14 Apr 2018 11:13:19 -0400
Subject: [PATCH] Remove Completion's usage of Course Structures API

---
 .../completion_integration/test_views.py      | 24 +++++++++++++++----
 requirements/edx-sandbox/base.txt             |  2 +-
 requirements/edx-sandbox/shared.txt           |  2 +-
 requirements/edx/base.txt                     |  6 ++---
 requirements/edx/development.txt              |  8 +++----
 requirements/edx/testing.txt                  |  8 +++----
 6 files changed, 32 insertions(+), 18 deletions(-)

diff --git a/openedx/tests/completion_integration/test_views.py b/openedx/tests/completion_integration/test_views.py
index f8b27d9f2b5..f9edcdb2fb0 100644
--- a/openedx/tests/completion_integration/test_views.py
+++ b/openedx/tests/completion_integration/test_views.py
@@ -11,7 +11,6 @@ from rest_framework.test import APIClient
 from student.tests.factories import UserFactory, CourseEnrollmentFactory
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
 from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
-from openedx.core.djangoapps.content.course_structures.tasks import update_course_structure
 from openedx.core.djangolib.testing.utils import skip_unless_lms
 
 
@@ -44,7 +43,6 @@ class CompletionBatchTestCase(CompletionWaffleTestMixin, ModuleStoreTestCase):
             category="problem",
             display_name="Test Problem",
         )
-        update_course_structure(unicode(self.course.id))
 
         # Create users
         self.staff_user = UserFactory(is_staff=True)
@@ -99,15 +97,31 @@ class CompletionBatchTestCase(CompletionWaffleTestMixin, ModuleStoreTestCase):
                 }
             }, 400, {"detail": "Invalid course key: not:a:course:key"}
         ),
+        # Block must be a valid key
+        (
+            {
+                'username': ENROLLED_USERNAME,
+                'course_key': COURSE_KEY,
+                'blocks': {
+                    'not:a:block:key': 1.0,
+                }
+            }, 400, {"detail": "Invalid block key: not:a:block:key"}
+        ),
         # Block not in course
         (
             {
                 'username': ENROLLED_USERNAME,
                 'course_key': COURSE_KEY,
                 'blocks': {
-                    'some:other:block': 1.0,
+                    'i4x://some/other_course/problem/Test_Problem': 1.0,
                 }
-            }, 400, {"detail": "Block with key: 'some:other:block' is not in course {}".format(COURSE_KEY)}
+            },
+            400,
+            {
+                "detail": "Block with key: 'i4x://some/other_course/problem/Test_Problem' is not in course {}".format(
+                    COURSE_KEY,
+                )
+            }
         ),
         # Course key is required
         (
@@ -152,7 +166,7 @@ class CompletionBatchTestCase(CompletionWaffleTestMixin, ModuleStoreTestCase):
                 'blocks': {
                     BLOCK_KEY: 1.0,
                 }
-            }, 404, {"detail": "CourseStructure matching query does not exist."}
+            }, 400, {"detail": "User is not enrolled in course."}
         ),
     )
     @ddt.unpack
diff --git a/requirements/edx-sandbox/base.txt b/requirements/edx-sandbox/base.txt
index 3a24105d110..095e5f34a5d 100644
--- a/requirements/edx-sandbox/base.txt
+++ b/requirements/edx-sandbox/base.txt
@@ -16,7 +16,7 @@ cryptography==2.1.4
 enum34==1.1.6
 futures==3.2.0            # via tornado
 idna==2.6
-ipaddress==1.0.19
+ipaddress==1.0.22
 lxml==3.8.0
 matplotlib==1.3.1
 networkx==1.7
diff --git a/requirements/edx-sandbox/shared.txt b/requirements/edx-sandbox/shared.txt
index 36f98d7d553..349288916e1 100644
--- a/requirements/edx-sandbox/shared.txt
+++ b/requirements/edx-sandbox/shared.txt
@@ -14,7 +14,7 @@ cffi==1.11.5              # via cryptography
 cryptography==2.1.4
 enum34==1.1.6             # via cryptography
 idna==2.6                 # via cryptography
-ipaddress==1.0.19         # via cryptography
+ipaddress==1.0.22         # via cryptography
 lxml==3.8.0
 networkx==1.7
 nltk==3.2.5
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index b2439bea0ee..7b3ca62bc75 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -72,7 +72,7 @@ cryptography==2.1.4
 cssselect==0.9.1
 cssutils==1.0.2           # via pynliner
 ddt==0.8.0
-decorator==4.2.1          # via dogapi, pycontracts
+decorator==4.3.0          # via dogapi, pycontracts
 defusedxml==0.4.1
 dicttoxml==1.7.4          # via moto
 django-appconf==1.0.2     # via django-statici18n
@@ -121,7 +121,7 @@ edx-ace==0.1.6
 edx-analytics-data-api-client==0.14.4
 edx-ccx-keys==0.2.1
 edx-celeryutils==0.2.7
-edx-completion==0.1.5
+edx-completion==0.1.6
 edx-django-oauth2-provider==1.2.5
 edx-django-release-util==0.3.1
 edx-django-sites-extensions==2.3.1
@@ -166,7 +166,7 @@ httplib2==0.11.3          # via oauth2, zendesk
 httpretty==0.8.14
 idna==2.6
 ipaddr==2.1.11
-ipaddress==1.0.19
+ipaddress==1.0.22
 isodate==0.6.0            # via python-saml
 itsdangerous==0.24        # via flask
 jinja2==2.10              # via flask, moto, sphinx
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index 19677829ec0..fb9db4508d3 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -80,7 +80,7 @@ cryptography==2.1.4
 cssselect==0.9.1
 cssutils==1.0.2
 ddt==0.8.0
-decorator==4.2.1
+decorator==4.3.0
 defusedxml==0.4.1
 dicttoxml==1.7.4
 diff-cover==0.9.8
@@ -130,7 +130,7 @@ edx-ace==0.1.6
 edx-analytics-data-api-client==0.14.4
 edx-ccx-keys==0.2.1
 edx-celeryutils==0.2.7
-edx-completion==0.1.5
+edx-completion==0.1.6
 edx-django-oauth2-provider==1.2.5
 edx-django-release-util==0.3.1
 edx-django-sites-extensions==2.3.1
@@ -180,7 +180,7 @@ idna==2.6
 incremental==17.5.0
 inflect==0.2.5
 ipaddr==2.1.11
-ipaddress==1.0.19
+ipaddress==1.0.22
 isodate==0.6.0
 isort==4.2.5
 itsdangerous==0.24
@@ -313,7 +313,7 @@ sympy==0.7.1
 testfixtures==4.5.0
 testtools==0.9.34
 text-unidecode==1.2
-tox-battery==0.5
+tox-battery==0.5.1
 tox==2.8.2
 transifex-client==0.12.1
 twisted==16.6.0
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index e784caf6c22..229a57c8893 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -79,7 +79,7 @@ cryptography==2.1.4
 cssselect==0.9.1
 cssutils==1.0.2
 ddt==0.8.0
-decorator==4.2.1
+decorator==4.3.0
 defusedxml==0.4.1
 dicttoxml==1.7.4
 diff-cover==0.9.8
@@ -128,7 +128,7 @@ edx-ace==0.1.6
 edx-analytics-data-api-client==0.14.4
 edx-ccx-keys==0.2.1
 edx-celeryutils==0.2.7
-edx-completion==0.1.5
+edx-completion==0.1.6
 edx-django-oauth2-provider==1.2.5
 edx-django-release-util==0.3.1
 edx-django-sites-extensions==2.3.1
@@ -177,7 +177,7 @@ idna==2.6
 incremental==17.5.0       # via twisted
 inflect==0.2.5
 ipaddr==2.1.11
-ipaddress==1.0.19
+ipaddress==1.0.22
 isodate==0.6.0
 isort==4.2.5
 itsdangerous==0.24
@@ -308,7 +308,7 @@ sympy==0.7.1
 testfixtures==4.5.0
 testtools==0.9.34
 text-unidecode==1.2
-tox-battery==0.5
+tox-battery==0.5.1
 tox==2.8.2
 transifex-client==0.12.1
 twisted==16.6.0           # via pa11ycrawler, scrapy
-- 
GitLab