forked from instructure/canvas-lms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWikiPageCollectionSpec.coffee
More file actions
87 lines (68 loc) · 3.54 KB
/
Copy pathWikiPageCollectionSpec.coffee
File metadata and controls
87 lines (68 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
define [
'compiled/models/WikiPage'
'compiled/collections/WikiPageCollection'
], (WikiPage, WikiPageCollection) ->
QUnit.module 'WikiPageCollection'
checkFrontPage = (collection) ->
total = collection.reduce ((i, model) -> i += if model.get('front_page') then 1 else 0), 0
total <= 1
test 'only a single front_page per collection', ->
collection = new WikiPageCollection
for i in [0..2]
collection.add new WikiPage
ok checkFrontPage(collection), 'initial state'
collection.models[0].set('front_page', true)
ok checkFrontPage(collection), 'set front_page once'
collection.models[1].set('front_page', true)
ok checkFrontPage(collection), 'set front_page twice'
collection.models[2].set('front_page', true)
ok checkFrontPage(collection), 'set front_page thrice'
QUnit.module 'WikiPageCollection:sorting',
setup: ->
@collection = new WikiPageCollection
test 'default sort is title', ->
equal @collection.currentSortField, 'title', 'default sort set correctly'
test 'default sort orders', ->
equal @collection.sortOrders['title'], 'asc', 'default title sort order'
equal @collection.sortOrders['created_at'], 'desc', 'default created_at sort order'
equal @collection.sortOrders['updated_at'], 'desc', 'default updated_at sort order'
test 'sort order toggles (sort on same field)', ->
@collection.currentSortField = 'created_at'
@collection.sortOrders['created_at'] = 'desc'
@collection.setSortField('created_at')
equal @collection.sortOrders['created_at'], 'asc', 'sort order toggled'
test 'sort order does not toggle (sort on different field)', ->
@collection.currentSortField = 'title'
@collection.sortOrders['created_at'] = 'desc'
@collection.setSortField('created_at')
equal @collection.sortOrders['created_at'], 'desc', 'sort order remains'
test 'sort order can be forced', ->
@collection.currentSortField = 'title'
@collection.setSortField('created_at', 'asc')
equal @collection.currentSortField, 'created_at', 'sort field set'
equal @collection.sortOrders['created_at'], 'asc', 'sort order forced'
@collection.setSortField('created_at', 'asc')
equal @collection.currentSortField, 'created_at', 'sort field remains'
equal @collection.sortOrders['created_at'], 'asc', 'sort order remains'
test 'setting sort triggers a sortChanged event', ->
sortChangedSpy = @spy()
@collection.on 'sortChanged', sortChangedSpy
@collection.setSortField 'created_at'
ok sortChangedSpy.calledOnce, 'sortChanged event triggered once'
ok sortChangedSpy.calledWith(@collection.currentSortField, @collection.sortOrders), 'sortChanged triggered with parameters'
test 'setting sort sets fetch parameters', ->
@collection.setSortField('created_at', 'desc')
ok @collection.options, 'options exists'
ok @collection.options.params, 'params exists'
equal @collection.options.params.sort, 'created_at', 'sort param set'
equal @collection.options.params.order, 'desc', 'order param set'
test 'sortByField delegates to setSortField', ->
setSortFieldStub = @stub(@collection, 'setSortField')
fetchStub = @stub(@collection, 'fetch')
@collection.sortByField('created_at', 'desc')
ok setSortFieldStub.calledOnce, 'setSortField called once'
ok setSortFieldStub.calledWith('created_at', 'desc'), 'setSortField called with correct arguments'
test 'sortByField triggers a fetch', ->
fetchStub = @stub(@collection, 'fetch')
@collection.sortByField('created_at', 'desc')
ok fetchStub.calledOnce, 'fetch called once'