116 lines
4.6 KiB
CoffeeScript
116 lines
4.6 KiB
CoffeeScript
describe 'All Content', ->
|
|
beforeEach ->
|
|
DiscussionSpecHelper.setUpGlobals()
|
|
|
|
describe 'Staff and TA Content', ->
|
|
beforeEach ->
|
|
DiscussionUtil.loadRoles({"Moderator": [567], "Administrator": [567], "Community TA": [567]})
|
|
|
|
it 'anonymous thread should not include login role label', ->
|
|
anon_content = new Content
|
|
anon_content.initialize
|
|
expect(anon_content.get 'staff_authored').toBe false
|
|
expect(anon_content.get 'community_ta_authored').toBe false
|
|
|
|
it 'general thread should include login role label', ->
|
|
anon_content = new Content { user_id: '567' }
|
|
anon_content.initialize
|
|
expect(anon_content.get 'staff_authored').toBe true
|
|
expect(anon_content.get 'community_ta_authored').toBe true
|
|
|
|
describe 'Content', ->
|
|
beforeEach ->
|
|
@content = new Content {
|
|
id: '01234567',
|
|
user_id: '567',
|
|
course_id: 'edX/999/test',
|
|
body: 'this is some content',
|
|
abuse_flaggers: ['123']
|
|
}
|
|
|
|
it 'should exist', ->
|
|
expect(Content).toBeDefined()
|
|
|
|
it 'is initialized correctly', ->
|
|
@content.initialize
|
|
expect(Content.contents['01234567']).toEqual @content
|
|
expect(@content.get 'id').toEqual '01234567'
|
|
expect(@content.get 'user_url').toEqual '/courses/edX/999/test/discussion/forum/users/567'
|
|
expect(@content.get 'children').toEqual []
|
|
expect(@content.get 'comments').toEqual(jasmine.any(Comments))
|
|
|
|
it 'can update info', ->
|
|
@content.updateInfo {
|
|
ability: {'can_edit': true},
|
|
voted: true,
|
|
subscribed: true
|
|
}
|
|
expect(@content.get 'ability').toEqual {'can_edit': true}
|
|
expect(@content.get 'voted').toEqual true
|
|
expect(@content.get 'subscribed').toEqual true
|
|
|
|
it 'can be flagged for abuse', ->
|
|
@content.flagAbuse()
|
|
expect(@content.get 'abuse_flaggers').toEqual ['123', '567']
|
|
|
|
it 'can be unflagged for abuse', ->
|
|
temp_array = []
|
|
temp_array.push(window.user.get('id'))
|
|
@content.set("abuse_flaggers",temp_array)
|
|
@content.unflagAbuse()
|
|
expect(@content.get 'abuse_flaggers').toEqual []
|
|
|
|
describe 'Comments', ->
|
|
beforeEach ->
|
|
@comment1 = new Comment {id: '123'}
|
|
@comment2 = new Comment {id: '345'}
|
|
|
|
it 'can contain multiple comments', ->
|
|
myComments = new Comments
|
|
expect(myComments.length).toEqual 0
|
|
myComments.add @comment1
|
|
expect(myComments.length).toEqual 1
|
|
myComments.add @comment2
|
|
expect(myComments.length).toEqual 2
|
|
|
|
it 'returns results to the find method', ->
|
|
myComments = new Comments
|
|
myComments.add @comment1
|
|
expect(myComments.find('123')).toBe @comment1
|
|
|
|
it 'can be endorsed', ->
|
|
|
|
DiscussionUtil.loadRoles(
|
|
{"Moderator": [111], "Administrator": [222], "Community TA": [333]}
|
|
)
|
|
@discussionThread = new Thread({id: 1, thread_type: "discussion", user_id: 99})
|
|
@discussionResponse = new Comment({id: 1, thread: @discussionThread})
|
|
@questionThread = new Thread({id: 1, thread_type: "question", user_id: 99})
|
|
@questionResponse = new Comment({id: 1, thread: @questionThread})
|
|
|
|
# mod
|
|
window.user = new DiscussionUser({id: 111})
|
|
expect(@discussionResponse.canBeEndorsed()).toBe(true)
|
|
expect(@questionResponse.canBeEndorsed()).toBe(true)
|
|
|
|
# admin
|
|
window.user = new DiscussionUser({id: 222})
|
|
expect(@discussionResponse.canBeEndorsed()).toBe(true)
|
|
expect(@questionResponse.canBeEndorsed()).toBe(true)
|
|
|
|
# TA
|
|
window.user = new DiscussionUser({id: 333})
|
|
expect(@discussionResponse.canBeEndorsed()).toBe(true)
|
|
expect(@questionResponse.canBeEndorsed()).toBe(true)
|
|
|
|
# thread author
|
|
window.user = new DiscussionUser({id: 99})
|
|
expect(@discussionResponse.canBeEndorsed()).toBe(false)
|
|
expect(@questionResponse.canBeEndorsed()).toBe(true)
|
|
|
|
# anyone else
|
|
window.user = new DiscussionUser({id: 999})
|
|
expect(@discussionResponse.canBeEndorsed()).toBe(false)
|
|
expect(@questionResponse.canBeEndorsed()).toBe(false)
|
|
|