Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/apps/system/test/unit/date_picker_test.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/system/test/unit/date_picker_test.js')
-rw-r--r--apps/system/test/unit/date_picker_test.js483
1 files changed, 0 insertions, 483 deletions
diff --git a/apps/system/test/unit/date_picker_test.js b/apps/system/test/unit/date_picker_test.js
deleted file mode 100644
index 51d8867..0000000
--- a/apps/system/test/unit/date_picker_test.js
+++ /dev/null
@@ -1,483 +0,0 @@
-requireApp('system/js/value_selector/date_picker.js');
-
-suite('date picker', function() {
- var subject;
- var Calc;
- var triggerEvent;
-
- teardown(function() {
- var el = document.getElementById('test');
- el.parentNode.removeChild(el);
- });
-
- setup(function() {
- var div = document.createElement('div');
- div.id = 'test';
- document.body.appendChild(div);
- subject = new DatePicker(div);
- Calc = DatePicker.Calc;
- subject._position = new Date(2012, 1, 1);
- });
-
- suite('Calc', function() {
- var mocked = {};
-
- function mock(fn, value) {
- if (!(fn in mocked)) {
- mocked[fn] = subject[fn];
- }
- subject[fn] = function() {
- return value;
- };
- }
-
- teardown(function() {
- var key;
- for (key in mocked) {
- if (mocked.hasOwnProperty(key)) {
- subject[key] = mocked[key];
- }
- }
- });
-
- setup(function() {
- subject = DatePicker.Calc;
- });
-
- suite('#isSameDate', function() {
-
- test('same day', function() {
- assert.isTrue(subject.isSameDate(
- new Date(2012, 1, 1, 8),
- new Date(2012, 1, 1, 23)
- ));
- });
-
- test('same day different month', function() {
- assert.isFalse(subject.isSameDate(
- new Date(2012, 2, 1, 8),
- new Date(2012, 1, 1, 8)
- ));
- });
- });
-
- suite('#isToday', function() {
- test('when given is today', function() {
- var result = subject.isToday(new Date());
-
- assert.isTrue(result, 'should be true when given today');
- });
-
- test('when given is not today', function() {
- var now = new Date();
- now.setDate(now.getDate() - 1);
- var result = subject.isToday(now);
-
- assert.isFalse(result, 'should be false when given is not today');
- });
- });
-
- suite('#isPast', function() {
- test('when date is passed', function() {
- var date = new Date();
- date.setTime(Date.now() - 1000);
- var result = subject.isPast(date);
-
- assert.isTrue(result, 'should be true when given is in the past');
- });
-
- test('when given is in the future', function() {
- var date = new Date();
- date.setTime(Date.now() + 100);
- var result = subject.isPast(date);
-
- assert.isFalse(result,
- 'should return false when date is in the future');
- });
-
- });
-
- suite('#isFuture', function() {
- test('when date is passed', function() {
- var date = new Date();
- date.setTime(Date.now() - 100);
- var result = subject.isFuture(date);
-
- assert.isFalse(result);
- });
-
- test('when given is in the future', function() {
- var date = new Date(Date.now() + 100);
- var result = subject.isFuture(date);
-
- assert.isTrue(result);
- });
-
- });
-
- suite('#dateFromId', function() {
- var id;
- var result;
- var date = new Date(2012, 7, 3);
-
- setup(function() {
- id = subject.getDayId(date);
- });
-
- test('id to date', function() {
- assert.deepEqual(
- subject.dateFromId(id),
- date
- );
- });
-
- });
-
- test('#getDayId', function() {
- var result = subject.getDayId(
- new Date(2012, 3, 7)
- );
-
- assert.equal(result, '2012-3-7');
- });
-
- suite('#relativeState', function() {
-
- setup(function() {
- mock('isToday', false);
- });
-
- test('when in the past', function() {
- mock('isPast', true);
- var state = subject.relativeState(
- new Date(1991, 1, 1),
- new Date(1991, 1, 1)
- );
-
- assert.equal(state, subject.PAST);
- });
-
- test('when in the future', function() {
- mock('isPast', false);
- var state = subject.relativeState(
- new Date(1991, subject.today.getMonth(), 1),
- new Date(1991, subject.today.getMonth(), 1)
- );
- assert.equal(state, subject.FUTURE);
- });
-
- test('when is in a different month in the past', function() {
- mock('isPast', true);
-
- var state = subject.relativeState(
- new Date(1991, subject.today.getMonth() - 1, 1),
- new Date(1991, subject.today.getMonth(), 1)
- );
-
- assert.include(state, subject.PAST);
- assert.include(state, subject.OTHER_MONTH);
- });
-
- test('when is in a different month in the future', function() {
- mock('isPast', false);
-
- var state = subject.relativeState(
- new Date(1991, subject.today.getMonth() + 1, 1),
- new Date(1991, subject.today.getMonth(), 1)
- );
-
- assert.include(state, subject.FUTURE);
- assert.include(state, subject.OTHER_MONTH);
- });
-
-
- test('when is today', function() {
- mock('isToday', true);
- var state = subject.relativeState(new Date(1991, 1, 1));
-
- assert.equal(state, subject.PRESENT);
- });
-
- });
-
- });
-
- suite('#_daysIn', function() {
- test('leap year', function() {
- var result = subject._daysInMonth(2012, 1);
- assert.equal(result, 29);
- });
-
- test('normal', function() {
- var result = subject._daysInMonth(2012, 0);
- assert.equal(result, 31);
- });
- });
-
- suite('#_renderDay', function() {
-
- test('simple', function() {
- var date = new Date(2012, 1, 27);
- var result = subject._renderDay(date).firstChild;
- var html = result.outerHTML;
-
- assert.ok(html);
- assert.equal(result.dataset.date, Calc.getDayId(date));
- assert.include(html, '27');
- });
-
- test('today', function() {
- var date = new Date();
- var result = subject._renderDay(date);
- assert.ok(result.classList.contains('present'));
- });
-
- test('past', function() {
- var date = new Date(2009, 1, 1);
- var result = subject._renderDay(date);
- assert.ok(result.classList.contains('past'));
- });
-
- test('future', function() {
- var date = new Date();
- date.setDate(date.getDate() + 2);
-
- var result = subject._renderDay(date);
- assert.ok(result.classList.contains('future'));
- });
- });
-
- suite('#_renderWeek', function() {
- var days = [
- new Date(2012, 0, 29),
- new Date(2012, 0, 30),
- new Date(2012, 0, 31),
- new Date(2012, 1, 1),
- new Date(2012, 1, 2),
- new Date(2012, 1, 3),
- new Date(2012, 1, 4)
- ];
-
- var result;
-
- setup(function() {
- result = subject._renderWeek(days);
- });
-
- test('container', function() {
- assert.equal(result.tagName.toLowerCase(), 'ol');
- assert.ok(result.outerHTML);
- });
-
- days.forEach(function(day) {
- test('week day ' + day, function() {
- var expected = subject._renderDay(day);
- assert.include(result.outerHTML, expected.outerHTML);
- });
- });
-
- });
-
- suite('#_renderMonth', function() {
-
- function weekHtml(start, end) {
- var range = Calc.daysBetween(start, end);
- return subject._renderWeek(range).outerHTML;
- }
-
- test('Feb 2012', function() {
- var month = 1;
- var year = 2012;
-
- var result = subject._renderMonth(year, month);
- var html = result.outerHTML;
-
- assert.ok(html, 'has contents');
-
- assert.include(
- html,
- weekHtml(new Date(2012, 0, 29), new Date(2012, 1, 4)),
- 'has first week'
- );
-
- assert.include(
- html,
- weekHtml(new Date(2012, 1, 5), new Date(2012, 1, 11)),
- 'has second week'
- );
-
- assert.include(
- html,
- weekHtml(new Date(2012, 1, 12), new Date(2012, 1, 18)),
- 'has third week'
- );
-
- assert.include(
- html,
- weekHtml(new Date(2012, 1, 19), new Date(2012, 1, 25)),
- 'has fourth week'
- );
-
-
- assert.include(
- html,
- weekHtml(new Date(2012, 1, 26), new Date(2012, 2, 3)),
- 'has fifth week'
- );
- });
- });
-
- suite('prev/next', function() {
- var calledWith;
-
- setup(function() {
- subject.display(2012, 0, 1);
- });
-
- test('#next', function() {
- subject.next();
- assert.equal(subject.year, 2012);
- assert.equal(subject.month, 1);
- });
-
- test('#previous', function() {
- subject.previous();
- assert.equal(subject.year, 2011);
- assert.equal(subject.month, 11);
- });
-
- });
-
- suite('prev/next with last day of a month', function() {
- var calledWith;
-
- setup(function() {
- // init as 2012/3/31
- subject.display(2012, 2, 31);
- });
-
- test('#next', function() {
- subject.next();
-
- // should be 2012/4/30
- assert.equal(subject.year, 2012);
- assert.equal(subject.month, 3);
- assert.equal(subject.date, 30);
- });
-
- test('#previous', function() {
- subject.previous();
-
- // should be 2012/2/29
- assert.equal(subject.year, 2012);
- assert.equal(subject.month, 1);
- assert.equal(subject.date, 29);
- });
-
- });
-
- suite('#display', function() {
- var year = 2012;
- var month = 11;
- var date = 1;
- var calledWith;
-
- setup(function() {
- calledWith = null;
- subject.onmonthchange = function() {
- calledWith = arguments;
- };
-
- subject.display(year, month, date);
- });
-
- test('initial render', function() {
- assert.deepEqual(
- calledWith[0],
- new Date(year, month),
- 'should fire onmonthchange'
- );
-
- assert.equal(subject.year, 2012);
- assert.equal(subject.month, 11);
- assert.equal(subject.date, 1);
- assert.ok(subject.monthDisplay);
- });
-
- test('second rendering', function() {
- subject.display(2011, 2, 1);
-
- assert.deepEqual(
- calledWith[0],
- new Date(2011, 2),
- 'should fire onmonthchange again'
- );
-
- assert.equal(subject.year, 2011);
- assert.equal(subject.month, 2);
- assert.equal(subject.date, 1);
- assert.ok(subject.monthDisplay);
- });
- });
-
- suite('setters', function() {
- test('#value', function() {
- var calledWith;
- var date;
-
- subject.onvaluechange = function() {
- calledWith = arguments;
- }
-
- subject.value = date = new Date(2012, 1, 1);
-
- assert.deepEqual(subject.value, date);
- assert.deepEqual(calledWith, [date, null]);
- });
- });
-
- suite('dom events', function() {
- function triggerEvent(element, eventName) {
- var event = document.createEvent('HTMLEvents');
- event.initEvent(eventName, true, true);
- element.dispatchEvent(event);
- }
-
- setup(function() {
- subject.display(2012, 1, 1);
- });
-
- test('select', function() {
- var calledWith;
- subject.onvaluechange = function() {
- calledWith = arguments;
- }
-
- var target = subject.element.querySelector('[data-date="2012-1-1"]');
- triggerEvent(target, 'click');
-
- assert.ok(target.classList.contains('selected'), 'adds selected class');
-
- assert.deepEqual(
- subject.value,
- new Date(2012, 1, 1),
- 'changes value'
- );
-
- assert.deepEqual(
- calledWith,
- [new Date(2012, 1, 1), new Date(2012, 1, 1)],
- 'calls onvaluechange'
- );
-
- triggerEvent(
- subject.element.querySelector('[data-date="2012-1-2"]'),
- 'click'
- );
-
- assert.ok(!target.classList.contains('selected'), 'clears past selected');
- });
- });
-
-});
-