Merge branch 'master' into ri/EDUCATOR-394-disable-self-generation-certificates
This commit is contained in:
@@ -94,6 +94,7 @@ from lms.envs.common import (
|
||||
HELP_TOKENS_BOOKS,
|
||||
|
||||
SUPPORT_SITE_LINK,
|
||||
ACTIVATION_EMAIL_SUPPORT_LINK,
|
||||
|
||||
CONTACT_EMAIL,
|
||||
|
||||
|
||||
@@ -122,6 +122,9 @@ class CourseMode(models.Model):
|
||||
DEFAULT_MODE = Mode(AUDIT, _('Audit'), 0, '', 'usd', None, None, None, None)
|
||||
DEFAULT_MODE_SLUG = AUDIT
|
||||
|
||||
# Modes utilized for audit/free enrollments
|
||||
AUDIT_MODES = [AUDIT, HONOR]
|
||||
|
||||
# Modes that allow a student to pursue a verified certificate
|
||||
VERIFIED_MODES = [VERIFIED, PROFESSIONAL]
|
||||
|
||||
|
||||
@@ -133,24 +133,9 @@ class CourseModeViewTest(CatalogIntegrationMixin, UrlResetMixin, ModuleStoreTest
|
||||
self.assertRedirects(response, 'http://testserver/test_basket/?sku=TEST', fetch_redirect_response=False)
|
||||
ecomm_test_utils.update_commerce_config(enabled=False)
|
||||
|
||||
@httpretty.activate
|
||||
def test_no_enrollment(self):
|
||||
# Create the course modes
|
||||
for mode in ('audit', 'honor', 'verified'):
|
||||
CourseModeFactory.create(mode_slug=mode, course_id=self.course.id)
|
||||
|
||||
self.mock_enterprise_learner_api()
|
||||
|
||||
# User visits the track selection page directly without ever enrolling
|
||||
url = reverse('course_modes_choose', args=[unicode(self.course.id)])
|
||||
response = self.client.get(url)
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@httpretty.activate
|
||||
def test_enterprise_learner_context(self):
|
||||
def _generate_enterprise_learner_context(self, enable_audit_enrollment=False):
|
||||
"""
|
||||
Test: Track selection page should show the enterprise context message if user belongs to the Enterprise.
|
||||
Internal helper to support common pieces of test case variations
|
||||
"""
|
||||
# Create the course modes
|
||||
for mode in ('audit', 'honor', 'verified'):
|
||||
@@ -159,14 +144,27 @@ class CourseModeViewTest(CatalogIntegrationMixin, UrlResetMixin, ModuleStoreTest
|
||||
catalog_integration = self.create_catalog_integration()
|
||||
UserFactory(username=catalog_integration.service_username)
|
||||
|
||||
self.mock_enterprise_learner_api()
|
||||
|
||||
self.mock_course_discovery_api_for_catalog_contains(
|
||||
catalog_id=1, course_run_ids=[str(self.course.id)]
|
||||
)
|
||||
self.mock_enterprise_learner_api(enable_audit_enrollment=enable_audit_enrollment)
|
||||
|
||||
return reverse('course_modes_choose', args=[unicode(self.course.id)])
|
||||
|
||||
@httpretty.activate
|
||||
def test_no_enrollment(self):
|
||||
url = self._generate_enterprise_learner_context()
|
||||
response = self.client.get(url)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@httpretty.activate
|
||||
def test_enterprise_learner_context(self):
|
||||
"""
|
||||
Test: Track selection page should show the enterprise context message if user belongs to the Enterprise.
|
||||
"""
|
||||
url = self._generate_enterprise_learner_context()
|
||||
|
||||
# User visits the track selection page directly without ever enrolling
|
||||
url = reverse('course_modes_choose', args=[unicode(self.course.id)])
|
||||
response = self.client.get(url)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertContains(
|
||||
@@ -185,16 +183,7 @@ class CourseModeViewTest(CatalogIntegrationMixin, UrlResetMixin, ModuleStoreTest
|
||||
Test: Track selection page should show the enterprise context message with multiple organization names
|
||||
if user belongs to the Enterprise.
|
||||
"""
|
||||
# Create the course modes
|
||||
for mode in ('audit', 'honor', 'verified'):
|
||||
CourseModeFactory.create(mode_slug=mode, course_id=self.course.id)
|
||||
|
||||
catalog_integration = self.create_catalog_integration()
|
||||
UserFactory(username=catalog_integration.service_username)
|
||||
self.mock_enterprise_learner_api()
|
||||
self.mock_course_discovery_api_for_catalog_contains(
|
||||
catalog_id=1, course_run_ids=[str(self.course.id)]
|
||||
)
|
||||
url = self._generate_enterprise_learner_context()
|
||||
|
||||
# Creating organization
|
||||
for i in xrange(2):
|
||||
@@ -209,7 +198,6 @@ class CourseModeViewTest(CatalogIntegrationMixin, UrlResetMixin, ModuleStoreTest
|
||||
organizations_api.add_organization_course(organization_data=test_org, course_id=unicode(self.course.id))
|
||||
|
||||
# User visits the track selection page directly without ever enrolling
|
||||
url = reverse('course_modes_choose', args=[unicode(self.course.id)])
|
||||
response = self.client.get(url)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertContains(
|
||||
@@ -221,6 +209,30 @@ class CourseModeViewTest(CatalogIntegrationMixin, UrlResetMixin, ModuleStoreTest
|
||||
)
|
||||
)
|
||||
|
||||
@httpretty.activate
|
||||
def test_enterprise_learner_context_audit_disabled(self):
|
||||
"""
|
||||
Track selection page should hide the audit choice by default in an Enterprise Customer/Learner context
|
||||
"""
|
||||
|
||||
# User visits the track selection page directly without ever enrolling, sees only Verified track choice
|
||||
url = self._generate_enterprise_learner_context()
|
||||
response = self.client.get(url)
|
||||
self.assertContains(response, 'Pursue a Verified Certificate')
|
||||
self.assertNotContains(response, 'Audit This Course')
|
||||
|
||||
@httpretty.activate
|
||||
def test_enterprise_learner_context_audit_enabled(self):
|
||||
"""
|
||||
Track selection page should display Audit choice when specified for an Enterprise Customer
|
||||
"""
|
||||
|
||||
# User visits the track selection page directly without ever enrolling, sees both Verified and Audit choices
|
||||
url = self._generate_enterprise_learner_context(enable_audit_enrollment=True)
|
||||
response = self.client.get(url)
|
||||
self.assertContains(response, 'Pursue a Verified Certificate')
|
||||
self.assertContains(response, 'Audit This Course')
|
||||
|
||||
@httpretty.activate
|
||||
@ddt.data(
|
||||
'',
|
||||
|
||||
@@ -156,16 +156,17 @@ class ChooseModeView(View):
|
||||
)
|
||||
enterprise_learner_data = enterprise_api.get_enterprise_learner_data(site=request.site, user=request.user)
|
||||
if enterprise_learner_data:
|
||||
enterprise_learner = enterprise_learner_data[0]
|
||||
is_course_in_enterprise_catalog = enterprise_api.is_course_in_enterprise_catalog(
|
||||
site=request.site,
|
||||
course_id=course_id,
|
||||
enterprise_catalog_id=enterprise_learner_data[0]['enterprise_customer']['catalog']
|
||||
enterprise_catalog_id=enterprise_learner['enterprise_customer']['catalog']
|
||||
)
|
||||
|
||||
if is_course_in_enterprise_catalog:
|
||||
partner_names = partner_name = course.display_organization \
|
||||
if course.display_organization else course.org
|
||||
enterprise_name = enterprise_learner_data[0]['enterprise_customer']['name']
|
||||
enterprise_name = enterprise_learner['enterprise_customer']['name']
|
||||
organizations = organization_api.get_course_organizations(course_id=course.id)
|
||||
if organizations:
|
||||
partner_names = ' and '.join([org.get('name', partner_name) for org in organizations])
|
||||
@@ -178,6 +179,12 @@ class ChooseModeView(View):
|
||||
partner_names=partner_names,
|
||||
enterprise_name=enterprise_name
|
||||
)
|
||||
|
||||
# Hide the audit modes for this enterprise customer, if necessary
|
||||
if not enterprise_learner['enterprise_customer'].get('enable_audit_enrollment'):
|
||||
for audit_mode in CourseMode.AUDIT_MODES:
|
||||
modes.pop(audit_mode, None)
|
||||
|
||||
context["title_content"] = title_content
|
||||
|
||||
if "verified" in modes:
|
||||
|
||||
@@ -11,6 +11,7 @@ from uuid import uuid4
|
||||
from edxmako.shortcuts import render_to_string
|
||||
from student.models import Registration
|
||||
from student.tests.factories import UserFactory
|
||||
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
|
||||
|
||||
|
||||
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
|
||||
@@ -31,6 +32,11 @@ class TestActivateAccount(TestCase):
|
||||
self.registration.register(self.user)
|
||||
self.registration.save()
|
||||
|
||||
self.platform_name = configuration_helpers.get_value('PLATFORM_NAME', settings.PLATFORM_NAME)
|
||||
self.activation_email_support_link = configuration_helpers.get_value(
|
||||
'ACTIVATION_EMAIL_SUPPORT_LINK', settings.SUPPORT_SITE_LINK # Intentional default.
|
||||
)
|
||||
|
||||
def login(self):
|
||||
"""
|
||||
Login with test user.
|
||||
@@ -118,7 +124,11 @@ class TestActivateAccount(TestCase):
|
||||
self.login()
|
||||
expected_message = render_to_string(
|
||||
'registration/account_activation_sidebar_notice.html',
|
||||
{'email': self.user.email}
|
||||
{
|
||||
'email': self.user.email,
|
||||
'platform_name': self.platform_name,
|
||||
'activation_email_support_link': self.activation_email_support_link
|
||||
}
|
||||
)
|
||||
|
||||
response = self.client.get(reverse('dashboard'))
|
||||
@@ -130,7 +140,11 @@ class TestActivateAccount(TestCase):
|
||||
self.login()
|
||||
expected_message = render_to_string(
|
||||
'registration/account_activation_sidebar_notice.html',
|
||||
{'email': self.user.email}
|
||||
{
|
||||
'email': self.user.email,
|
||||
'platform_name': self.platform_name,
|
||||
'activation_email_support_link': self.activation_email_support_link
|
||||
}
|
||||
)
|
||||
response = self.client.get(reverse('dashboard'))
|
||||
self.assertNotContains(response, expected_message, html=True)
|
||||
|
||||
@@ -657,6 +657,9 @@ def dashboard(request):
|
||||
'DISPLAY_COURSE_MODES_ON_DASHBOARD',
|
||||
settings.FEATURES.get('DISPLAY_COURSE_MODES_ON_DASHBOARD', True)
|
||||
)
|
||||
activation_email_support_link = configuration_helpers.get_value(
|
||||
'ACTIVATION_EMAIL_SUPPORT_LINK', settings.SUPPORT_SITE_LINK
|
||||
)
|
||||
|
||||
# Let's filter out any courses in an "org" that has been declared to be
|
||||
# in a configuration
|
||||
@@ -712,12 +715,16 @@ def dashboard(request):
|
||||
if display_account_activation_message_on_sidebar and not user.is_active:
|
||||
sidebar_account_activation_message = render_to_string(
|
||||
'registration/account_activation_sidebar_notice.html',
|
||||
{'email': user.email}
|
||||
{
|
||||
'email': user.email,
|
||||
'platform_name': platform_name,
|
||||
'activation_email_support_link': activation_email_support_link
|
||||
}
|
||||
)
|
||||
elif not user.is_active:
|
||||
banner_account_activation_message = render_to_string(
|
||||
'registration/activate_account_notice.html',
|
||||
{'email': user.email, 'platform_name': platform_name}
|
||||
{'email': user.email}
|
||||
)
|
||||
|
||||
enterprise_message = get_dashboard_consent_notification(request, user, course_enrollments)
|
||||
@@ -727,11 +734,11 @@ def dashboard(request):
|
||||
message for message in messages.get_messages(request) if 'account-activation' in message.tags
|
||||
]
|
||||
|
||||
# Global staff can see what courses errored on their dashboard
|
||||
# Global staff can see what courses encountered an error on their dashboard
|
||||
staff_access = False
|
||||
errored_courses = {}
|
||||
if has_access(user, 'staff', 'global'):
|
||||
# Show any courses that errored on load
|
||||
# Show any courses that encountered an error on load
|
||||
staff_access = True
|
||||
errored_courses = modulestore().get_errored_courses()
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
"""
|
||||
Common code shared by course and library fixtures.
|
||||
"""
|
||||
import re
|
||||
import requests
|
||||
import json
|
||||
import re
|
||||
|
||||
import requests
|
||||
from lazy import lazy
|
||||
|
||||
from common.test.acceptance.fixtures import STUDIO_BASE_URL
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
"""
|
||||
Fixture to manipulate configuration models.
|
||||
"""
|
||||
import requests
|
||||
import re
|
||||
import json
|
||||
import re
|
||||
|
||||
import requests
|
||||
from lazy import lazy
|
||||
|
||||
from common.test.acceptance.fixtures import LMS_BASE_URL
|
||||
|
||||
|
||||
|
||||
@@ -2,19 +2,17 @@
|
||||
Fixture to create a course and course components (XBlocks).
|
||||
"""
|
||||
|
||||
import mimetypes
|
||||
import json
|
||||
|
||||
import datetime
|
||||
|
||||
from textwrap import dedent
|
||||
import json
|
||||
import mimetypes
|
||||
from collections import namedtuple
|
||||
from path import Path as path
|
||||
from textwrap import dedent
|
||||
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from path import Path
|
||||
|
||||
from common.test.acceptance.fixtures import STUDIO_BASE_URL
|
||||
from common.test.acceptance.fixtures.base import XBlockContainerFixture, FixtureError
|
||||
from common.test.acceptance.fixtures.base import FixtureError, XBlockContainerFixture
|
||||
|
||||
|
||||
class XBlockFixtureDesc(object):
|
||||
@@ -392,7 +390,7 @@ class CourseFixture(XBlockContainerFixture):
|
||||
"""
|
||||
url = STUDIO_BASE_URL + self._assets_url
|
||||
|
||||
test_dir = path(__file__).abspath().dirname().dirname().dirname()
|
||||
test_dir = Path(__file__).abspath().dirname().dirname().dirname()
|
||||
|
||||
for asset_name in self._assets:
|
||||
asset_file_path = test_dir + '/data/uploads/' + asset_name
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
Tools for creating discussion content fixture data.
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
import factory
|
||||
import requests
|
||||
|
||||
@@ -3,6 +3,7 @@ Tools for creating edxnotes content fixture data.
|
||||
"""
|
||||
|
||||
import json
|
||||
|
||||
import factory
|
||||
import requests
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ Fixture to create a Content Library
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
|
||||
from common.test.acceptance.fixtures import STUDIO_BASE_URL
|
||||
from common.test.acceptance.fixtures.base import XBlockContainerFixture, FixtureError
|
||||
from common.test.acceptance.fixtures.base import FixtureError, XBlockContainerFixture
|
||||
|
||||
|
||||
class LibraryFixture(XBlockContainerFixture):
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
Fixture to configure XQueue response.
|
||||
"""
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
import requests
|
||||
|
||||
from common.test.acceptance.fixtures import XQUEUE_STUB_URL
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
Logout Page.
|
||||
"""
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.common import BASE_URL
|
||||
|
||||
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
Utility methods common to Studio and the LMS.
|
||||
"""
|
||||
from bok_choy.promise import BrokenPromise
|
||||
from common.test.acceptance.tests.helpers import disable_animations
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from common.test.acceptance.pages.lms.pay_and_verify import PaymentAndVerificationFlow, FakePaymentPage
|
||||
from common.test.acceptance.pages.lms.track_selection import TrackSelectionPage
|
||||
|
||||
from common.test.acceptance.pages.lms.create_mode import ModeCreationPage
|
||||
from common.test.acceptance.pages.lms.pay_and_verify import FakePaymentPage, PaymentAndVerificationFlow
|
||||
from common.test.acceptance.pages.lms.track_selection import TrackSelectionPage
|
||||
from common.test.acceptance.tests.helpers import disable_animations
|
||||
|
||||
|
||||
def sync_on_notification(page, style='default', wait_for_hide=False):
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
"""
|
||||
Base class for account settings page.
|
||||
"""
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from common.test.acceptance.pages.lms.fields import FieldsMixin
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,9 @@ Auto-auth page (used to automatically log in during testing).
|
||||
|
||||
import re
|
||||
import urllib
|
||||
from bok_choy.page_object import PageObject, unguarded, XSS_INJECTION
|
||||
|
||||
from bok_choy.page_object import XSS_INJECTION, PageObject, unguarded
|
||||
|
||||
from common.test.acceptance.pages.lms import AUTH_BASE_URL
|
||||
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
"""
|
||||
Courseware Boomarks
|
||||
"""
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
from common.test.acceptance.pages.common.paging import PaginatedUIMixin
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
|
||||
|
||||
class BookmarksPage(CoursePage, PaginatedUIMixin):
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
CCX coach dashboard page
|
||||
"""
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ Module for Certificates pages.
|
||||
"""
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ LMS Course Home page object
|
||||
"""
|
||||
|
||||
from collections import OrderedDict
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from .bookmarks import BookmarksPage
|
||||
|
||||
@@ -3,6 +3,7 @@ Base class for pages in courseware.
|
||||
"""
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from common.test.acceptance.pages.lms.tab_nav import TabNavPage
|
||||
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
Courseware page.
|
||||
"""
|
||||
|
||||
import re
|
||||
|
||||
from bok_choy.page_object import PageObject, unguarded
|
||||
from bok_choy.promise import EmptyPromise
|
||||
import re
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
|
||||
from common.test.acceptance.pages.lms.bookmarks import BookmarksPage
|
||||
|
||||
@@ -4,6 +4,7 @@ import re
|
||||
import urllib
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
Student dashboard page.
|
||||
"""
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ Dashboard search
|
||||
"""
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
Course discovery page.
|
||||
"""
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
|
||||
class CourseDiscoveryPage(PageObject):
|
||||
"""
|
||||
|
||||
@@ -2,12 +2,11 @@ from contextlib import contextmanager
|
||||
|
||||
from bok_choy.javascript import wait_for_js
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import EmptyPromise, Promise
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from common.test.acceptance.tests.helpers import is_focused_on_element
|
||||
from common.test.acceptance.pages.common.utils import hover
|
||||
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
from common.test.acceptance.tests.helpers import is_focused_on_element
|
||||
|
||||
|
||||
class DiscussionPageMixin(object):
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
from bok_choy.page_object import PageObject, PageLoadError, unguarded
|
||||
from bok_choy.page_object import PageLoadError, PageObject, unguarded
|
||||
from bok_choy.promise import BrokenPromise, EmptyPromise
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
from common.test.acceptance.pages.common.paging import PaginatedUIMixin
|
||||
from common.test.acceptance.tests.helpers import disable_animations
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
|
||||
from common.test.acceptance.pages.common.paging import PaginatedUIMixin
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
from common.test.acceptance.tests.helpers import disable_animations
|
||||
|
||||
|
||||
class NoteChild(PageObject):
|
||||
url = None
|
||||
|
||||
@@ -3,6 +3,7 @@ Find courses page (main page of the LMS).
|
||||
"""
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
LMS index (home) page.
|
||||
"""
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
BANNER_SELECTOR = 'section.home header div.outer-wrapper div.title .heading-group h1'
|
||||
|
||||
@@ -3,11 +3,13 @@
|
||||
Instructor (2) dashboard page.
|
||||
"""
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
import os
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import EmptyPromise, Promise
|
||||
from common.test.acceptance.tests.helpers import select_option_by_text, get_selected_option_text, get_options
|
||||
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
from common.test.acceptance.tests.helpers import get_options, get_selected_option_text, select_option_by_text
|
||||
|
||||
|
||||
class InstructorDashboardPage(CoursePage):
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
"""
|
||||
Bok-Choy PageObject class for learner profile page.
|
||||
"""
|
||||
from bok_choy.query import BrowserQuery
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from bok_choy.page_object import PageObject
|
||||
from common.test.acceptance.pages.lms.fields import FieldsMixin
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
from common.test.acceptance.tests.helpers import select_option_by_value
|
||||
from bok_choy.query import BrowserQuery
|
||||
from selenium.webdriver import ActionChains
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from common.test.acceptance.pages.lms.fields import FieldsMixin
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
from common.test.acceptance.tests.helpers import select_option_by_value
|
||||
|
||||
PROFILE_VISIBILITY_SELECTOR = '#u-field-select-account_privacy option[value="{}"]'
|
||||
PROFILE_VISIBILITY_INPUT = '#u-field-select-account_privacy'
|
||||
|
||||
@@ -4,6 +4,7 @@ Login page for the LMS.
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
"""Login and Registration pages """
|
||||
|
||||
from urllib import urlencode
|
||||
|
||||
from bok_choy.page_object import PageObject, unguarded
|
||||
from bok_choy.promise import Promise, EmptyPromise
|
||||
from bok_choy.promise import EmptyPromise, Promise
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
"""Pages relevant for OAuth2 confirmation."""
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
|
||||
|
||||
class OAuth2Confirmation(PageObject):
|
||||
"""Page for OAuth2 confirmation view."""
|
||||
|
||||
@@ -4,6 +4,7 @@ import re
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import Promise
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
Problem Page.
|
||||
"""
|
||||
from bok_choy.page_object import PageObject
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
|
||||
|
||||
class ProblemPage(PageObject):
|
||||
"""
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
Staff views of various tabs (e.g. courseware, course home)
|
||||
"""
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ High-level tab navigation.
|
||||
"""
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import Promise, EmptyPromise
|
||||
from bok_choy.promise import EmptyPromise, Promise
|
||||
|
||||
|
||||
class TabNavPage(PageObject):
|
||||
|
||||
@@ -3,14 +3,12 @@
|
||||
Teams pages.
|
||||
"""
|
||||
|
||||
from common.test.acceptance.pages.common.paging import PaginatedUIMixin
|
||||
from common.test.acceptance.pages.common.utils import click_css, confirm_prompt
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
from common.test.acceptance.pages.lms.discussion import InlineDiscussionPage
|
||||
from common.test.acceptance.pages.common.paging import PaginatedUIMixin
|
||||
from common.test.acceptance.pages.common.utils import confirm_prompt, click_css
|
||||
|
||||
from common.test.acceptance.pages.lms.fields import FieldsMixin
|
||||
|
||||
|
||||
TOPIC_CARD_CSS = 'div.wrapper-card-core'
|
||||
CARD_TITLE_CSS = 'h3.card-title'
|
||||
MY_TEAMS_BUTTON_CSS = '.nav-item[data-index="0"]'
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
Course Textbooks page.
|
||||
"""
|
||||
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
|
||||
|
||||
class TextbookViewPage(CoursePage):
|
||||
"""
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
"""Track selection page"""
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
from common.test.acceptance.pages.lms.pay_and_verify import PaymentAndVerificationFlow
|
||||
|
||||
@@ -2,15 +2,16 @@
|
||||
Video player in the courseware.
|
||||
"""
|
||||
|
||||
import time
|
||||
import json
|
||||
import logging
|
||||
import time
|
||||
|
||||
import requests
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from bok_choy.javascript import js_defined, wait_for_js
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import EmptyPromise, Promise
|
||||
from bok_choy.javascript import wait_for_js, js_defined
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
|
||||
import logging
|
||||
log = logging.getLogger('VideoPage')
|
||||
|
||||
VIDEO_BUTTONS = {
|
||||
|
||||
@@ -2,12 +2,14 @@
|
||||
The Files and Uploads page for a course in Studio
|
||||
"""
|
||||
|
||||
import urllib
|
||||
import os
|
||||
import urllib
|
||||
|
||||
from bok_choy.javascript import wait_for_js
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from bok_choy.javascript import wait_for_js
|
||||
|
||||
|
||||
class AssetIndexPage(CoursePage):
|
||||
|
||||
@@ -4,7 +4,9 @@ Auto-auth page (used to automatically log in during testing).
|
||||
|
||||
import re
|
||||
import urllib
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
from bok_choy.page_object import PageObject
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
from common.test.acceptance.tests.helpers import select_option_by_text, get_selected_option_text
|
||||
from selenium.webdriver.support.ui import Select
|
||||
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
from common.test.acceptance.tests.helpers import get_selected_option_text, select_option_by_text
|
||||
|
||||
|
||||
class BaseComponentEditorView(PageObject):
|
||||
"""
|
||||
|
||||
@@ -3,13 +3,11 @@ Container page in Studio
|
||||
"""
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import Promise, EmptyPromise
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
from common.test.acceptance.pages.studio.utils import HelpMixin
|
||||
from bok_choy.promise import EmptyPromise, Promise
|
||||
|
||||
from common.test.acceptance.pages.common.utils import click_css, confirm_prompt
|
||||
|
||||
from common.test.acceptance.pages.studio.utils import type_in_codemirror
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
from common.test.acceptance.pages.studio.utils import HelpMixin, type_in_codemirror
|
||||
|
||||
|
||||
class ContainerPage(PageObject, HelpMixin):
|
||||
|
||||
@@ -3,7 +3,7 @@ Course Updates page.
|
||||
"""
|
||||
from common.test.acceptance.pages.common.utils import click_css, confirm_prompt
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from common.test.acceptance.pages.studio.utils import type_in_codemirror, set_input_value
|
||||
from common.test.acceptance.pages.studio.utils import set_input_value, type_in_codemirror
|
||||
|
||||
|
||||
class CourseUpdatesPage(CoursePage):
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
"""
|
||||
Base class for pages specific to a course in Studio.
|
||||
"""
|
||||
from abc import abstractmethod
|
||||
import os
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
from abc import abstractmethod
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
from common.test.acceptance.pages.studio.utils import HelpMixin
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from component_editor import ComponentEditorView
|
||||
from common.test.acceptance.pages.studio.utils import type_in_codemirror
|
||||
from component_editor import ComponentEditorView
|
||||
|
||||
|
||||
class HtmlComponentEditorView(ComponentEditorView):
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
"""
|
||||
Import/Export pages.
|
||||
"""
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
from bok_choy.promise import EmptyPromise
|
||||
import os
|
||||
import re
|
||||
import requests
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
|
||||
from common.test.acceptance.pages.studio.library import LibraryPage
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from common.test.acceptance.pages.studio.library import LibraryPage
|
||||
|
||||
|
||||
class TemplateCheckMixin(object):
|
||||
|
||||
@@ -4,16 +4,16 @@ Library edit page in Studio
|
||||
from bok_choy.javascript import js_defined, wait_for_js
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.select import Select
|
||||
|
||||
from common.test.acceptance.pages.common.utils import confirm_prompt, sync_on_notification
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
from common.test.acceptance.pages.studio.component_editor import ComponentEditorView
|
||||
from common.test.acceptance.pages.studio.container import XBlockWrapper
|
||||
from common.test.acceptance.pages.studio.users import UsersPageMixin
|
||||
from common.test.acceptance.pages.studio.pagination import PaginatedMixin
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from common.test.acceptance.pages.studio.users import UsersPageMixin
|
||||
from common.test.acceptance.pages.studio.utils import HelpMixin
|
||||
from common.test.acceptance.pages.common.utils import confirm_prompt, sync_on_notification
|
||||
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
|
||||
|
||||
class LibraryPage(PageObject, HelpMixin):
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
Move XBlock Modal Page Object
|
||||
"""
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
|
||||
|
||||
|
||||
@@ -3,20 +3,18 @@ Course Outline page in Studio.
|
||||
"""
|
||||
import datetime
|
||||
|
||||
from bok_choy.javascript import js_defined, wait_for_js
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from bok_choy.javascript import js_defined, wait_for_js
|
||||
|
||||
from selenium.webdriver import ActionChains
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import Select
|
||||
|
||||
from common.test.acceptance.pages.common.utils import click_css, confirm_prompt
|
||||
from common.test.acceptance.tests.helpers import disable_animations, enable_animations
|
||||
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from common.test.acceptance.pages.studio.container import ContainerPage
|
||||
from common.test.acceptance.pages.studio.utils import set_input_value_and_save, set_input_value
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from common.test.acceptance.pages.studio.utils import set_input_value, set_input_value_and_save
|
||||
from common.test.acceptance.tests.helpers import disable_animations, enable_animations
|
||||
|
||||
|
||||
@js_defined('jQuery')
|
||||
|
||||
@@ -3,16 +3,15 @@
|
||||
Course Schedule and Details Settings page.
|
||||
"""
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from bok_choy.javascript import requirejs
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from common.test.acceptance.pages.studio.users import wait_for_ajax_or_reload
|
||||
from common.test.acceptance.pages.studio.utils import (
|
||||
press_the_notification_button,
|
||||
type_in_codemirror
|
||||
)
|
||||
from common.test.acceptance.pages.studio.utils import press_the_notification_button, type_in_codemirror
|
||||
|
||||
|
||||
@requirejs('js/factories/settings')
|
||||
|
||||
@@ -3,14 +3,14 @@ Course Advanced Settings page
|
||||
"""
|
||||
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from common.test.acceptance.pages.studio.utils import (
|
||||
press_the_notification_button,
|
||||
type_in_codemirror,
|
||||
get_codemirror_value,
|
||||
press_the_notification_button,
|
||||
type_in_codemirror
|
||||
)
|
||||
|
||||
|
||||
KEY_CSS = '.key h3.title'
|
||||
UNDO_BUTTON_SELECTOR = ".action-item .action-undo"
|
||||
MANUAL_BUTTON_SELECTOR = ".action-item .action-cancel"
|
||||
|
||||
@@ -11,9 +11,10 @@ The methods in these classes are organized into several conceptual buckets:
|
||||
import os
|
||||
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from selenium.webdriver import ActionChains
|
||||
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from common.test.acceptance.tests.helpers import disable_animations
|
||||
from selenium.webdriver import ActionChains
|
||||
|
||||
|
||||
class CertificatesPage(CoursePage):
|
||||
|
||||
@@ -3,9 +3,9 @@ Signup page for studio
|
||||
"""
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
from common.test.acceptance.pages.studio.utils import set_input_value, HelpMixin
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
from common.test.acceptance.pages.studio.utils import HelpMixin, set_input_value
|
||||
|
||||
|
||||
class SignupPage(PageObject, HelpMixin):
|
||||
|
||||
@@ -4,6 +4,7 @@ Course Textbooks page.
|
||||
|
||||
import requests
|
||||
from path import Path as path
|
||||
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
|
||||
|
||||
@@ -2,13 +2,15 @@
|
||||
Page classes to test either the Course Team page or the Library Team page.
|
||||
"""
|
||||
import os
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
from bok_choy.promise import EmptyPromise
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from common.test.acceptance.tests.helpers import disable_animations
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
from common.test.acceptance.pages.studio.course_page import CoursePage
|
||||
from common.test.acceptance.pages.studio.utils import HelpMixin
|
||||
from common.test.acceptance.tests.helpers import disable_animations
|
||||
|
||||
|
||||
def wait_for_ajax_or_reload(browser):
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
"""
|
||||
Utility methods useful for Studio page tests.
|
||||
"""
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from bok_choy.javascript import js_defined
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
|
||||
from common.test.acceptance.pages.common.utils import click_css, sync_on_notification
|
||||
|
||||
|
||||
NAV_HELP_NOT_SIGNED_IN_CSS = '.nav-item.nav-not-signedin-help a'
|
||||
NAV_HELP_CSS = '.nav-item.nav-account-help a'
|
||||
SIDE_BAR_HELP_AS_LIST_ITEM = '.bit li.action-item a'
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
"""
|
||||
CMS Video
|
||||
"""
|
||||
import time
|
||||
import os
|
||||
import requests
|
||||
from bok_choy.promise import EmptyPromise, Promise
|
||||
from bok_choy.javascript import wait_for_js, js_defined
|
||||
from common.test.acceptance.tests.helpers import YouTubeStubConfig
|
||||
from common.test.acceptance.pages.lms.video.video import VideoPage
|
||||
from common.test.acceptance.pages.common.utils import sync_on_notification
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
import time
|
||||
|
||||
import requests
|
||||
from bok_choy.javascript import js_defined, wait_for_js
|
||||
from bok_choy.promise import EmptyPromise, Promise
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
|
||||
from common.test.acceptance.pages.common.utils import sync_on_notification
|
||||
from common.test.acceptance.pages.lms.video.video import VideoPage
|
||||
from common.test.acceptance.tests.helpers import YouTubeStubConfig
|
||||
|
||||
CLASS_SELECTORS = {
|
||||
'video_container': '.video',
|
||||
|
||||
@@ -3,7 +3,8 @@ PageObjects related to the AcidBlock
|
||||
"""
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
from bok_choy.promise import EmptyPromise, BrokenPromise
|
||||
from bok_choy.promise import BrokenPromise, EmptyPromise
|
||||
|
||||
from common.test.acceptance.pages.xblock.utils import wait_for_xblock_initialization
|
||||
|
||||
|
||||
|
||||
@@ -2,16 +2,17 @@
|
||||
Single page performance tests for LMS.
|
||||
"""
|
||||
from bok_choy.web_app_test import with_cache
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, CourseUpdateDesc, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.course_info import CourseInfoPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
from common.test.acceptance.pages.lms.course_info import CourseInfoPage
|
||||
from common.test.acceptance.pages.lms.login import LoginPage
|
||||
from common.test.acceptance.pages.lms.progress import ProgressPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc, CourseUpdateDesc
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, load_data_str
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
|
||||
@attr(har_mode='explicit')
|
||||
|
||||
@@ -4,11 +4,11 @@ Single page performance tests for Studio.
|
||||
from bok_choy.web_app_test import with_cache
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from ..tests.helpers import AcceptanceTest
|
||||
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage
|
||||
|
||||
from ..tests.helpers import AcceptanceTest
|
||||
|
||||
|
||||
@attr(har_mode='explicit')
|
||||
class StudioPagePerformanceTest(AcceptanceTest):
|
||||
|
||||
@@ -5,6 +5,7 @@ Install bok-choy page objects for acceptance and end-to-end tests.
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from setuptools import setup
|
||||
|
||||
VERSION = '0.0.1'
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
Helper functions and classes for discussion tests.
|
||||
"""
|
||||
|
||||
from uuid import uuid4
|
||||
import json
|
||||
from uuid import uuid4
|
||||
|
||||
from common.test.acceptance.fixtures import LMS_BASE_URL
|
||||
from common.test.acceptance.fixtures.course import (CourseFixture, XBlockFixtureDesc)
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.fixtures.discussion import (
|
||||
SingleThreadViewFixture,
|
||||
Thread,
|
||||
Response,
|
||||
ForumsConfigMixin,
|
||||
MultipleThreadFixture,
|
||||
Response,
|
||||
SingleThreadViewFixture,
|
||||
Thread
|
||||
)
|
||||
from common.test.acceptance.pages.lms.discussion import DiscussionTabSingleThreadPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
@@ -9,15 +9,16 @@ from datetime import datetime
|
||||
|
||||
import unicodecsv
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from nose.plugins.attrib import attr
|
||||
from pytz import UTC, utc
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import DataDownloadPage, InstructorDashboardPage
|
||||
from common.test.acceptance.pages.studio.settings_group_configurations import GroupConfigurationsPage
|
||||
from common.test.acceptance.tests.discussion.helpers import CohortTestMixin
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest, create_user_partition_json
|
||||
from nose.plugins.attrib import attr
|
||||
from openedx.core.lib.partitions.partitions import Group
|
||||
from pytz import UTC, utc
|
||||
|
||||
|
||||
@attr(shard=8)
|
||||
|
||||
@@ -3,20 +3,15 @@ Tests related to the cohorting feature.
|
||||
"""
|
||||
from uuid import uuid4
|
||||
|
||||
from common.test.acceptance.tests.discussion.helpers import BaseDiscussionMixin, BaseDiscussionTestCase
|
||||
from common.test.acceptance.tests.discussion.helpers import CohortTestMixin
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.fixtures.course import (CourseFixture, XBlockFixtureDesc)
|
||||
|
||||
from common.test.acceptance.pages.lms.discussion import (
|
||||
DiscussionTabSingleThreadPage,
|
||||
InlineDiscussionThreadPage,
|
||||
InlineDiscussionPage)
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.discussion import DiscussionTabSingleThreadPage, InlineDiscussionPage
|
||||
from common.test.acceptance.tests.discussion.helpers import BaseDiscussionMixin, BaseDiscussionTestCase, CohortTestMixin
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
|
||||
class NonCohortedDiscussionTestMixin(BaseDiscussionMixin):
|
||||
"""
|
||||
|
||||
@@ -5,40 +5,34 @@ Tests for discussion pages
|
||||
import datetime
|
||||
from uuid import uuid4
|
||||
|
||||
from flaky import flaky
|
||||
from nose.plugins.attrib import attr
|
||||
from nose.tools import nottest
|
||||
from pytz import UTC
|
||||
from flaky import flaky
|
||||
|
||||
from common.test.acceptance.tests.discussion.helpers import BaseDiscussionTestCase
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, get_modal_alert
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.discussion import (
|
||||
DiscussionTabSingleThreadPage,
|
||||
InlineDiscussionPage,
|
||||
InlineDiscussionThreadPage,
|
||||
DiscussionUserProfilePage,
|
||||
DiscussionTabHomePage,
|
||||
DiscussionSortPreferencePage,
|
||||
)
|
||||
from common.test.acceptance.pages.lms.learner_profile import LearnerProfilePage
|
||||
from common.test.acceptance.pages.lms.tab_nav import TabNavPage
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.fixtures.discussion import (
|
||||
SingleThreadViewFixture,
|
||||
UserProfileViewFixture,
|
||||
SearchResultFixture,
|
||||
Thread,
|
||||
Response,
|
||||
Comment,
|
||||
Response,
|
||||
SearchResult,
|
||||
MultipleThreadFixture,
|
||||
SearchResultFixture,
|
||||
SingleThreadViewFixture,
|
||||
Thread,
|
||||
UserProfileViewFixture
|
||||
)
|
||||
|
||||
from common.test.acceptance.tests.discussion.helpers import BaseDiscussionMixin
|
||||
from common.test.acceptance.tests.helpers import skip_if_browser
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.discussion import (
|
||||
DiscussionSortPreferencePage,
|
||||
DiscussionTabHomePage,
|
||||
DiscussionTabSingleThreadPage,
|
||||
DiscussionUserProfilePage,
|
||||
InlineDiscussionPage
|
||||
)
|
||||
from common.test.acceptance.pages.lms.learner_profile import LearnerProfilePage
|
||||
from common.test.acceptance.pages.lms.tab_nav import TabNavPage
|
||||
from common.test.acceptance.tests.discussion.helpers import BaseDiscussionMixin, BaseDiscussionTestCase
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, get_modal_alert, skip_if_browser
|
||||
|
||||
|
||||
THREAD_CONTENT_WITH_LATEX = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
|
||||
@@ -19,14 +19,7 @@ from bok_choy.javascript import js_defined
|
||||
from bok_choy.page_object import XSS_INJECTION
|
||||
from bok_choy.promise import EmptyPromise, Promise
|
||||
from bok_choy.web_app_test import WebAppTest
|
||||
from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common import BASE_URL
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
from openedx.core.lib.partitions.partitions import UserPartition
|
||||
from openedx.core.lib.tests.assertions.events import EventMatchTolerates, assert_event_matches, is_matching_event
|
||||
from openedx.core.release import RELEASE_LINE, doc_version
|
||||
from path import Path as path
|
||||
from pymongo import ASCENDING, MongoClient
|
||||
from selenium.common.exceptions import StaleElementReferenceException
|
||||
@@ -36,6 +29,14 @@ from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.support.select import Select
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
|
||||
from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common import BASE_URL
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from openedx.core.lib.partitions.partitions import UserPartition
|
||||
from openedx.core.lib.tests.assertions.events import EventMatchTolerates, assert_event_matches, is_matching_event
|
||||
from openedx.core.release import RELEASE_LINE, doc_version
|
||||
|
||||
MAX_EVENTS_IN_FAILURE_OUTPUT = 20
|
||||
|
||||
|
||||
|
||||
@@ -3,18 +3,19 @@
|
||||
End-to-end tests for the courseware unit bookmarks.
|
||||
"""
|
||||
import json
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
import requests
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage as StudioAutoAuthPage
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common import BASE_URL
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage as LmsAutoAuthPage
|
||||
from common.test.acceptance.pages.lms.bookmarks import BookmarksPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage as StudioAutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.common import BASE_URL
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest, is_404_page
|
||||
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@ End-to-end tests for the CCX dashboard.
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, EventsTestMixin
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.ccx_dashboard_page import CoachDashboardPage
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest
|
||||
|
||||
|
||||
@attr(shard=7)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
"""
|
||||
Acceptance tests for the certificate web view feature.
|
||||
"""
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, EventsTestMixin, load_data_str, get_element_padding
|
||||
from nose.plugins.attrib import attr
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc, CourseUpdateDesc
|
||||
|
||||
from common.test.acceptance.fixtures.certificates import CertificateConfigFixture
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, CourseUpdateDesc, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.certificate_page import CertificatePage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
@@ -13,6 +13,8 @@ from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.progress import ProgressPage
|
||||
from common.test.acceptance.pages.lms.tab_nav import TabNavPage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest, get_element_padding, load_data_str
|
||||
|
||||
|
||||
|
||||
@attr(shard=5)
|
||||
|
||||
@@ -3,12 +3,12 @@ Bok choy acceptance tests for conditionals in the LMS
|
||||
"""
|
||||
|
||||
from capa.tests.response_xml_factory import StringResponseXMLFactory
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.conditional import POLL_ANSWER, ConditionalPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.conditional import ConditionalPage, POLL_ANSWER
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
|
||||
class ConditionalTest(UniqueCourseTest):
|
||||
|
||||
@@ -3,16 +3,15 @@
|
||||
End-to-end tests for Student's Profile Page.
|
||||
"""
|
||||
from contextlib import contextmanager
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.account_settings import AccountSettingsPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.learner_profile import LearnerProfilePage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
|
||||
from common.test.acceptance.pages.lms.learner_profile import LearnerProfilePage
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, EventsTestMixin
|
||||
|
||||
|
||||
|
||||
@@ -2,20 +2,21 @@
|
||||
"""
|
||||
End-to-end tests for LibraryContent block in LMS
|
||||
"""
|
||||
import ddt
|
||||
import textwrap
|
||||
|
||||
import ddt
|
||||
from nose.plugins.attrib import attr
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, TestWithSearchIndexMixin
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.library import StudioLibraryContentEditor, StudioLibraryContainerXBlockWrapper
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.fixtures.library import LibraryFixture
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.library import LibraryContentXBlockWrapper
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.fixtures.library import LibraryFixture
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.library import StudioLibraryContainerXBlockWrapper, StudioLibraryContentEditor
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.tests.helpers import TestWithSearchIndexMixin, UniqueCourseTest
|
||||
|
||||
SECTION_NAME = 'Test Section'
|
||||
SUBSECTION_NAME = 'Test Subsection'
|
||||
|
||||
@@ -2,46 +2,50 @@
|
||||
"""
|
||||
End-to-end tests for the LMS.
|
||||
"""
|
||||
import urllib
|
||||
from datetime import datetime, timedelta
|
||||
from flaky import flaky
|
||||
from textwrap import dedent
|
||||
from unittest import skip
|
||||
from nose.plugins.attrib import attr
|
||||
import pytz
|
||||
import urllib
|
||||
|
||||
import pytz
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from common.test.acceptance.tests.helpers import (
|
||||
UniqueCourseTest,
|
||||
EventsTestMixin,
|
||||
load_data_str,
|
||||
generate_course_key,
|
||||
select_option_by_value,
|
||||
element_has_text,
|
||||
select_option_by_text,
|
||||
get_selected_option_text
|
||||
)
|
||||
from flaky import flaky
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, CourseUpdateDesc, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.common.utils import enroll_user_track
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from common.test.acceptance.pages.lms.account_settings import AccountSettingsPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.create_mode import ModeCreationPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.course_info import CourseInfoPage
|
||||
from common.test.acceptance.pages.lms.course_wiki import (
|
||||
CourseWikiPage, CourseWikiEditPage, CourseWikiHistoryPage, CourseWikiChildrenPage
|
||||
CourseWikiChildrenPage,
|
||||
CourseWikiEditPage,
|
||||
CourseWikiHistoryPage,
|
||||
CourseWikiPage
|
||||
)
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.create_mode import ModeCreationPage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
from common.test.acceptance.pages.lms.login_and_register import CombinedLoginAndRegisterPage, ResetPasswordPage
|
||||
from common.test.acceptance.pages.lms.pay_and_verify import PaymentAndVerificationFlow, FakePaymentPage
|
||||
from common.test.acceptance.pages.lms.progress import ProgressPage
|
||||
from common.test.acceptance.pages.lms.pay_and_verify import FakePaymentPage, PaymentAndVerificationFlow
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.lms.progress import ProgressPage
|
||||
from common.test.acceptance.pages.lms.tab_nav import TabNavPage
|
||||
from common.test.acceptance.pages.lms.video.video import VideoPage
|
||||
from common.test.acceptance.pages.common.utils import enroll_user_track
|
||||
from common.test.acceptance.pages.studio.settings import SettingsPage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc, CourseUpdateDesc
|
||||
from common.test.acceptance.tests.helpers import (
|
||||
EventsTestMixin,
|
||||
UniqueCourseTest,
|
||||
element_has_text,
|
||||
generate_course_key,
|
||||
get_selected_option_text,
|
||||
load_data_str,
|
||||
select_option_by_text,
|
||||
select_option_by_value
|
||||
)
|
||||
|
||||
|
||||
@attr(shard=8)
|
||||
|
||||
@@ -5,11 +5,11 @@ End-to-end tests for the LMS.
|
||||
|
||||
from unittest import expectedFailure
|
||||
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.xblock.acid import AcidView
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
|
||||
class XBlockAcidBase(UniqueCourseTest):
|
||||
|
||||
@@ -5,24 +5,20 @@ Test courseware search
|
||||
import json
|
||||
import uuid
|
||||
|
||||
from common.test.acceptance.tests.helpers import remove_file
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.lms.courseware_search import CoursewareSearchPage
|
||||
from common.test.acceptance.pages.lms.staff_view import StaffCoursewarePage
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.tests.studio.base_studio_test import ContainerBase
|
||||
|
||||
from common.test.acceptance.pages.studio.settings_group_configurations import GroupConfigurationsPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage as StudioAutoAuthPage
|
||||
from common.test.acceptance.fixtures import LMS_BASE_URL
|
||||
from common.test.acceptance.pages.studio.component_editor import ComponentVisibilityEditorView
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.courseware_search import CoursewareSearchPage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from common.test.acceptance.pages.lms.staff_view import StaffCoursewarePage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage as StudioAutoAuthPage
|
||||
from common.test.acceptance.pages.studio.component_editor import ComponentVisibilityEditorView
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.settings_group_configurations import GroupConfigurationsPage
|
||||
from common.test.acceptance.tests.helpers import remove_file
|
||||
from common.test.acceptance.tests.studio.base_studio_test import ContainerBase
|
||||
|
||||
|
||||
@attr(shard=1)
|
||||
|
||||
@@ -5,11 +5,11 @@ import datetime
|
||||
import json
|
||||
import uuid
|
||||
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, remove_file
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.discovery import CourseDiscoveryPage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.discovery import CourseDiscoveryPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, remove_file
|
||||
|
||||
|
||||
class CourseDiscoveryTest(AcceptanceTest):
|
||||
|
||||
@@ -2,14 +2,13 @@
|
||||
"""
|
||||
End-to-end tests for the LMS that utilize the course home page and course outline.
|
||||
"""
|
||||
from contextlib import contextmanager
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from ..helpers import auto_auth, load_data_str, UniqueCourseTest
|
||||
from ...fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from ...pages.lms.bookmarks import BookmarksPage
|
||||
from ...pages.lms.course_home import CourseHomePage
|
||||
from ...pages.lms.courseware import CoursewarePage
|
||||
from ..helpers import UniqueCourseTest, auto_auth, load_data_str
|
||||
|
||||
|
||||
class CourseHomeBaseTest(UniqueCourseTest):
|
||||
|
||||
@@ -10,20 +10,20 @@ import ddt
|
||||
from flaky import flaky
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from ..helpers import UniqueCourseTest, EventsTestMixin, auto_auth, create_multiple_choice_problem
|
||||
from ...fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from ...pages.common.logout import LogoutPage
|
||||
from ...pages.lms.course_home import CourseHomePage
|
||||
from ...pages.lms.courseware import CoursewarePage, CoursewareSequentialTabPage
|
||||
from ...pages.lms.create_mode import ModeCreationPage
|
||||
from ...pages.lms.dashboard import DashboardPage
|
||||
from ...pages.lms.pay_and_verify import PaymentAndVerificationFlow, FakePaymentPage, FakeSoftwareSecureVerificationPage
|
||||
from ...pages.lms.pay_and_verify import FakePaymentPage, FakeSoftwareSecureVerificationPage, PaymentAndVerificationFlow
|
||||
from ...pages.lms.problem import ProblemPage
|
||||
from ...pages.lms.progress import ProgressPage
|
||||
from ...pages.lms.staff_view import StaffCoursewarePage
|
||||
from ...pages.lms.track_selection import TrackSelectionPage
|
||||
from ...pages.studio.auto_auth import AutoAuthPage
|
||||
from ...pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from ..helpers import EventsTestMixin, UniqueCourseTest, auto_auth, create_multiple_choice_problem
|
||||
|
||||
|
||||
@attr(shard=9)
|
||||
|
||||
@@ -6,15 +6,15 @@ import json
|
||||
from flaky import flaky
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, remove_file
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
from common.test.acceptance.pages.studio.utils import add_html_component, type_in_codemirror
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.container import ContainerPage
|
||||
from common.test.acceptance.pages.lms.courseware_search import CoursewareSearchPage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.container import ContainerPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.utils import add_html_component, type_in_codemirror
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, remove_file
|
||||
|
||||
|
||||
@attr(shard=5)
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
End-to-end tests for the main LMS Dashboard (aka, Student Dashboard).
|
||||
"""
|
||||
import datetime
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, generate_course_key
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, generate_course_key
|
||||
|
||||
DEFAULT_SHORT_DATE_FORMAT = '{dt:%b} {dt.day}, {dt.year}'
|
||||
TEST_DATE_FORMAT = '{dt:%b} {dt.day}, {dt.year} {dt.hour:02}:{dt.minute:02}'
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
"""
|
||||
Test dashboard search
|
||||
"""
|
||||
import os
|
||||
import json
|
||||
import os
|
||||
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, generate_course_key
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
from common.test.acceptance.pages.studio.utils import add_html_component, type_in_codemirror
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.container import ContainerPage
|
||||
from common.test.acceptance.pages.lms.dashboard_search import DashboardSearchPage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.container import ContainerPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.utils import add_html_component, type_in_codemirror
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, generate_course_key
|
||||
|
||||
|
||||
class DashboardSearchTest(AcceptanceTest):
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
"""
|
||||
Test LMS Notes
|
||||
"""
|
||||
from unittest import skip
|
||||
import random
|
||||
from uuid import uuid4
|
||||
from datetime import datetime
|
||||
from unittest import skip
|
||||
from uuid import uuid4
|
||||
|
||||
from flaky import flaky
|
||||
from nose.plugins.attrib import attr
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, EventsTestMixin
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.fixtures.edxnotes import EdxNotesFixture, Note, Range
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.edxnotes import EdxNotesUnitPage, EdxNotesPage, EdxNotesPageNoContent
|
||||
from common.test.acceptance.fixtures.edxnotes import EdxNotesFixture, Note, Range
|
||||
from flaky import flaky
|
||||
from common.test.acceptance.pages.lms.edxnotes import EdxNotesPage, EdxNotesPageNoContent, EdxNotesUnitPage
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest
|
||||
|
||||
|
||||
class EdxNotesTestMixin(UniqueCourseTest):
|
||||
|
||||
@@ -4,12 +4,12 @@ Bok choy acceptance tests for Entrance exams in the LMS
|
||||
"""
|
||||
from textwrap import dedent
|
||||
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
|
||||
class EntranceExamTest(UniqueCourseTest):
|
||||
|
||||
@@ -4,14 +4,14 @@ End-to-end tests for the gating feature.
|
||||
"""
|
||||
from textwrap import dedent
|
||||
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
|
||||
class GatingTest(UniqueCourseTest):
|
||||
|
||||
@@ -4,17 +4,12 @@ Test Help links in LMS
|
||||
|
||||
import json
|
||||
|
||||
from common.test.acceptance.tests.lms.test_lms_instructor_dashboard import BaseInstructorDashboardTest
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
from common.test.acceptance.tests.studio.base_studio_test import ContainerBase
|
||||
from common.test.acceptance.fixtures import LMS_BASE_URL
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
|
||||
from common.test.acceptance.tests.helpers import (
|
||||
assert_link,
|
||||
assert_opened_help_link_is_correct,
|
||||
url_for_help,
|
||||
)
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
from common.test.acceptance.tests.helpers import assert_opened_help_link_is_correct, url_for_help
|
||||
from common.test.acceptance.tests.lms.test_lms_instructor_dashboard import BaseInstructorDashboardTest
|
||||
from common.test.acceptance.tests.studio.base_studio_test import ContainerBase
|
||||
|
||||
|
||||
class TestCohortHelp(ContainerBase):
|
||||
|
||||
@@ -4,30 +4,32 @@ End-to-end tests for the LMS Instructor Dashboard.
|
||||
"""
|
||||
|
||||
import ddt
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from flaky import flaky
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, get_modal_alert, EventsTestMixin
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.lms.create_mode import ModeCreationPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import (
|
||||
InstructorDashboardPage,
|
||||
EntranceExamAdmin,
|
||||
StudentSpecificAdmin,
|
||||
)
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.lms.pay_and_verify import PaymentAndVerificationFlow
|
||||
from common.test.acceptance.pages.lms.login_and_register import CombinedLoginAndRegisterPage
|
||||
from common.test.acceptance.pages.common.utils import enroll_user_track
|
||||
from common.test.acceptance.tests.helpers import disable_animations, create_multiple_choice_problem
|
||||
from common.test.acceptance.fixtures.certificates import CertificateConfigFixture
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.common.utils import enroll_user_track
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.create_mode import ModeCreationPage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import (
|
||||
EntranceExamAdmin,
|
||||
InstructorDashboardPage,
|
||||
StudentSpecificAdmin
|
||||
)
|
||||
from common.test.acceptance.pages.lms.login_and_register import CombinedLoginAndRegisterPage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.tests.helpers import (
|
||||
EventsTestMixin,
|
||||
UniqueCourseTest,
|
||||
create_multiple_choice_problem,
|
||||
disable_animations,
|
||||
get_modal_alert
|
||||
)
|
||||
|
||||
|
||||
class BaseInstructorDashboardTest(EventsTestMixin, UniqueCourseTest):
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
"""
|
||||
Test for matlab problems
|
||||
"""
|
||||
from textwrap import dedent
|
||||
import time
|
||||
from textwrap import dedent
|
||||
|
||||
from flaky import flaky
|
||||
|
||||
from common.test.acceptance.pages.lms.matlab_problem import MatlabProblemPage
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.fixtures.xqueue import XQueueResponseFixture
|
||||
from common.test.acceptance.pages.lms.matlab_problem import MatlabProblemPage
|
||||
from common.test.acceptance.tests.lms.test_lms_problems import ProblemsTest
|
||||
|
||||
|
||||
|
||||
@@ -4,16 +4,16 @@ Bok choy acceptance tests for problems in the LMS
|
||||
|
||||
See also old lettuce tests in lms/djangoapps/courseware/features/problems.feature
|
||||
"""
|
||||
from nose.plugins.attrib import attr
|
||||
from textwrap import dedent
|
||||
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.lms.login_and_register import CombinedLoginAndRegisterPage
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.login_and_register import CombinedLoginAndRegisterPage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest
|
||||
|
||||
|
||||
class ProblemsTest(UniqueCourseTest):
|
||||
|
||||
@@ -4,6 +4,8 @@ Test courseware search
|
||||
|
||||
import json
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.courseware_search import CoursewareSearchPage
|
||||
@@ -11,7 +13,6 @@ from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage as Studio
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.tests.helpers import create_user_partition_json, remove_file
|
||||
from common.test.acceptance.tests.studio.base_studio_test import ContainerBase
|
||||
from nose.plugins.attrib import attr
|
||||
from openedx.core.lib.partitions.partitions import Group
|
||||
|
||||
|
||||
|
||||
@@ -6,14 +6,14 @@ Tests the "preview" selector in the LMS that allows changing between Staff, Lear
|
||||
|
||||
from textwrap import dedent
|
||||
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
from common.test.acceptance.pages.lms.staff_view import StaffCoursewarePage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, create_user_partition_json
|
||||
from nose.plugins.attrib import attr
|
||||
from openedx.core.lib.partitions.partitions import ENROLLMENT_TRACK_PARTITION_ID, MINIMUM_STATIC_PARTITION_ID, Group
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Tests for OAuth2 permission delegation."""
|
||||
|
||||
from urlparse import urlparse, parse_qsl
|
||||
from urlparse import parse_qsl, urlparse
|
||||
|
||||
from common.test.acceptance.pages.lms.oauth2_confirmation import OAuth2Confirmation
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.oauth2_confirmation import OAuth2Confirmation
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest
|
||||
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@ Bok choy acceptance and a11y tests for problem types in the LMS
|
||||
|
||||
See also lettuce tests in lms/djangoapps/courseware/features/problems.feature
|
||||
"""
|
||||
import ddt
|
||||
import random
|
||||
import textwrap
|
||||
|
||||
from abc import ABCMeta, abstractmethod
|
||||
|
||||
import ddt
|
||||
from nose import SkipTest
|
||||
from nose.plugins.attrib import attr
|
||||
from selenium.webdriver import ActionChains
|
||||
@@ -25,13 +25,11 @@ from capa.tests.response_xml_factory import (
|
||||
NumericalResponseXMLFactory,
|
||||
OptionResponseXMLFactory,
|
||||
StringResponseXMLFactory,
|
||||
SymbolicResponseXMLFactory,
|
||||
SymbolicResponseXMLFactory
|
||||
)
|
||||
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.tests.helpers import select_option_by_text
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, select_option_by_text
|
||||
from common.test.acceptance.tests.lms.test_lms_problems import ProblemsTest
|
||||
|
||||
|
||||
|
||||
@@ -2,15 +2,13 @@
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.catalog import CatalogFixture, CatalogIntegrationMixin
|
||||
from common.test.acceptance.fixtures.programs import ProgramsConfigMixin
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
from common.test.acceptance.fixtures.programs import ProgramsConfigMixin
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.catalog import CacheProgramsPage
|
||||
from common.test.acceptance.pages.lms.programs import ProgramListingPage, ProgramDetailsPage
|
||||
from openedx.core.djangoapps.catalog.tests.factories import (
|
||||
ProgramFactory, CourseFactory, CourseRunFactory
|
||||
)
|
||||
from common.test.acceptance.pages.lms.programs import ProgramDetailsPage, ProgramListingPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
from openedx.core.djangoapps.catalog.tests.factories import CourseFactory, CourseRunFactory, ProgramFactory
|
||||
|
||||
|
||||
class ProgramPageBase(ProgramsConfigMixin, CatalogIntegrationMixin, UniqueCourseTest):
|
||||
|
||||
@@ -3,15 +3,11 @@
|
||||
End-to-end tests for the LMS that utilize the
|
||||
progress page.
|
||||
"""
|
||||
import ddt
|
||||
|
||||
from contextlib import contextmanager
|
||||
from nose.plugins.attrib import attr
|
||||
from flaky import flaky
|
||||
|
||||
from ..helpers import (
|
||||
UniqueCourseTest, auto_auth, create_multiple_choice_problem, create_multiple_choice_xml, get_modal_alert
|
||||
)
|
||||
import ddt
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from ...fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from ...pages.common.logout import LogoutPage
|
||||
from ...pages.lms.courseware import CoursewarePage
|
||||
@@ -19,8 +15,15 @@ from ...pages.lms.instructor_dashboard import InstructorDashboardPage, StudentSp
|
||||
from ...pages.lms.problem import ProblemPage
|
||||
from ...pages.lms.progress import ProgressPage
|
||||
from ...pages.studio.component_editor import ComponentEditorView
|
||||
from ...pages.studio.utils import type_in_codemirror
|
||||
from ...pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from ...pages.studio.utils import type_in_codemirror
|
||||
from ..helpers import (
|
||||
UniqueCourseTest,
|
||||
auto_auth,
|
||||
create_multiple_choice_problem,
|
||||
create_multiple_choice_xml,
|
||||
get_modal_alert
|
||||
)
|
||||
|
||||
|
||||
class ProgressPageBaseTest(UniqueCourseTest):
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user