This repository has been archived by the owner on Nov 3, 2021. It is now read-only.
/
multi_day_test.js
112 lines (97 loc) · 3.05 KB
/
multi_day_test.js
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
define(function(require) {
'use strict';
var MultiDay = require('views/multi_day');
suite('Views.MultiDay', function() {
var app;
var subject;
suiteSetup(function() {
app = testSupport.calendar.app();
});
setup(function() {
subject = new MultiDay({app: app});
subject.element = document.createElement('div');
subject.element.innerHTML = '<div class="md__sidebar"></div>';
subject._currentTime = {
refresh: this.sinon.spy()
};
});
suite('#onactive', function() {
var stubOnFirstSeen;
var stubRender;
var stubResetScroll;
var stubScrollToHour;
setup(function() {
stubOnFirstSeen = sinon.stub(subject, 'onfirstseen');
stubRender = sinon.stub(subject, '_render');
stubResetScroll = sinon.stub(subject, '_resetScroll');
stubScrollToHour = sinon.stub(subject, '_scrollToHour');
});
teardown(function() {
stubOnFirstSeen.restore();
stubRender.restore();
stubResetScroll.restore();
stubScrollToHour.restore();
});
test('First time active', function() {
subject.onactive();
sinon.assert.calledOnce(stubOnFirstSeen);
sinon.assert.calledOnce(stubRender);
sinon.assert.calledOnce(stubResetScroll);
sinon.assert.calledOnce(stubScrollToHour);
});
test('Do not scroll when come back from other screen', function() {
subject.baseDate = subject.timeController.position;
subject.seen = true;
subject.onactive();
assert.isFalse(stubOnFirstSeen.called);
assert.isFalse(stubResetScroll.called);
assert.isFalse(stubScrollToHour.called);
});
});
test('localized', function() {
var sidebar = subject.sidebar;
subject._visibleRange = 123;
subject.handleEvent({type: 'localized'});
// make sure we rebuild all hours during localize
var i = -1, date = new Date(0), hour;
while (++i < 24) {
date.setHours(i, 0, 0, 0);
hour = sidebar.querySelector('.md__hour-' + i);
assert.equal(hour.textContent, i, 'display hour');
assert.equal(
hour.querySelector('.md__display-hour').dataset.date,
date,
'date data'
);
}
// make sure we update the current time
assert.ok(
subject._currentTime.refresh.calledOnce,
'called refresh'
);
assert.equal(
subject._currentTime.timespan,
subject._visibleRange,
'current time timespan matches the _visibleRange'
);
});
test('#_updateBaseDateAfterScroll', function() {
// we need to make sure it's updating the timeController position and
// selectedDay after the drag so moving to day/month views have the
// expected output (highlight first day of the week view)
subject.baseDate = new Date(2014, 6, 23);
subject._updateBaseDateAfterScroll(-3);
var expected = (new Date(2014, 6, 20)).toISOString();
assert.equal(
subject.timeController.position.toISOString(),
expected,
'position'
);
assert.equal(
subject.timeController.selectedDay.toISOString(),
expected,
'selectedDay'
);
});
});
});