From 5fbbf4979a0a87335986376b8dab1b3aa1e182c8 Mon Sep 17 00:00:00 2001 From: bmedx Date: Tue, 21 Nov 2017 15:30:01 -0500 Subject: [PATCH] Tag LMS Unit 1 tests that fail in Django 1.11 --- lms/djangoapps/badges/tests/test_models.py | 2 ++ lms/djangoapps/branding/tests/test_page.py | 3 +++ .../tests/test_cert_management.py | 2 ++ .../certificates/tests/test_models.py | 3 +++ .../certificates/tests/test_views.py | 3 +++ .../certificates/tests/test_webview_views.py | 11 +++++----- .../course_wiki/tests/test_middleware.py | 2 ++ lms/djangoapps/course_wiki/tests/tests.py | 6 +++++ lms/djangoapps/courseware/tests/test_about.py | 8 +++++++ .../courseware/tests/test_access.py | 3 +++ .../courseware/tests/test_course_info.py | 8 ++++++- .../courseware/tests/test_course_survey.py | 2 ++ .../courseware/tests/test_date_summary.py | 2 ++ .../courseware/tests/test_lti_integration.py | 6 +++-- .../courseware/tests/test_masquerade.py | 22 +++++++++---------- .../courseware/tests/test_microsites.py | 3 +++ .../courseware/tests/test_module_render.py | 11 ++++++++++ .../courseware/tests/test_navigation.py | 7 ++++-- .../courseware/tests/test_password_history.py | 2 ++ .../courseware/tests/test_split_module.py | 3 +++ .../tests/test_submitting_problems.py | 7 ++++++ lms/djangoapps/courseware/tests/test_tabs.py | 12 ++++++++++ .../tests/test_view_authentication.py | 6 +++++ lms/djangoapps/courseware/tests/test_views.py | 8 +++++++ lms/djangoapps/courseware/tests/tests.py | 3 +++ .../django_comment_client/tests/test_utils.py | 3 +++ lms/djangoapps/instructor/tests/test_api.py | 7 ++++++ .../instructor/tests/test_ecommerce.py | 2 ++ lms/djangoapps/teams/tests/test_views.py | 3 +++ .../test_crowdsource_hinter.py | 2 ++ .../xblock_integration/test_recommender.py | 10 +++++++-- 31 files changed, 148 insertions(+), 24 deletions(-) diff --git a/lms/djangoapps/badges/tests/test_models.py b/lms/djangoapps/badges/tests/test_models.py index 88e0a9bb6e..c069ed8022 100644 --- a/lms/djangoapps/badges/tests/test_models.py +++ b/lms/djangoapps/badges/tests/test_models.py @@ -1,6 +1,7 @@ """ Tests for the Badges app models. """ +import pytest from django.core.exceptions import ValidationError from django.core.files.images import ImageFile from django.core.files.storage import default_storage @@ -37,6 +38,7 @@ class BadgeImageConfigurationTest(TestCase): Test the validation features of BadgeImageConfiguration. """ + @pytest.mark.django111_expected_failure def test_no_double_default(self): """ Verify that creating two configurations as default is not permitted. diff --git a/lms/djangoapps/branding/tests/test_page.py b/lms/djangoapps/branding/tests/test_page.py index 12fa3bca29..defc663dab 100644 --- a/lms/djangoapps/branding/tests/test_page.py +++ b/lms/djangoapps/branding/tests/test_page.py @@ -3,6 +3,7 @@ Tests for branding page """ import datetime +import pytest from django.conf import settings from django.contrib.auth.models import AnonymousUser from django.core.urlresolvers import reverse @@ -156,6 +157,7 @@ class PreRequisiteCourseCatalog(ModuleStoreTestCase, LoginEnrollmentTestCase, Mi @attr(shard=1) +@pytest.mark.django111_expected_failure class IndexPageCourseCardsSortingTests(ModuleStoreTestCase): """ Test for Index page course cards sorting @@ -291,6 +293,7 @@ class IndexPageCourseCardsSortingTests(ModuleStoreTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class IndexPageProgramsTests(SiteMixin, ModuleStoreTestCase): """ Tests for Programs List in Marketing Pages. diff --git a/lms/djangoapps/certificates/tests/test_cert_management.py b/lms/djangoapps/certificates/tests/test_cert_management.py index 32434ceffd..de1831c170 100644 --- a/lms/djangoapps/certificates/tests/test_cert_management.py +++ b/lms/djangoapps/certificates/tests/test_cert_management.py @@ -1,5 +1,6 @@ """Tests for the resubmit_error_certificates management command. """ import ddt +import pytest from django.core.management import call_command from django.core.management.base import CommandError from django.test.utils import override_settings @@ -138,6 +139,7 @@ class ResubmitErrorCertificatesTest(CertificateManagementTest): with self.assertRaisesRegexp(CommandError, invalid_key): call_command(self.command, course_key_list=[invalid_key]) + @pytest.mark.django111_expected_failure def test_course_does_not_exist(self): phantom_course = CourseLocator(org='phantom', course='phantom', run='phantom') self._create_cert(phantom_course, self.user, 'error') diff --git a/lms/djangoapps/certificates/tests/test_models.py b/lms/djangoapps/certificates/tests/test_models.py index 74399de1db..ba93cc98a1 100644 --- a/lms/djangoapps/certificates/tests/test_models.py +++ b/lms/djangoapps/certificates/tests/test_models.py @@ -2,6 +2,7 @@ import json import ddt +import pytest from django.conf import settings from django.core.exceptions import ValidationError from django.core.files.uploadedfile import SimpleUploadedFile @@ -263,6 +264,7 @@ class TestCertificateGenerationHistory(TestCase): ({"statuses_to_regenerate": ['downloadable', 'not_readable']}, 'already received', False), ) @ddt.unpack + @pytest.mark.django111_expected_failure def test_get_certificate_generation_candidates(self, task_input, expected, is_regeneration): staff = AdminFactory.create() instructor_task = InstructorTaskFactory.create( @@ -284,6 +286,7 @@ class TestCertificateGenerationHistory(TestCase): @ddt.data((True, "regenerated"), (False, "generated")) @ddt.unpack + @pytest.mark.django111_expected_failure def test_get_task_name(self, is_regeneration, expected): staff = AdminFactory.create() instructor_task = InstructorTaskFactory.create( diff --git a/lms/djangoapps/certificates/tests/test_views.py b/lms/djangoapps/certificates/tests/test_views.py index b99e3c8444..bf73b13d0c 100644 --- a/lms/djangoapps/certificates/tests/test_views.py +++ b/lms/djangoapps/certificates/tests/test_views.py @@ -5,6 +5,7 @@ from uuid import uuid4 import ddt import datetime +import pytest from django.conf import settings from django.core.cache import cache from django.core.urlresolvers import reverse @@ -260,6 +261,7 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase): self.store.update_item(self.course, self.user.id) @override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED) + @pytest.mark.django111_expected_failure def test_html_view_for_microsite(self): test_configuration_string = """{ "default": { @@ -309,6 +311,7 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase): self.assertIn('Microsite title', response.content) @override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED) + @pytest.mark.django111_expected_failure def test_html_view_microsite_configuration_missing(self): test_configuration_string = """{ "default": { diff --git a/lms/djangoapps/certificates/tests/test_webview_views.py b/lms/djangoapps/certificates/tests/test_webview_views.py index c8664a5935..6488539360 100644 --- a/lms/djangoapps/certificates/tests/test_webview_views.py +++ b/lms/djangoapps/certificates/tests/test_webview_views.py @@ -1,22 +1,20 @@ # -*- coding: utf-8 -*- """Tests for certificates views. """ +import datetime import json from collections import OrderedDict from urllib import urlencode from uuid import uuid4 -import ddt -import datetime +import pytest from django.conf import settings from django.core.urlresolvers import reverse from django.test.client import Client, RequestFactory from django.test.utils import override_settings - -from util.date_utils import strftime_localized from mock import patch -from nose.plugins.attrib import attr +import ddt from certificates.api import get_certificate_url from certificates.models import ( CertificateGenerationCourseSetting, @@ -40,6 +38,7 @@ from lms.djangoapps.badges.tests.factories import ( CourseCompleteImageConfigurationFactory ) from lms.djangoapps.grades.tests.utils import mock_passing_grade +from nose.plugins.attrib import attr from openedx.core.djangoapps.certificates.config import waffle from openedx.core.djangoapps.dark_lang.models import DarkLangConfig from openedx.core.lib.tests.assertions.events import assert_event_matches @@ -47,6 +46,7 @@ from student.roles import CourseStaffRole from student.tests.factories import CourseEnrollmentFactory, UserFactory from track.tests import EventTrackingTestCase from util import organizations_helpers as organizations_api +from util.date_utils import strftime_localized from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory @@ -243,6 +243,7 @@ class CommonCertificatesTestCase(ModuleStoreTestCase): @attr(shard=1) @ddt.ddt +@pytest.mark.django111_expected_failure class CertificatesViewsTests(CommonCertificatesTestCase): """ Tests for the certificates web/html views diff --git a/lms/djangoapps/course_wiki/tests/test_middleware.py b/lms/djangoapps/course_wiki/tests/test_middleware.py index 4ad9a36b00..3f6aa81e15 100644 --- a/lms/djangoapps/course_wiki/tests/test_middleware.py +++ b/lms/djangoapps/course_wiki/tests/test_middleware.py @@ -2,6 +2,7 @@ Tests for wiki middleware. """ +import pytest from django.test.client import Client from nose.plugins.attrib import attr from wiki.models import URLPath @@ -13,6 +14,7 @@ from xmodule.modulestore.tests.factories import CourseFactory @attr(shard=1) +@pytest.mark.django111_expected_failure class TestWikiAccessMiddleware(ModuleStoreTestCase): """Tests for WikiAccessMiddleware.""" diff --git a/lms/djangoapps/course_wiki/tests/tests.py b/lms/djangoapps/course_wiki/tests/tests.py index 1272f01f0a..78586cbe1d 100644 --- a/lms/djangoapps/course_wiki/tests/tests.py +++ b/lms/djangoapps/course_wiki/tests/tests.py @@ -1,3 +1,8 @@ +""" +Tests for course wiki +""" + +import pytest from django.core.urlresolvers import reverse from mock import patch from nose.plugins.attrib import attr @@ -9,6 +14,7 @@ from xmodule.modulestore.tests.factories import CourseFactory @attr(shard=1) +@pytest.mark.django111_expected_failure class WikiRedirectTestCase(EnterpriseTestConsentRequired, LoginEnrollmentTestCase, ModuleStoreTestCase): """ Tests for wiki course redirection. diff --git a/lms/djangoapps/courseware/tests/test_about.py b/lms/djangoapps/courseware/tests/test_about.py index 95e3943e72..0992cc8b8c 100644 --- a/lms/djangoapps/courseware/tests/test_about.py +++ b/lms/djangoapps/courseware/tests/test_about.py @@ -3,6 +3,7 @@ Test the about xblock """ import datetime +import pytest import pytz from ccx_keys.locator import CCXLocator from django.conf import settings @@ -38,6 +39,7 @@ SHIB_ERROR_STR = "The currently logged-in user account does not have permission @attr(shard=1) +@pytest.mark.django111_expected_failure class AboutTestCase(LoginEnrollmentTestCase, SharedModuleStoreTestCase, EventTrackingTestCase, MilestonesTestCaseMixin): """ Tests about xblock. @@ -192,6 +194,7 @@ class AboutTestCase(LoginEnrollmentTestCase, SharedModuleStoreTestCase, EventTra @attr(shard=1) +@pytest.mark.django111_expected_failure class AboutTestCaseXML(LoginEnrollmentTestCase, ModuleStoreTestCase): """ Tests for the course about page @@ -240,6 +243,7 @@ class AboutTestCaseXML(LoginEnrollmentTestCase, ModuleStoreTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class AboutWithCappedEnrollmentsTestCase(LoginEnrollmentTestCase, SharedModuleStoreTestCase): """ This test case will check the About page when a course has a capped enrollment @@ -287,6 +291,7 @@ class AboutWithCappedEnrollmentsTestCase(LoginEnrollmentTestCase, SharedModuleSt @attr(shard=1) +@pytest.mark.django111_expected_failure class AboutWithInvitationOnly(SharedModuleStoreTestCase): """ This test case will check the About page when a course is invitation only. @@ -334,6 +339,7 @@ class AboutWithInvitationOnly(SharedModuleStoreTestCase): @attr(shard=1) @patch.dict(settings.FEATURES, {'RESTRICT_ENROLL_BY_REG_METHOD': True}) +@pytest.mark.django111_expected_failure class AboutTestCaseShibCourse(LoginEnrollmentTestCase, SharedModuleStoreTestCase): """ Test cases covering about page behavior for courses that use shib enrollment domain ("shib courses") @@ -374,6 +380,7 @@ class AboutTestCaseShibCourse(LoginEnrollmentTestCase, SharedModuleStoreTestCase @attr(shard=1) +@pytest.mark.django111_expected_failure class AboutWithClosedEnrollment(ModuleStoreTestCase): """ This test case will check the About page for a course that has enrollment start/end @@ -419,6 +426,7 @@ class AboutWithClosedEnrollment(ModuleStoreTestCase): @attr(shard=1) @patch.dict(settings.FEATURES, {'ENABLE_SHOPPING_CART': True}) @patch.dict(settings.FEATURES, {'ENABLE_PAID_COURSE_REGISTRATION': True}) +@pytest.mark.django111_expected_failure class AboutPurchaseCourseTestCase(LoginEnrollmentTestCase, SharedModuleStoreTestCase): """ This test class runs through a suite of verifications regarding diff --git a/lms/djangoapps/courseware/tests/test_access.py b/lms/djangoapps/courseware/tests/test_access.py index acc4948a9e..e95beecd35 100644 --- a/lms/djangoapps/courseware/tests/test_access.py +++ b/lms/djangoapps/courseware/tests/test_access.py @@ -6,6 +6,7 @@ import datetime import itertools import ddt +import pytest import pytz from ccx_keys.locator import CCXLocator from django.contrib.auth.models import User @@ -158,6 +159,7 @@ class CoachAccessTestCaseCCX(SharedModuleStoreTestCase, LoginEnrollmentTestCase) @attr(shard=1) @ddt.ddt +@pytest.mark.django111_expected_failure class AccessTestCase(LoginEnrollmentTestCase, ModuleStoreTestCase, MilestonesTestCaseMixin): """ Tests for the various access controls on the student dashboard @@ -631,6 +633,7 @@ class AccessTestCase(LoginEnrollmentTestCase, ModuleStoreTestCase, MilestonesTes self.assertEqual(bool(access._has_access_course(self.staff, 'load_mobile', descriptor)), staff_expected) @patch.dict("django.conf.settings.FEATURES", {'ENABLE_PREREQUISITE_COURSES': True, 'MILESTONES_APP': True}) + @pytest.mark.django111_expected_failure def test_courseware_page_unfulfilled_prereqs(self): """ Test courseware access when a course has pre-requisite course yet to be completed diff --git a/lms/djangoapps/courseware/tests/test_course_info.py b/lms/djangoapps/courseware/tests/test_course_info.py index cc4ac9fd22..2b4afcffcd 100644 --- a/lms/djangoapps/courseware/tests/test_course_info.py +++ b/lms/djangoapps/courseware/tests/test_course_info.py @@ -3,11 +3,13 @@ Test the course_info xblock """ import mock -from ccx_keys.locator import CCXLocator +import pytest from django.conf import settings from django.core.urlresolvers import reverse from django.http import QueryDict from django.test.utils import override_settings + +from ccx_keys.locator import CCXLocator from lms.djangoapps.ccx.tests.factories import CcxFactory from nose.plugins.attrib import attr from openedx.core.djangoapps.self_paced.models import SelfPacedConfiguration @@ -33,6 +35,7 @@ QUERY_COUNT_TABLE_BLACKLIST = WAFFLE_TABLES @attr(shard=1) +@pytest.mark.django111_expected_failure class CourseInfoTestCase(EnterpriseTestConsentRequired, LoginEnrollmentTestCase, SharedModuleStoreTestCase): """ Tests for the Course Info page @@ -142,6 +145,7 @@ class CourseInfoTestCase(EnterpriseTestConsentRequired, LoginEnrollmentTestCase, @attr(shard=1) +@pytest.mark.django111_expected_failure class CourseInfoLastAccessedTestCase(LoginEnrollmentTestCase, ModuleStoreTestCase): """ Tests of the CourseInfo last accessed link. @@ -300,6 +304,7 @@ class CourseInfoTestCaseCCX(SharedModuleStoreTestCase, LoginEnrollmentTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class CourseInfoTestCaseXML(LoginEnrollmentTestCase, ModuleStoreTestCase): """ Tests for the Course Info page for an XML course @@ -349,6 +354,7 @@ class CourseInfoTestCaseXML(LoginEnrollmentTestCase, ModuleStoreTestCase): @attr(shard=1) @override_settings(FEATURES=dict(settings.FEATURES, EMBARGO=False)) +@pytest.mark.django111_expected_failure class SelfPacedCourseInfoTestCase(LoginEnrollmentTestCase, SharedModuleStoreTestCase): """ Tests for the info page of self-paced courses. diff --git a/lms/djangoapps/courseware/tests/test_course_survey.py b/lms/djangoapps/courseware/tests/test_course_survey.py index 7d827b917e..a12e760c0e 100644 --- a/lms/djangoapps/courseware/tests/test_course_survey.py +++ b/lms/djangoapps/courseware/tests/test_course_survey.py @@ -5,6 +5,7 @@ Python tests for the Survey workflows from collections import OrderedDict from copy import deepcopy +import pytest from django.contrib.auth.models import User from django.core.urlresolvers import reverse from nose.plugins.attrib import attr @@ -17,6 +18,7 @@ from xmodule.modulestore.tests.factories import CourseFactory @attr(shard=1) +@pytest.mark.django111_expected_failure class SurveyViewsTests(LoginEnrollmentTestCase, SharedModuleStoreTestCase, XssTestMixin): """ All tests for the views.py file diff --git a/lms/djangoapps/courseware/tests/test_date_summary.py b/lms/djangoapps/courseware/tests/test_date_summary.py index 879c1628d7..657278ab02 100644 --- a/lms/djangoapps/courseware/tests/test_date_summary.py +++ b/lms/djangoapps/courseware/tests/test_date_summary.py @@ -3,6 +3,7 @@ from datetime import datetime, timedelta import ddt +import pytest import waffle from django.contrib.messages.middleware import MessageMiddleware from django.core.urlresolvers import reverse @@ -45,6 +46,7 @@ from xmodule.modulestore.tests.factories import CourseFactory @attr(shard=1) @ddt.ddt +@pytest.mark.django111_expected_failure class CourseDateSummaryTest(SharedModuleStoreTestCase): """Tests for course date summary blocks.""" diff --git a/lms/djangoapps/courseware/tests/test_lti_integration.py b/lms/djangoapps/courseware/tests/test_lti_integration.py index cf6bc9476c..fdd941d101 100644 --- a/lms/djangoapps/courseware/tests/test_lti_integration.py +++ b/lms/djangoapps/courseware/tests/test_lti_integration.py @@ -5,13 +5,14 @@ import urllib from collections import OrderedDict import mock -import oauthlib +import pytest from django.conf import settings from django.core.urlresolvers import reverse -from nose.plugins.attrib import attr +import oauthlib from courseware.tests.helpers import BaseTestXmodule from courseware.views.views import get_course_lti_endpoints +from nose.plugins.attrib import attr from openedx.core.lib.url_utils import quote_slashes from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory @@ -188,6 +189,7 @@ class TestLTIModuleListing(SharedModuleStoreTestCase): response = self.client.get(lti_rest_endpoints_url) self.assertEqual(404, response.status_code) + @pytest.mark.django111_expected_failure def test_lti_rest_listing(self): """tests that the draft lti module is part of the endpoint response""" request = mock.Mock() diff --git a/lms/djangoapps/courseware/tests/test_masquerade.py b/lms/djangoapps/courseware/tests/test_masquerade.py index 5049438b84..3e58861e9e 100644 --- a/lms/djangoapps/courseware/tests/test_masquerade.py +++ b/lms/djangoapps/courseware/tests/test_masquerade.py @@ -5,30 +5,24 @@ import json import pickle from datetime import datetime +import pytest from django.conf import settings from django.core.urlresolvers import reverse from django.test import TestCase -from pytz import UTC from mock import patch -from nose.plugins.attrib import attr -from xblock.runtime import DictKeyValueStore +from pytz import UTC from capa.tests.response_xml_factory import OptionResponseXMLFactory -from courseware.masquerade import ( - CourseMasquerade, - MasqueradingKeyValueStore, - get_masquerading_user_group, -) +from courseware.masquerade import CourseMasquerade, MasqueradingKeyValueStore, get_masquerading_user_group from courseware.tests.factories import StaffFactory from courseware.tests.helpers import LoginEnrollmentTestCase, masquerade_as_group_member from courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin +from nose.plugins.attrib import attr from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY from openedx.core.djangoapps.self_paced.models import SelfPacedConfiguration -from openedx.core.djangoapps.user_api.preferences.api import ( - get_user_preference, - set_user_preference -) +from openedx.core.djangoapps.user_api.preferences.api import get_user_preference, set_user_preference from student.tests.factories import UserFactory +from xblock.runtime import DictKeyValueStore from xmodule.modulestore.django import modulestore from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory @@ -180,6 +174,7 @@ class NormalStudentVisibilityTest(MasqueradeTestCase): return UserFactory() @patch.dict('django.conf.settings.FEATURES', {'DISABLE_START_DATES': False}) + @pytest.mark.django111_expected_failure def test_staff_debug_not_visible(self): """ Tests that staff debug control is not present for a student. @@ -229,6 +224,7 @@ class TestStaffMasqueradeAsStudent(StaffMasqueradeTestCase): Check for staff being able to masquerade as student. """ @patch.dict('django.conf.settings.FEATURES', {'DISABLE_START_DATES': False}) + @pytest.mark.django111_expected_failure def test_staff_debug_with_masquerade(self): """ Tests that staff debug control is not visible when masquerading as a student. @@ -318,6 +314,7 @@ class TestStaffMasqueradeAsSpecificStudent(StaffMasqueradeTestCase, ProblemSubmi ) @patch.dict('django.conf.settings.FEATURES', {'DISABLE_START_DATES': False}) + @pytest.mark.django111_expected_failure def test_masquerade_as_specific_user_on_self_paced(self): """ Test masquerading as a specific user for course info page when self paced configuration @@ -342,6 +339,7 @@ class TestStaffMasqueradeAsSpecificStudent(StaffMasqueradeTestCase, ProblemSubmi self.assertIn("OOGIE BLOOGIE", content) @patch.dict('django.conf.settings.FEATURES', {'DISABLE_START_DATES': False}) + @pytest.mark.django111_expected_failure def test_masquerade_as_specific_student(self): """ Test masquerading as a specific user. diff --git a/lms/djangoapps/courseware/tests/test_microsites.py b/lms/djangoapps/courseware/tests/test_microsites.py index 051002bee2..e6113bfb8b 100644 --- a/lms/djangoapps/courseware/tests/test_microsites.py +++ b/lms/djangoapps/courseware/tests/test_microsites.py @@ -1,6 +1,8 @@ """ Tests related to the Site Configuration feature """ + +import pytest from bs4 import BeautifulSoup from contextlib import contextmanager from django.conf import settings @@ -17,6 +19,7 @@ from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory @attr(shard=1) +@pytest.mark.django111_expected_failure class TestSites(SharedModuleStoreTestCase, LoginEnrollmentTestCase): """ This is testing of the Site Configuration feature diff --git a/lms/djangoapps/courseware/tests/test_module_render.py b/lms/djangoapps/courseware/tests/test_module_render.py index f74c4f7003..9ffcb10d94 100644 --- a/lms/djangoapps/courseware/tests/test_module_render.py +++ b/lms/djangoapps/courseware/tests/test_module_render.py @@ -8,6 +8,7 @@ from datetime import datetime from functools import partial import ddt +import pytest import pytz from bson import ObjectId from django.conf import settings @@ -222,6 +223,7 @@ class ModuleRenderTestCase(SharedModuleStoreTestCase, LoginEnrollmentTestCase): # note if the URL mapping changes then this assertion will break self.assertIn('/courses/' + self.course_key.to_deprecated_string() + '/jump_to_id/vertical_test', html) + @pytest.mark.django111_expected_failure def test_xqueue_callback_success(self): """ Test for happy-path xqueue_callback @@ -690,6 +692,7 @@ class TestHandleXBlockCallback(SharedModuleStoreTestCase, LoginEnrollmentTestCas BlockCompletion.objects.get(block_key=block.scope_ids.usage_id) @patch.dict('django.conf.settings.FEATURES', {'ENABLE_XBLOCK_VIEW_ENDPOINT': True}) + @pytest.mark.django111_expected_failure def test_xblock_view_handler(self): args = [ 'edX/toy/2012_Fall', @@ -823,6 +826,7 @@ class TestTOC(ModuleStoreTestCase): @attr(shard=1) @ddt.ddt @patch.dict('django.conf.settings.FEATURES', {'ENABLE_SPECIAL_EXAMS': True}) +@pytest.mark.django111_expected_failure class TestProctoringRendering(SharedModuleStoreTestCase): @classmethod def setUpClass(cls): @@ -1238,6 +1242,7 @@ class TestGatedSubsectionRendering(SharedModuleStoreTestCase, MilestonesTestCase @attr(shard=1) @ddt.ddt +@pytest.mark.django111_expected_failure class TestHtmlModifiers(ModuleStoreTestCase): """ Tests to verify that standard modifications to the output of XModule/XBlock @@ -1402,6 +1407,7 @@ class XBlockWithJsonInitData(XBlock): @attr(shard=1) @ddt.ddt +@pytest.mark.django111_expected_failure class JsonInitDataTest(ModuleStoreTestCase): """Tests for JSON data injected into the JS init function.""" @@ -1486,6 +1492,7 @@ class ViewInStudioTest(ModuleStoreTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class MongoViewInStudioTest(ViewInStudioTest): """Test the 'View in Studio' link visibility in a mongo backed course.""" @@ -1515,6 +1522,7 @@ class MongoViewInStudioTest(ViewInStudioTest): @attr(shard=1) +@pytest.mark.django111_expected_failure class MixedViewInStudioTest(ViewInStudioTest): """Test the 'View in Studio' link visibility in a mixed mongo backed course.""" @@ -1549,6 +1557,7 @@ class DetachedXBlock(XBlock): @attr(shard=1) @patch.dict('django.conf.settings.FEATURES', {'DISPLAY_DEBUG_INFO_TO_STAFF': True, 'DISPLAY_HISTOGRAMS_TO_STAFF': True}) @patch('courseware.module_render.has_access', Mock(return_value=True, autospec=True)) +@pytest.mark.django111_expected_failure class TestStaffDebugInfo(SharedModuleStoreTestCase): """Tests to verify that Staff Debug Info panel and histograms are displayed to staff.""" @@ -1896,6 +1905,7 @@ class TestModuleTrackingContext(SharedModuleStoreTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class TestXmoduleRuntimeEvent(TestSubmittingProblems): """ Inherit from TestSubmittingProblems to get functionality that set up a course and problems structure @@ -1965,6 +1975,7 @@ class TestXmoduleRuntimeEvent(TestSubmittingProblems): @attr(shard=1) +@pytest.mark.django111_expected_failure class TestRebindModule(TestSubmittingProblems): """ Tests to verify the functionality of rebinding a module. diff --git a/lms/djangoapps/courseware/tests/test_navigation.py b/lms/djangoapps/courseware/tests/test_navigation.py index db22f63716..d9ecd22286 100644 --- a/lms/djangoapps/courseware/tests/test_navigation.py +++ b/lms/djangoapps/courseware/tests/test_navigation.py @@ -3,13 +3,15 @@ This test file will run through some LMS test scenarios regarding access and nav """ import time -from courseware.tests.factories import GlobalStaffFactory -from courseware.tests.helpers import LoginEnrollmentTestCase +import pytest from django.conf import settings from django.core.urlresolvers import reverse from django.test.utils import override_settings from mock import patch from nose.plugins.attrib import attr + +from courseware.tests.factories import GlobalStaffFactory +from courseware.tests.helpers import LoginEnrollmentTestCase from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag from openedx.features.course_experience import COURSE_OUTLINE_PAGE_FLAG from student.tests.factories import UserFactory @@ -19,6 +21,7 @@ from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory @attr(shard=1) +@pytest.mark.django111_expected_failure class TestNavigation(SharedModuleStoreTestCase, LoginEnrollmentTestCase): """ Check that navigation state is saved properly. diff --git a/lms/djangoapps/courseware/tests/test_password_history.py b/lms/djangoapps/courseware/tests/test_password_history.py index af8379ae59..4f7cf5e171 100644 --- a/lms/djangoapps/courseware/tests/test_password_history.py +++ b/lms/djangoapps/courseware/tests/test_password_history.py @@ -6,6 +6,7 @@ from datetime import timedelta from uuid import uuid4 import ddt +import pytest from django.contrib.auth.models import User from django.contrib.auth.tokens import default_token_generator from django.core.urlresolvers import reverse @@ -23,6 +24,7 @@ from student.models import PasswordHistory @attr(shard=1) @patch.dict("django.conf.settings.FEATURES", {'ADVANCED_SECURITY': True}) @ddt.ddt +@pytest.mark.django111_expected_failure class TestPasswordHistory(LoginEnrollmentTestCase): """ Go through some of the PasswordHistory use cases diff --git a/lms/djangoapps/courseware/tests/test_split_module.py b/lms/djangoapps/courseware/tests/test_split_module.py index 3413ddd3f9..1345923872 100644 --- a/lms/djangoapps/courseware/tests/test_split_module.py +++ b/lms/djangoapps/courseware/tests/test_split_module.py @@ -1,6 +1,7 @@ """ Test for split test XModule """ +import pytest from django.core.urlresolvers import reverse from mock import MagicMock from nose.plugins.attrib import attr @@ -142,6 +143,7 @@ class SplitTestBase(SharedModuleStoreTestCase): self.assertIn(visible, content) +@pytest.mark.django111_expected_failure class TestSplitTestVert(SplitTestBase): """ Tests a sequential whose top-level vertical is determined by a split test. @@ -210,6 +212,7 @@ class TestSplitTestVert(SplitTestBase): ] +@pytest.mark.django111_expected_failure class TestVertSplitTestVert(SplitTestBase): """ Tests a sequential whose top-level vertical contains a split test determining content within that vertical. diff --git a/lms/djangoapps/courseware/tests/test_submitting_problems.py b/lms/djangoapps/courseware/tests/test_submitting_problems.py index e86788d28c..60660c4b38 100644 --- a/lms/djangoapps/courseware/tests/test_submitting_problems.py +++ b/lms/djangoapps/courseware/tests/test_submitting_problems.py @@ -10,6 +10,7 @@ import os from textwrap import dedent import ddt +import pytest from django.conf import settings from django.contrib.auth.models import User from django.core.urlresolvers import reverse @@ -779,6 +780,7 @@ class ProblemWithUploadedFilesTest(TestSubmittingProblems): # re-fetch the course from the database so the object is up to date self.refresh_course() + @pytest.mark.django111_expected_failure def test_three_files(self): # Open the test files, and arrange to close them later. filenames = "prog1.py prog2.py prog3.py" @@ -807,6 +809,7 @@ class ProblemWithUploadedFilesTest(TestSubmittingProblems): @attr(shard=1) +@pytest.mark.django111_expected_failure class TestPythonGradedResponse(TestSubmittingProblems): """ Check that we can submit a schematic and custom response, and it answers properly. @@ -1174,6 +1177,7 @@ class TestConditionalContent(TestSubmittingProblems): # Submit answers for problem in Section 1, which is visible to all students. self.submit_question_answer('H1P1', {'2_1': 'Correct', '2_2': 'Incorrect'}) + @pytest.mark.django111_expected_failure def test_split_different_problems_group_0(self): """ Tests that users who see different problems in a split_test module instance are graded correctly. @@ -1193,6 +1197,7 @@ class TestConditionalContent(TestSubmittingProblems): homework_2_score = (1.0 + 2.0) / 4 self.check_grade_percent(round((homework_1_score + homework_2_score) / 2, 2)) + @pytest.mark.django111_expected_failure def test_split_different_problems_group_1(self): """ Tests that users who see different problems in a split_test module instance are graded correctly. @@ -1229,6 +1234,7 @@ class TestConditionalContent(TestSubmittingProblems): self.submit_question_answer('H1P1', {'2_1': 'Correct'}) + @pytest.mark.django111_expected_failure def test_split_one_group_no_problems_group_0(self): """ Tests what happens when a given group has no problems in it (students receive 0 for that section). @@ -1244,6 +1250,7 @@ class TestConditionalContent(TestSubmittingProblems): homework_2_score = 0.0 self.check_grade_percent(round((homework_1_score + homework_2_score) / 2, 2)) + @pytest.mark.django111_expected_failure def test_split_one_group_no_problems_group_1(self): """ Verifies students in the group that DOES have a problem receive a score for their problem. diff --git a/lms/djangoapps/courseware/tests/test_tabs.py b/lms/djangoapps/courseware/tests/test_tabs.py index 88c5502770..a93a2a37c7 100644 --- a/lms/djangoapps/courseware/tests/test_tabs.py +++ b/lms/djangoapps/courseware/tests/test_tabs.py @@ -2,6 +2,7 @@ Test cases for tabs. """ +import pytest from django.core.urlresolvers import reverse from django.http import Http404 from milestones.tests.utils import MilestonesTestCaseMixin @@ -245,6 +246,7 @@ class StaticTabDateTestCase(LoginEnrollmentTestCase, SharedModuleStoreTestCase): cls.course.tabs.append(xmodule_tabs.CourseTab.load('static_tab', name='New Tab', url_slug='new_tab')) cls.course.save() + @pytest.mark.django111_expected_failure def test_logged_in(self): self.setup_user() url = reverse('static_tab', args=[self.course.id.to_deprecated_string(), 'new_tab']) @@ -258,12 +260,14 @@ class StaticTabDateTestCase(LoginEnrollmentTestCase, SharedModuleStoreTestCase): self.assertEqual(resp.status_code, 200) self.assertIn("OOGIE BLOOGIE", resp.content) + @pytest.mark.django111_expected_failure def test_invalid_course_key(self): self.setup_user() request = get_mock_request(self.user) with self.assertRaises(Http404): StaticCourseTabView().get(request, course_id='edX/toy', tab_slug='new_tab') + @pytest.mark.django111_expected_failure def test_get_static_tab_fragment(self): self.setup_user() course = get_course_by_id(self.course.id) @@ -319,6 +323,7 @@ class StaticTabDateTestCaseXML(LoginEnrollmentTestCase, ModuleStoreTestCase): self.xml_url = "8e4cce2b4aaf4ba28b1220804619e41f" @patch.dict('django.conf.settings.FEATURES', {'DISABLE_START_DATES': False}) + @pytest.mark.django111_expected_failure def test_logged_in_xml(self): self.setup_user() url = reverse('static_tab', args=[self.xml_course_key.to_deprecated_string(), self.xml_url]) @@ -336,6 +341,7 @@ class StaticTabDateTestCaseXML(LoginEnrollmentTestCase, ModuleStoreTestCase): @attr(shard=1) @patch.dict('django.conf.settings.FEATURES', {'ENTRANCE_EXAMS': True}) +@pytest.mark.django111_expected_failure class EntranceExamsTabsTestCase(LoginEnrollmentTestCase, ModuleStoreTestCase, MilestonesTestCaseMixin): """ Validate tab behavior when dealing with Entrance Exams @@ -443,6 +449,7 @@ class EntranceExamsTabsTestCase(LoginEnrollmentTestCase, ModuleStoreTestCase, Mi @attr(shard=1) +@pytest.mark.django111_expected_failure class TextBookCourseViewsTestCase(LoginEnrollmentTestCase, SharedModuleStoreTestCase): """ Validate tab behavior when dealing with textbooks. @@ -690,6 +697,7 @@ class CourseTabListTestCase(TabListTestCase): # get tab by id self.assertEquals(xmodule_tabs.CourseTabList.get_tab_by_id(self.course.tabs, tab.tab_id), tab) + @pytest.mark.django111_expected_failure def test_course_tabs_staff_only(self): """ Tests the static tabs that available only for instructor @@ -721,6 +729,7 @@ class CourseTabListTestCase(TabListTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class ProgressTestCase(TabTestCase): """Test cases for Progress Tab.""" @@ -751,6 +760,7 @@ class ProgressTestCase(TabTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class StaticTabTestCase(TabTestCase): """Test cases for Static Tab.""" @@ -770,6 +780,7 @@ class StaticTabTestCase(TabTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class CourseInfoTabTestCase(TabTestCase): """Test cases for the course info tab.""" def setUp(self): @@ -798,6 +809,7 @@ class CourseInfoTabTestCase(TabTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class DiscussionLinkTestCase(TabTestCase): """Test cases for discussion link tab.""" diff --git a/lms/djangoapps/courseware/tests/test_view_authentication.py b/lms/djangoapps/courseware/tests/test_view_authentication.py index 1c2cc27469..19387748f5 100644 --- a/lms/djangoapps/courseware/tests/test_view_authentication.py +++ b/lms/djangoapps/courseware/tests/test_view_authentication.py @@ -1,6 +1,7 @@ import datetime import pytz +import pytest from django.core.urlresolvers import reverse from mock import patch from nose.plugins.attrib import attr @@ -163,6 +164,7 @@ class TestViewAuth(EnterpriseTestConsentRequired, ModuleStoreTestCase, LoginEnro self.org_staff_user = OrgStaffFactory(course_key=self.course.id) self.org_instructor_user = OrgInstructorFactory(course_key=self.course.id) + @pytest.mark.django111_expected_failure def test_redirection_unenrolled(self): """ Verify unenrolled student is redirected to the 'about' section of the chapter @@ -179,6 +181,7 @@ class TestViewAuth(EnterpriseTestConsentRequired, ModuleStoreTestCase, LoginEnro ) ) + @pytest.mark.django111_expected_failure def test_redirection_enrolled(self): """ Verify enrolled student is redirected to the 'Welcome' section of @@ -302,6 +305,7 @@ class TestViewAuth(EnterpriseTestConsentRequired, ModuleStoreTestCase, LoginEnro self.assert_request_status_code(200, url) @patch.dict('courseware.access.settings.FEATURES', {'DISABLE_START_DATES': False}) + @pytest.mark.django111_expected_failure def test_dark_launch_enrolled_student(self): """ Make sure that before course start, students can't access course @@ -329,6 +333,7 @@ class TestViewAuth(EnterpriseTestConsentRequired, ModuleStoreTestCase, LoginEnro self._check_non_staff_dark(self.test_course) @patch.dict('courseware.access.settings.FEATURES', {'DISABLE_START_DATES': False}) + @pytest.mark.django111_expected_failure def test_dark_launch_instructor(self): """ Make sure that before course start instructors can access the @@ -352,6 +357,7 @@ class TestViewAuth(EnterpriseTestConsentRequired, ModuleStoreTestCase, LoginEnro self._check_non_staff_dark(self.test_course) @patch.dict('courseware.access.settings.FEATURES', {'DISABLE_START_DATES': False}) + @pytest.mark.django111_expected_failure def test_dark_launch_global_staff(self): """ Make sure that before course start staff can access diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index 3cba9f6094..df6222ce88 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -11,6 +11,7 @@ from urllib import quote, urlencode from uuid import uuid4 import ddt +import pytest from django.conf import settings from django.contrib.auth.models import AnonymousUser from django.core.urlresolvers import reverse, reverse_lazy @@ -114,6 +115,7 @@ class TestJumpTo(ModuleStoreTestCase): response = self.client.get(jumpto_url) self.assertRedirects(response, expected, status_code=302, target_status_code=302) + @pytest.mark.django111_expected_failure def test_jumpto_from_section(self): course = CourseFactory.create() chapter = ItemFactory.create(category='chapter', parent_location=course.location) @@ -132,6 +134,7 @@ class TestJumpTo(ModuleStoreTestCase): response = self.client.get(jumpto_url) self.assertRedirects(response, expected, status_code=302, target_status_code=302) + @pytest.mark.django111_expected_failure def test_jumpto_from_module(self): course = CourseFactory.create() chapter = ItemFactory.create(category='chapter', parent_location=course.location) @@ -169,6 +172,7 @@ class TestJumpTo(ModuleStoreTestCase): response = self.client.get(jumpto_url) self.assertRedirects(response, expected, status_code=302, target_status_code=302) + @pytest.mark.django111_expected_failure def test_jumpto_from_nested_module(self): course = CourseFactory.create() chapter = ItemFactory.create(category='chapter', parent_location=course.location) @@ -1111,6 +1115,7 @@ class TestProgressDueDate(BaseDueDateTests): # TODO: LEARNER-71: Delete entire TestAccordionDueDate class +@pytest.mark.django111_expected_failure class TestAccordionDueDate(BaseDueDateTests): """ Test that the accordion page displays due dates correctly @@ -1183,6 +1188,7 @@ class StartDateTests(ModuleStoreTestCase): @patch('util.date_utils.ugettext', fake_ugettext(translations={ "SHORT_DATE_FORMAT": "%Y-%b-%d", })) + @pytest.mark.django111_expected_failure def test_format_localized_in_studio_course(self): course = self.set_up_course() response = self.get_about_response(course.id) @@ -2190,6 +2196,7 @@ class ViewCheckerBlock(XBlock): @attr(shard=1) @ddt.ddt +@pytest.mark.django111_expected_failure class TestIndexView(ModuleStoreTestCase): """ Tests of the courseware.views.index view. @@ -2527,6 +2534,7 @@ class TestIndexViewCrawlerStudentStateWrites(SharedModuleStoreTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class EnterpriseConsentTestCase(EnterpriseTestConsentRequired, ModuleStoreTestCase): """ Ensure that the Enterprise Data Consent redirects are in place only when consent is required. diff --git a/lms/djangoapps/courseware/tests/tests.py b/lms/djangoapps/courseware/tests/tests.py index 9489ba60f8..75c605237f 100644 --- a/lms/djangoapps/courseware/tests/tests.py +++ b/lms/djangoapps/courseware/tests/tests.py @@ -5,6 +5,7 @@ from textwrap import dedent from unittest import TestCase import mock +import pytest from django.core.urlresolvers import reverse from nose.plugins.attrib import attr from opaque_keys.edx.keys import CourseKey @@ -18,6 +19,7 @@ from xmodule.modulestore.tests.factories import ToyCourseFactory @attr(shard=1) +@pytest.mark.django111_expected_failure class ActivateLoginTest(LoginEnrollmentTestCase): """ Test logging in and logging out. @@ -122,6 +124,7 @@ class PageLoaderTestCase(LoginEnrollmentTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class TestMongoCoursesLoad(ModuleStoreTestCase, PageLoaderTestCase): """ Check that all pages in test courses load properly from Mongo. diff --git a/lms/djangoapps/django_comment_client/tests/test_utils.py b/lms/djangoapps/django_comment_client/tests/test_utils.py index 149ed3a812..4070545df9 100644 --- a/lms/djangoapps/django_comment_client/tests/test_utils.py +++ b/lms/djangoapps/django_comment_client/tests/test_utils.py @@ -4,6 +4,8 @@ import json import ddt import mock +import pytest + from django.core.urlresolvers import reverse from django.test import RequestFactory, TestCase from mock import Mock, patch @@ -70,6 +72,7 @@ class DictionaryTestCase(TestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class AccessUtilsTestCase(ModuleStoreTestCase): """ Base testcase class for access and roles for the diff --git a/lms/djangoapps/instructor/tests/test_api.py b/lms/djangoapps/instructor/tests/test_api.py index 490df84237..2021851328 100644 --- a/lms/djangoapps/instructor/tests/test_api.py +++ b/lms/djangoapps/instructor/tests/test_api.py @@ -11,6 +11,7 @@ import shutil import tempfile import ddt +import pytest from boto.exception import BotoServerError from django.conf import settings from django.contrib.auth.models import User @@ -2860,6 +2861,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment decorated_func(request, self.course.id.to_deprecated_string()) self.assertTrue(func.called) + @pytest.mark.django111_expected_failure def test_enrollment_report_features_csv(self): """ test to generate enrollment report. @@ -2900,6 +2902,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment response = self.client.post(url, {}) self.assertIn('The detailed enrollment report is being created.', response.content) + @pytest.mark.django111_expected_failure def test_bulk_purchase_detailed_report(self): """ test to generate detailed enrollment report. @@ -2955,6 +2958,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment response = self.client.post(url, {}) self.assertIn('The detailed enrollment report is being created.', response.content) + @pytest.mark.django111_expected_failure def test_create_registration_code_without_invoice_and_order(self): """ test generate detailed enrollment report, @@ -2977,6 +2981,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment response = self.client.post(url, {}) self.assertIn('The detailed enrollment report is being created.', response.content) + @pytest.mark.django111_expected_failure def test_invoice_payment_is_still_pending_for_registration_codes(self): """ test generate enrollment report @@ -3630,6 +3635,7 @@ class TestEntranceExamInstructorAPIRegradeTask(SharedModuleStoreTestCase, LoginE @attr(shard=1) @patch('bulk_email.models.html_to_text', Mock(return_value='Mocking CourseEmail.text_message', autospec=True)) +@pytest.mark.django111_expected_failure class TestInstructorSendEmail(SiteMixin, SharedModuleStoreTestCase, LoginEnrollmentTestCase): """ Checks that only instructors have access to email endpoints, and that @@ -4515,6 +4521,7 @@ class TestCourseIssuedCertificatesData(SharedModuleStoreTestCase): @attr(shard=1) @override_settings(REGISTRATION_CODE_LENGTH=8) +@pytest.mark.django111_expected_failure class TestCourseRegistrationCodes(SharedModuleStoreTestCase): """ Test data dumps for E-commerce Course Registration Codes. diff --git a/lms/djangoapps/instructor/tests/test_ecommerce.py b/lms/djangoapps/instructor/tests/test_ecommerce.py index 86c28c38f5..e45bc40116 100644 --- a/lms/djangoapps/instructor/tests/test_ecommerce.py +++ b/lms/djangoapps/instructor/tests/test_ecommerce.py @@ -4,6 +4,7 @@ Unit tests for Ecommerce feature flag in new instructor dashboard. import datetime +import pytest import pytz from django.core.urlresolvers import reverse from nose.plugins.attrib import attr @@ -18,6 +19,7 @@ from xmodule.modulestore.tests.factories import CourseFactory @attr(shard=1) +@pytest.mark.django111_expected_failure class TestECommerceDashboardViews(SiteMixin, SharedModuleStoreTestCase): """ Check for E-commerce view on the new instructor dashboard diff --git a/lms/djangoapps/teams/tests/test_views.py b/lms/djangoapps/teams/tests/test_views.py index 0bd970565b..5ef14aac48 100644 --- a/lms/djangoapps/teams/tests/test_views.py +++ b/lms/djangoapps/teams/tests/test_views.py @@ -5,6 +5,7 @@ import unittest from datetime import datetime import ddt +import pytest import pytz from dateutil import parser from django.conf import settings @@ -79,6 +80,7 @@ class TestDashboard(SharedModuleStoreTestCase): response = self.client.get(self.teams_url) self.assertEqual(404, response.status_code) + @pytest.mark.django111_expected_failure def test_not_enrolled_staff(self): """ Verifies that a user with global access who is not enrolled in the course can access the team dashboard. @@ -89,6 +91,7 @@ class TestDashboard(SharedModuleStoreTestCase): response = staff_client.get(self.teams_url) self.assertContains(response, "TeamsTabFactory", status_code=200) + @pytest.mark.django111_expected_failure def test_enrolled_not_staff(self): """ Verifies that a user without global access who is enrolled in the course can access the team dashboard. diff --git a/openedx/tests/xblock_integration/test_crowdsource_hinter.py b/openedx/tests/xblock_integration/test_crowdsource_hinter.py index 3ca4c75986..b8884b4821 100644 --- a/openedx/tests/xblock_integration/test_crowdsource_hinter.py +++ b/openedx/tests/xblock_integration/test_crowdsource_hinter.py @@ -4,6 +4,7 @@ Test scenarios for the crowdsource hinter xblock. import json import unittest +import pytest from django.conf import settings from django.core.urlresolvers import reverse from nose.plugins.attrib import attr @@ -135,6 +136,7 @@ class TestCrowdsourceHinter(SharedModuleStoreTestCase, LoginEnrollmentTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class TestHinterFunctions(TestCrowdsourceHinter): """ Check that the essential functions of the hinter work as expected. diff --git a/openedx/tests/xblock_integration/test_recommender.py b/openedx/tests/xblock_integration/test_recommender.py index cb1eef10a7..8e5fcff7b9 100644 --- a/openedx/tests/xblock_integration/test_recommender.py +++ b/openedx/tests/xblock_integration/test_recommender.py @@ -9,13 +9,14 @@ import StringIO import unittest from copy import deepcopy -from ddt import data, ddt +import pytest from django.conf import settings from django.core.urlresolvers import reverse -from nose.plugins.attrib import attr +from ddt import data, ddt from lms.djangoapps.courseware.tests.factories import GlobalStaffFactory from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase +from nose.plugins.attrib import attr from openedx.core.lib.url_utils import quote_slashes from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory @@ -196,6 +197,7 @@ class TestRecommender(SharedModuleStoreTestCase, LoginEnrollmentTestCase): @attr(shard=1) +@pytest.mark.django111_expected_failure class TestRecommenderCreateFromEmpty(TestRecommender): """ Check whether we can add resources to an empty database correctly @@ -256,6 +258,7 @@ class TestRecommenderResourceBase(TestRecommender): @attr(shard=1) +@pytest.mark.django111_expected_failure class TestRecommenderWithResources(TestRecommenderResourceBase): """ Check whether we can add/edit/flag/export resources correctly @@ -422,6 +425,7 @@ class TestRecommenderWithResources(TestRecommenderResourceBase): @attr(shard=1) @ddt +@pytest.mark.django111_expected_failure class TestRecommenderVoteWithResources(TestRecommenderResourceBase): """ Check whether we can vote resources correctly @@ -536,6 +540,7 @@ class TestRecommenderVoteWithResources(TestRecommenderResourceBase): @attr(shard=1) @ddt +@pytest.mark.django111_expected_failure class TestRecommenderStaffFeedbackWithResources(TestRecommenderResourceBase): """ Check whether we can remove/endorse resources correctly @@ -631,6 +636,7 @@ class TestRecommenderStaffFeedbackWithResources(TestRecommenderResourceBase): @attr(shard=1) @ddt +@pytest.mark.django111_expected_failure class TestRecommenderFileUploading(TestRecommender): """ Check whether we can handle file uploading correctly