Course Discovery feature using edx-search
This commit is contained in:
committed by
Dino Cikatic
parent
69e274151d
commit
7f633fc045
@@ -33,7 +33,7 @@ class CoursewareSearchPage(CoursePage):
|
||||
|
||||
def search_for_term(self, text):
|
||||
"""
|
||||
Search and return results
|
||||
Fill input and do search
|
||||
"""
|
||||
self.enter_search_term(text)
|
||||
self.search()
|
||||
|
||||
47
common/test/acceptance/pages/lms/discovery.py
Normal file
47
common/test/acceptance/pages/lms/discovery.py
Normal file
@@ -0,0 +1,47 @@
|
||||
"""
|
||||
Course discovery page.
|
||||
"""
|
||||
|
||||
from . import BASE_URL
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
|
||||
class CourseDiscoveryPage(PageObject):
|
||||
"""
|
||||
Find courses page (main page of the LMS).
|
||||
"""
|
||||
|
||||
url = BASE_URL + "/courses"
|
||||
form = "#discovery-form"
|
||||
|
||||
def is_browser_on_page(self):
|
||||
return "Courses" in self.browser.title
|
||||
|
||||
@property
|
||||
def result_items(self):
|
||||
"""
|
||||
Return search result items.
|
||||
"""
|
||||
return self.q(css=".courses-listing-item")
|
||||
|
||||
@property
|
||||
def clear_button(self):
|
||||
"""
|
||||
Clear all button.
|
||||
"""
|
||||
return self.q(css="#clear-all-filters")
|
||||
|
||||
def search(self, string):
|
||||
"""
|
||||
Search and wait for ajax.
|
||||
"""
|
||||
self.q(css=self.form + ' input[type="text"]').fill(string)
|
||||
self.q(css=self.form + ' [type="submit"]').click()
|
||||
self.wait_for_ajax()
|
||||
|
||||
def clear_search(self):
|
||||
"""
|
||||
Clear search results.
|
||||
"""
|
||||
self.clear_button.click()
|
||||
self.wait_for_ajax()
|
||||
@@ -0,0 +1,84 @@
|
||||
"""
|
||||
Test course discovery.
|
||||
"""
|
||||
import datetime
|
||||
import json
|
||||
import os
|
||||
|
||||
from bok_choy.web_app_test import WebAppTest
|
||||
from ...pages.common.logout import LogoutPage
|
||||
from ...pages.studio.auto_auth import AutoAuthPage
|
||||
from ...pages.lms.discovery import CourseDiscoveryPage
|
||||
from ...fixtures.course import CourseFixture
|
||||
|
||||
|
||||
class CourseDiscoveryTest(WebAppTest):
|
||||
"""
|
||||
Test searching for courses.
|
||||
"""
|
||||
|
||||
STAFF_USERNAME = "STAFF_TESTER"
|
||||
STAFF_EMAIL = "staff101@example.com"
|
||||
TEST_INDEX_FILENAME = "test_root/index_file.dat"
|
||||
|
||||
def setUp(self):
|
||||
"""
|
||||
Create course page and courses to find
|
||||
"""
|
||||
# create index file
|
||||
with open(self.TEST_INDEX_FILENAME, "w+") as index_file:
|
||||
json.dump({}, index_file)
|
||||
|
||||
self.addCleanup(os.remove, self.TEST_INDEX_FILENAME)
|
||||
|
||||
super(CourseDiscoveryTest, self).setUp()
|
||||
self.page = CourseDiscoveryPage(self.browser)
|
||||
|
||||
for i in range(10):
|
||||
org = self.unique_id
|
||||
number = unicode(i)
|
||||
run = "test_run"
|
||||
name = "test course"
|
||||
settings = {'enrollment_start': datetime.datetime(1970, 1, 1).isoformat()}
|
||||
CourseFixture(org, number, run, name, settings=settings).install()
|
||||
|
||||
for i in range(2):
|
||||
org = self.unique_id
|
||||
number = unicode(i)
|
||||
run = "test_run"
|
||||
name = "grass is always greener"
|
||||
CourseFixture(
|
||||
org,
|
||||
number,
|
||||
run,
|
||||
name,
|
||||
settings={
|
||||
'enrollment_start': datetime.datetime(1970, 1, 1).isoformat()
|
||||
}
|
||||
).install()
|
||||
|
||||
def _auto_auth(self, username, email, staff):
|
||||
"""
|
||||
Logout and login with given credentials.
|
||||
"""
|
||||
LogoutPage(self.browser).visit()
|
||||
AutoAuthPage(self.browser, username=username, email=email, staff=staff).visit()
|
||||
|
||||
def test_page_existence(self):
|
||||
"""
|
||||
Make sure that the page is accessible.
|
||||
"""
|
||||
self.page.visit()
|
||||
|
||||
def test_search(self):
|
||||
"""
|
||||
Make sure you can search for courses.
|
||||
"""
|
||||
self.page.visit()
|
||||
self.assertEqual(len(self.page.result_items), 12)
|
||||
|
||||
self.page.search("grass")
|
||||
self.assertEqual(len(self.page.result_items), 2)
|
||||
|
||||
self.page.clear_search()
|
||||
self.assertEqual(len(self.page.result_items), 12)
|
||||
Reference in New Issue
Block a user