Add text_search parameter to discussion API
The thread list endpoint now accepts the text_search parameter and also includes a text_search_rewrite field in its responses.
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
"""
|
||||
Tests for Discussion API forms
|
||||
"""
|
||||
import itertools
|
||||
from unittest import TestCase
|
||||
from urllib import urlencode
|
||||
|
||||
import ddt
|
||||
|
||||
from django.http import QueryDict
|
||||
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
@@ -63,6 +66,7 @@ class PaginationTestMixin(object):
|
||||
self.assert_field_value("page_size", 100)
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
class ThreadListGetFormTest(FormTestMixin, PaginationTestMixin, TestCase):
|
||||
"""Tests for ThreadListGetForm"""
|
||||
FORM_CLASS = ThreadListGetForm
|
||||
@@ -81,7 +85,6 @@ class ThreadListGetFormTest(FormTestMixin, PaginationTestMixin, TestCase):
|
||||
)
|
||||
|
||||
def test_basic(self):
|
||||
self.form_data.setlist("topic_id", ["example topic_id", "example 2nd topic_id"])
|
||||
form = self.get_form(expected_valid=True)
|
||||
self.assertEqual(
|
||||
form.cleaned_data,
|
||||
@@ -89,10 +92,27 @@ class ThreadListGetFormTest(FormTestMixin, PaginationTestMixin, TestCase):
|
||||
"course_id": CourseLocator.from_string("Foo/Bar/Baz"),
|
||||
"page": 2,
|
||||
"page_size": 13,
|
||||
"topic_id": ["example topic_id", "example 2nd topic_id"],
|
||||
"topic_id": [],
|
||||
"text_search": "",
|
||||
}
|
||||
)
|
||||
|
||||
def test_topic_id(self):
|
||||
self.form_data.setlist("topic_id", ["example topic_id", "example 2nd topic_id"])
|
||||
form = self.get_form(expected_valid=True)
|
||||
self.assertEqual(
|
||||
form.cleaned_data["topic_id"],
|
||||
["example topic_id", "example 2nd topic_id"],
|
||||
)
|
||||
|
||||
def test_text_search(self):
|
||||
self.form_data["text_search"] = "test search string"
|
||||
form = self.get_form(expected_valid=True)
|
||||
self.assertEqual(
|
||||
form.cleaned_data["text_search"],
|
||||
"test search string",
|
||||
)
|
||||
|
||||
def test_missing_course_id(self):
|
||||
self.form_data.pop("course_id")
|
||||
self.assert_error("course_id", "This field is required.")
|
||||
@@ -105,6 +125,14 @@ class ThreadListGetFormTest(FormTestMixin, PaginationTestMixin, TestCase):
|
||||
self.form_data.setlist("topic_id", ["", "not empty"])
|
||||
self.assert_error("topic_id", "This field cannot be empty.")
|
||||
|
||||
@ddt.data(*itertools.combinations(["topic_id", "text_search"], 2))
|
||||
def test_mutually_exclusive(self, params):
|
||||
self.form_data.update({param: "dummy" for param in params})
|
||||
self.assert_error(
|
||||
"__all__",
|
||||
"The following query parameters are mutually exclusive: topic_id, text_search"
|
||||
)
|
||||
|
||||
|
||||
class CommentListGetFormTest(FormTestMixin, PaginationTestMixin, TestCase):
|
||||
"""Tests for CommentListGetForm"""
|
||||
|
||||
Reference in New Issue
Block a user