Skip to content

Commit

Permalink
Merge pull request #381 from open-craft/eugeny/vote-count-and-search-…
Browse files Browse the repository at this point in the history
…messages-css-class

Discussion bug fixes and improvements
  • Loading branch information
antoviaque committed Feb 5, 2015
2 parents bce50e8 + d7ba0fc commit a9fe8e6
Show file tree
Hide file tree
Showing 8 changed files with 90 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ browser and pasting the output. When that file changes, this one should be rege
</script>
<script aria-hidden="true" type="text/template" id="search-alert-template">
<div class="search-alert" id="search-alert-<%- cid %>">
<div class="search-alert <%= css_class %>" id="search-alert-<%- cid %>">
<div class="search-alert-content">
<p class="message"><%= message %></p>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,11 @@ describe "DiscussionThreadListView", ->
$(@).html()
).get()).toEqual(expectedMessages)

getAlertMessagesAndClasses = () ->
$(".search-alert").map( ->
{ text: $('.message', @).html(), 'css_class': $(@).attr('class') }
).get()

it "renders and removes search alerts", ->
testAlertMessages []
foo = @view.addSearchAlert("foo")
Expand All @@ -285,6 +290,23 @@ describe "DiscussionThreadListView", ->
@view.removeSearchAlert(bar.cid)
testAlertMessages []

it "renders search alert with custom class", ->
testAlertMessages []
foo = @view.addSearchAlert("foo", "custom-class")
messages = getAlertMessagesAndClasses()
expect(messages.length).toEqual(1);
expect(messages[0].text).toEqual("foo")
expect(messages[0].css_class).toEqual("search-alert custom-class")

foo = @view.addSearchAlert("bar", "other-class")

messages = getAlertMessagesAndClasses()
expect(messages.length).toEqual(2);
expect(messages[0].text).toEqual("foo")
expect(messages[0].css_class).toEqual("search-alert custom-class")
expect(messages[1].text).toEqual("bar")
expect(messages[1].css_class).toEqual("search-alert other-class")

it "clears all search alerts", ->
@view.addSearchAlert("foo")
@view.addSearchAlert("bar")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,8 @@ if Backbone?
closed: (closed) ->
@updateButtonState(".action-close", closed)
@$(".post-label-closed").toggleClass("is-hidden", not closed)
@$(".action-vote").toggle(not closed)
@$(".display-vote").toggle(closed)
})

toggleSecondaryActions: (event) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,12 @@ if Backbone?
@searchAlertCollection.on "add", (searchAlert) =>
content = _.template(
$("#search-alert-template").html(),
{'message': searchAlert.attributes.message, 'cid': searchAlert.cid}
)
{
'message': searchAlert.attributes.message,
'cid': searchAlert.cid,
'css_class': searchAlert.attributes.css_class
}
)
@$(".search-alerts").append(content)
@$("#search-alert-" + searchAlert.cid + " a.dismiss").bind "click", searchAlert, (event) =>
@removeSearchAlert(event.data.cid)
Expand All @@ -54,8 +58,8 @@ if Backbone?
@searchAlertCollection.on "reset", =>
@$(".search-alerts").empty()

addSearchAlert: (message) =>
m = new Backbone.Model({"message": message})
addSearchAlert: (message, css_class="") =>
m = new Backbone.Model({"message": message, "css_class": css_class})
@searchAlertCollection.add(m)
m

Expand Down Expand Up @@ -496,7 +500,7 @@ if Backbone?
},
true
)
@addSearchAlert(message)
@addSearchAlert(message, 'search-by-user')

clearSearch: ->
@$(".forum-nav-search-input").val("")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ if Backbone?
@$('.comment-form').closest('li').toggle(not closed)
@$(".action-vote").toggle(not closed)
@$(".display-vote").toggle(closed)
# @$(".display-vote").toggle(closed)
@renderAddResponseButton()
})

Expand Down Expand Up @@ -256,6 +255,7 @@ if Backbone?
comment = new Comment(body: body, created_at: (new Date()).toISOString(), username: window.user.get("username"), votes: { up_count: 0 }, abuse_flaggers:[], endorsed: false, user_id: window.user.get("id"))
comment.set('thread', @model.get('thread'))
@renderResponseToList(comment, ".js-response-list")
@renderAttrs()
@model.addComment()
@renderAddResponseButton()

Expand Down
2 changes: 1 addition & 1 deletion common/templates/discussion/_underscore_templates.html
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ <h1 class="home-title">${course.display_name_with_default}</h1>
</script>

<script aria-hidden="true" type="text/template" id="search-alert-template">
<div class="search-alert" id="search-alert-${'<%- cid %>'}">
<div class="search-alert ${'<%= css_class %>'}" id="search-alert-${'<%- cid %>'}">
<div class="search-alert-content">
<p class="message">${'<%= message %>'}</p>
</div>
Expand Down
4 changes: 4 additions & 0 deletions common/test/acceptance/pages/lms/discussion.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,10 @@ def is_browser_on_page(self):
def __getattr__(self, name):
return getattr(self.thread_page, name)

def close_open_thread(self):
with self.thread_page._secondary_action_menu_open(".forum-thread-main-wrapper"):
self._find_within(".forum-thread-main-wrapper .action-close").first.click()


class InlineDiscussionPage(PageObject):
url = None
Expand Down
50 changes: 50 additions & 0 deletions common/test/acceptance/tests/discussion/test_discussion.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,56 @@ def test_marked_answer_comments(self):
self.assertFalse(self.thread_page.is_show_comments_visible(response_id))


@attr('shard_1')
class DiscussionOpenClosedThreadTest(UniqueCourseTest):
"""
Tests for checking the display of attributes on open and closed threads
"""

def setUp(self):
super(DiscussionOpenClosedThreadTest, self).setUp()

# Create a course to register for
CourseFixture(**self.course_info).install()
self.thread_id = "test_thread_{}".format(uuid4().hex)

def setup_user(self, roles=[]):
roles_str = ','.join(roles)
self.user_id = AutoAuthPage(self.browser, course_id=self.course_id, roles=roles_str).visit().get_user_id()

def setup_view(self, **thread_kwargs):
view = SingleThreadViewFixture(
Thread(id=self.thread_id, **thread_kwargs)
)
view.addResponse(Response(id="response1"))
view.push()

def setup_openclosed_thread_page(self, closed=False):
self.setup_user(roles=['Moderator'])
if closed:
self.setup_view(closed=True)
else:
self.setup_view()
page = DiscussionTabSingleThreadPage(self.browser, self.course_id, self.thread_id)
page.visit()
page.close_open_thread()
return page

def test_originally_open_thread_vote_display(self):
page = self.setup_openclosed_thread_page()
self.assertFalse(page._is_element_visible('.forum-thread-main-wrapper .action-vote'))
self.assertTrue(page._is_element_visible('.forum-thread-main-wrapper .display-vote'))
self.assertFalse(page._is_element_visible('.response_response1 .action-vote'))
self.assertTrue(page._is_element_visible('.response_response1 .display-vote'))

def test_originally_closed_thread_vote_display(self):
page = self.setup_openclosed_thread_page(True)
self.assertTrue(page._is_element_visible('.forum-thread-main-wrapper .action-vote'))
self.assertFalse(page._is_element_visible('.forum-thread-main-wrapper .display-vote'))
self.assertTrue(page._is_element_visible('.response_response1 .action-vote'))
self.assertFalse(page._is_element_visible('.response_response1 .display-vote'))


@attr('shard_1')
class DiscussionCommentDeletionTest(UniqueCourseTest):
"""
Expand Down

0 comments on commit a9fe8e6

Please sign in to comment.