From dfe3fc72b113d1e9bb4a1b424f28ae81081516e6 Mon Sep 17 00:00:00 2001 From: David Asabina Date: Fri, 23 May 2014 17:21:15 +0200 Subject: [PATCH 1/6] Testing the dayname (at least the current) in basicDay and agendaDay views --- tests/automated/dayNames.js | 134 ++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 tests/automated/dayNames.js diff --git a/tests/automated/dayNames.js b/tests/automated/dayNames.js new file mode 100644 index 0000000..24a11e0 --- /dev/null +++ b/tests/automated/dayNames.js @@ -0,0 +1,134 @@ +// TODO: fix dates in moment +describe('day names', function() { + var settings = {}; + var dayClasses = [ + '.fc-sun', + '.fc-mon', + '.fc-tue', + '.fc-wed', + '.fc-thu', + '.fc-fri', + '.fc-sat', + ]; + + beforeEach(function() { + affix('#cal'); + settings = { } + }); + + describe('when view is basicDay', function() { + beforeEach(function() { + moment.lang(); + settings.defaultView = 'basicDay'; + }); + + describe('when lang is default', function() { + beforeEach(function() { + settings.lang = 'en'; + }); + + it('should be in the default language and order', function() { + $('#cal').fullCalendar(settings); + var weekdays = moment.weekdays(); + + $('.fc-day-header').each(function(index, item) { + expect(item).toHaveText(weekdays[moment().weekday()]); + }); + }); + }); + + describe('when lang is not default', function() { + + var languages = [ 'es', 'fr', 'de', 'zh-cn', 'es' ]; + + $.each(languages, function(index, language) { + it('should be in the selected language and corresponding order', function() { + settings.lang = language; + $('#cal').fullCalendar(settings); + + moment.lang(language); + var dow = moment.langData(language)._week.dow + var weekdays = moment.weekdays(); + + $('.fc-day-header').each(function(index, item) { + expect(item).toContainText(weekdays[(moment().weekday() + dow) % 7]); + }); + }); + }); + }); + + describe('when daynames are specified', function() { + it('should contain the specified names in the given order', function() { + var days = [ + 'Hovjaj', 'maSjaj', 'veSjaj', 'mechjaj', 'jevjaj', 'parmaqjaj', 'HoSjaj' + ]; + + moment.lang('en'); // TODO: figure out why 'en' is explicitely needed to get dow set + settings.dayNames = days; + + $('#cal').fullCalendar(settings); + + $('.fc-day-header').each(function(index, item) { + expect(item).toContainText(days[moment().weekday()]); + }); + }); + }); + }); + + describe('when view is agendaDay', function() { + beforeEach(function() { + settings.defaultView = 'agendaDay'; + }); + + describe('when lang is default', function() { + beforeEach(function() { + moment.lang('en'); + }); + + it('should contain the proper dayname', function() { + $('#cal').fullCalendar(settings); + + var currentWeekday = moment.weekdays()[moment().weekday()]; + var itemClasses = '.fc-col0.fc-widget-header'; + expect($(itemClasses)[0]).toContainText(currentWeekday); + }); + }); + + describe('when lang is not default', function() { + it('should contain the dayname in the selected lang', function() { + var language = 'es'; + settings.lang = language; + moment.lang(language); + + $('#cal').fullCalendar(settings); + + var dow = moment.langData(language)._week.dow + console.log('dow is ' + dow); + + var currentWeekday = moment.weekdays()[(moment().weekday() + dow) % 7]; + var dayClasses = '.fc-col0.fc-widget-header'; + + console.log('today is ' + currentWeekday + ' UI:' + $(dayClasses)[0].innerHTML); + expect($(dayClasses)[0]).toContainText(currentWeekday); + }); + }); + + describe('when daynames are specified', function() { + it('should contain the specified names in the given order', function() { + + var days = [ + 'Hovjaj', 'maSjaj', 'veSjaj', 'mechjaj', 'jevjaj', 'parmaqjaj', 'HoSjaj' + ]; + + settings.dayNames = days; + moment.lang('en'); // TODO: figure out how to reload moment.js defauls + + $('#cal').fullCalendar(settings); + + var currentWeekday = days[moment().weekday()]; + var dayClasses = '.fc-col0.fc-widget-header'; + expect($(dayClasses)[0]).toContainText(currentWeekday); + }); + }); + }); +}); From b0ab064d5a8a0f70923008da008bdf4934fa3a0d Mon Sep 17 00:00:00 2001 From: David Asabina Date: Fri, 23 May 2014 18:57:36 +0200 Subject: [PATCH 2/6] Fixed time to known value + testing basicDay dayName for entire week --- tests/automated/dayNames.js | 74 +++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/tests/automated/dayNames.js b/tests/automated/dayNames.js index 24a11e0..fbe40bf 100644 --- a/tests/automated/dayNames.js +++ b/tests/automated/dayNames.js @@ -1,4 +1,3 @@ -// TODO: fix dates in moment describe('day names', function() { var settings = {}; var dayClasses = [ @@ -10,10 +9,12 @@ describe('day names', function() { '.fc-fri', '.fc-sat', ]; + var referenceDate = '2014-05-25 06:00'; // A sunday beforeEach(function() { affix('#cal'); settings = { } + settings.now = moment(referenceDate).toISOString(); }); describe('when view is basicDay', function() { @@ -27,55 +28,66 @@ describe('day names', function() { settings.lang = 'en'; }); - it('should be in the default language and order', function() { - $('#cal').fullCalendar(settings); - var weekdays = moment.weekdays(); + $.each(moment.weekdays(), function(index, weekday) { + it('should be ' + weekday, function() { + settings.now = moment(referenceDate).add('days', index); + $('#cal').fullCalendar(settings); - $('.fc-day-header').each(function(index, item) { - expect(item).toHaveText(weekdays[moment().weekday()]); + var weekdays = moment.weekdays(); + + expect($('.fc-day-header')[0]).toHaveText(weekday); }); }); }); - describe('when lang is not default', function() { - - var languages = [ 'es', 'fr', 'de', 'zh-cn', 'es' ]; - - $.each(languages, function(index, language) { - it('should be in the selected language and corresponding order', function() { - settings.lang = language; - $('#cal').fullCalendar(settings); - + var languages = [ 'es', 'fr', 'de', 'zh-cn', 'nl' ]; + $.each(languages, function(index, language) { + describe('when lang is ' + language, function() { + beforeEach(function() { moment.lang(language); - var dow = moment.langData(language)._week.dow - var weekdays = moment.weekdays(); + }); + + $.each(moment.weekdays(), function(index, weekday) { + it('should be the translation for ' + weekday, function() { + var weekdays = moment.weekdays(); + var dow = moment.langData(language)._week.dow - $('.fc-day-header').each(function(index, item) { - expect(item).toContainText(weekdays[(moment().weekday() + dow) % 7]); + settings.lang = language; + settings.now = moment(referenceDate).add('days', index); + $('#cal').fullCalendar(settings); + + expect($('.fc-day-header')[0]).toHaveText(weekdays[index]) }); }); }); }); describe('when daynames are specified', function() { - it('should contain the specified names in the given order', function() { - var days = [ - 'Hovjaj', 'maSjaj', 'veSjaj', 'mechjaj', 'jevjaj', 'parmaqjaj', 'HoSjaj' - ]; + var weekdays = [ + 'Hovjaj', + 'maSjaj', + 'veSjaj', + 'mechjaj', + 'jevjaj', + 'parmaqjaj', + 'HoSjaj' + ]; - moment.lang('en'); // TODO: figure out why 'en' is explicitely needed to get dow set - settings.dayNames = days; + $.each(weekdays, function(index, weekday) { + it('should be ' + weekday, function() { + settings.dayNames = weekdays; + settings.now = moment(referenceDate).add('days', index); - $('#cal').fullCalendar(settings); - - $('.fc-day-header').each(function(index, item) { - expect(item).toContainText(days[moment().weekday()]); + $('#cal').fullCalendar(settings); + + expect($('.fc-day-header')[0]).toHaveText(weekday) }); }); }); }); - describe('when view is agendaDay', function() { + // TODO: iterate over a entire week instead of just checking today + /*describe('when view is agendaDay', function() { beforeEach(function() { settings.defaultView = 'agendaDay'; }); @@ -130,5 +142,5 @@ describe('day names', function() { expect($(dayClasses)[0]).toContainText(currentWeekday); }); }); - }); + });*/ }); From 99f7e044f62c73c28858eb79b3224a281d7f8b62 Mon Sep 17 00:00:00 2001 From: David Asabina Date: Fri, 23 May 2014 19:20:29 +0200 Subject: [PATCH 3/6] Testing dayNames in agendaDay --- tests/automated/dayNames.js | 82 +++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/tests/automated/dayNames.js b/tests/automated/dayNames.js index fbe40bf..0270600 100644 --- a/tests/automated/dayNames.js +++ b/tests/automated/dayNames.js @@ -13,13 +13,13 @@ describe('day names', function() { beforeEach(function() { affix('#cal'); + moment.lang() settings = { } settings.now = moment(referenceDate).toISOString(); }); describe('when view is basicDay', function() { beforeEach(function() { - moment.lang(); settings.defaultView = 'basicDay'; }); @@ -32,8 +32,6 @@ describe('day names', function() { it('should be ' + weekday, function() { settings.now = moment(referenceDate).add('days', index); $('#cal').fullCalendar(settings); - - var weekdays = moment.weekdays(); expect($('.fc-day-header')[0]).toHaveText(weekday); }); @@ -86,8 +84,7 @@ describe('day names', function() { }); }); - // TODO: iterate over a entire week instead of just checking today - /*describe('when view is agendaDay', function() { + describe('when view is agendaDay', function() { beforeEach(function() { settings.defaultView = 'agendaDay'; }); @@ -95,52 +92,65 @@ describe('day names', function() { describe('when lang is default', function() { beforeEach(function() { moment.lang('en'); + settings.lang = 'en'; }); - it('should contain the proper dayname', function() { - $('#cal').fullCalendar(settings); + $.each(moment.weekdays(), function(index, weekday) { + it('should be ' + weekday, function() { + settings.now = moment(referenceDate).add('days', index); + $('#cal').fullCalendar(settings); - var currentWeekday = moment.weekdays()[moment().weekday()]; - var itemClasses = '.fc-col0.fc-widget-header'; - expect($(itemClasses)[0]).toContainText(currentWeekday); + var itemClasses = '.fc-col0.fc-widget-header'; + expect($(itemClasses)[0]).toContainText(weekday); + }); }); }); - describe('when lang is not default', function() { - it('should contain the dayname in the selected lang', function() { - var language = 'es'; - settings.lang = language; - moment.lang(language); + var languages = [ 'es' ]; + $.each(languages, function(index, language) { + describe('when lang is ' + language, function() { + beforeEach(function() { + moment.lang(language); + }); - $('#cal').fullCalendar(settings); + $.each(moment.weekdays(), function(index, weekday) { + it('should be the translation for ' + weekday, function() { + var weekdays = moment.weekdays(); + var dow = moment.langData(language)._week.dow - var dow = moment.langData(language)._week.dow - console.log('dow is ' + dow); + settings.lang = language; + settings.now = moment(referenceDate).add('days', index); // move to beforeEach + $('#cal').fullCalendar(settings); - var currentWeekday = moment.weekdays()[(moment().weekday() + dow) % 7]; - var dayClasses = '.fc-col0.fc-widget-header'; - - console.log('today is ' + currentWeekday + ' UI:' + $(dayClasses)[0].innerHTML); - expect($(dayClasses)[0]).toContainText(currentWeekday); + var dayClasses = '.fc-col0.fc-widget-header'; + expect($(dayClasses)[0]).toContainText(weekdays[index]); + }); + }); }); }); describe('when daynames are specified', function() { - it('should contain the specified names in the given order', function() { - - var days = [ - 'Hovjaj', 'maSjaj', 'veSjaj', 'mechjaj', 'jevjaj', 'parmaqjaj', 'HoSjaj' - ]; + var weekdays = [ + 'Hovjaj', + 'maSjaj', + 'veSjaj', + 'mechjaj', + 'jevjaj', + 'parmaqjaj', + 'HoSjaj' + ]; - settings.dayNames = days; - moment.lang('en'); // TODO: figure out how to reload moment.js defauls + $.each(weekdays, function(index, weekday) { + it('should be ' + weekday, function() { + settings.dayNames = weekdays; + settings.now = moment(referenceDate).add('days', index); - $('#cal').fullCalendar(settings); - - var currentWeekday = days[moment().weekday()]; - var dayClasses = '.fc-col0.fc-widget-header'; - expect($(dayClasses)[0]).toContainText(currentWeekday); + $('#cal').fullCalendar(settings); + + var dayClasses = '.fc-col0.fc-widget-header'; + expect($(dayClasses)[0]).toContainText(weekday); + }); }); }); - });*/ + }); }); From 2a923a42a47d3af9864d263a958aa04345e7b7dd Mon Sep 17 00:00:00 2001 From: David Asabina Date: Fri, 23 May 2014 22:25:25 +0200 Subject: [PATCH 4/6] Cleaning up dayNames test to pass ```grunt check``` --- tests/automated/dayNames.js | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/tests/automated/dayNames.js b/tests/automated/dayNames.js index 0270600..65251a2 100644 --- a/tests/automated/dayNames.js +++ b/tests/automated/dayNames.js @@ -10,12 +10,14 @@ describe('day names', function() { '.fc-sat', ]; var referenceDate = '2014-05-25 06:00'; // A sunday + var languages = [ 'es', 'fr', 'de', 'zh-cn', 'nl' ]; beforeEach(function() { affix('#cal'); - moment.lang() - settings = { } - settings.now = moment(referenceDate).toISOString(); + moment.lang(); + settings = { + now: moment(referenceDate).toISOString() + }; }); describe('when view is basicDay', function() { @@ -32,13 +34,12 @@ describe('day names', function() { it('should be ' + weekday, function() { settings.now = moment(referenceDate).add('days', index); $('#cal').fullCalendar(settings); - + expect($('.fc-day-header')[0]).toHaveText(weekday); }); }); }); - - var languages = [ 'es', 'fr', 'de', 'zh-cn', 'nl' ]; + $.each(languages, function(index, language) { describe('when lang is ' + language, function() { beforeEach(function() { @@ -48,13 +49,12 @@ describe('day names', function() { $.each(moment.weekdays(), function(index, weekday) { it('should be the translation for ' + weekday, function() { var weekdays = moment.weekdays(); - var dow = moment.langData(language)._week.dow - + settings.lang = language; settings.now = moment(referenceDate).add('days', index); $('#cal').fullCalendar(settings); - - expect($('.fc-day-header')[0]).toHaveText(weekdays[index]) + + expect($('.fc-day-header')[0]).toHaveText(weekdays[index]); }); }); }); @@ -77,8 +77,8 @@ describe('day names', function() { settings.now = moment(referenceDate).add('days', index); $('#cal').fullCalendar(settings); - - expect($('.fc-day-header')[0]).toHaveText(weekday) + + expect($('.fc-day-header')[0]).toHaveText(weekday); }); }); }); @@ -92,11 +92,11 @@ describe('day names', function() { describe('when lang is default', function() { beforeEach(function() { moment.lang('en'); - settings.lang = 'en'; }); $.each(moment.weekdays(), function(index, weekday) { it('should be ' + weekday, function() { + settings.lang = 'en'; settings.now = moment(referenceDate).add('days', index); $('#cal').fullCalendar(settings); @@ -106,7 +106,6 @@ describe('day names', function() { }); }); - var languages = [ 'es' ]; $.each(languages, function(index, language) { describe('when lang is ' + language, function() { beforeEach(function() { @@ -116,7 +115,6 @@ describe('day names', function() { $.each(moment.weekdays(), function(index, weekday) { it('should be the translation for ' + weekday, function() { var weekdays = moment.weekdays(); - var dow = moment.langData(language)._week.dow settings.lang = language; settings.now = moment(referenceDate).add('days', index); // move to beforeEach @@ -146,7 +144,7 @@ describe('day names', function() { settings.now = moment(referenceDate).add('days', index); $('#cal').fullCalendar(settings); - + var dayClasses = '.fc-col0.fc-widget-header'; expect($(dayClasses)[0]).toContainText(weekday); }); From 920fd33d872eee96de3055f332208a435ff381ad Mon Sep 17 00:00:00 2001 From: David Asabina Date: Sat, 24 May 2014 03:00:30 +0200 Subject: [PATCH 5/6] Refactored spec for repeatability (using same spec for agendaDay and basicDay) --- tests/automated/dayNames.js | 165 +++++++++++------------------------- 1 file changed, 51 insertions(+), 114 deletions(-) diff --git a/tests/automated/dayNames.js b/tests/automated/dayNames.js index 65251a2..6a7df22 100644 --- a/tests/automated/dayNames.js +++ b/tests/automated/dayNames.js @@ -1,5 +1,9 @@ describe('day names', function() { var settings = {}; + var testableClasses = [ + 'basicDay', + 'agendaDay' + ]; var dayClasses = [ '.fc-sun', '.fc-mon', @@ -20,135 +24,68 @@ describe('day names', function() { }; }); - describe('when view is basicDay', function() { - beforeEach(function() { - settings.defaultView = 'basicDay'; - }); - - describe('when lang is default', function() { + testableClasses.forEach(function(viewClass, index, viewClasses) { + describe('when view is basicDay', function() { beforeEach(function() { - settings.lang = 'en'; + settings.defaultView = 'basicDay'; }); - - $.each(moment.weekdays(), function(index, weekday) { - it('should be ' + weekday, function() { - settings.now = moment(referenceDate).add('days', index); - $('#cal').fullCalendar(settings); - - expect($('.fc-day-header')[0]).toHaveText(weekday); - }); - }); - }); - - $.each(languages, function(index, language) { - describe('when lang is ' + language, function() { + + describe('when lang is default', function() { beforeEach(function() { - moment.lang(language); + settings.lang = 'en'; }); - - $.each(moment.weekdays(), function(index, weekday) { - it('should be the translation for ' + weekday, function() { - var weekdays = moment.weekdays(); - - settings.lang = language; + + dayClasses.forEach(function(cls, index, classes) { + var weekdays = moment.weekdays(); + it('should be ' + weekdays[index], function() { settings.now = moment(referenceDate).add('days', index); $('#cal').fullCalendar(settings); - - expect($('.fc-day-header')[0]).toHaveText(weekdays[index]); + + expect($('.fc-view thead ' + dayClasses[index])).toHaveText(weekdays[index]); }); }); }); - }); - - describe('when daynames are specified', function() { - var weekdays = [ - 'Hovjaj', - 'maSjaj', - 'veSjaj', - 'mechjaj', - 'jevjaj', - 'parmaqjaj', - 'HoSjaj' - ]; - - $.each(weekdays, function(index, weekday) { - it('should be ' + weekday, function() { - settings.dayNames = weekdays; - settings.now = moment(referenceDate).add('days', index); - - $('#cal').fullCalendar(settings); - - expect($('.fc-day-header')[0]).toHaveText(weekday); + + $.each(languages, function(index, language) { + describe('when lang is ' + language, function() { + beforeEach(function() { + moment.lang(language); + }); + + dayClasses.forEach(function(cls, index, classes) { + it('should be the translation for ' + moment.weekdays()[index], function() { + settings.lang = language; + settings.now = moment(referenceDate).add('days', index); + $('#cal').fullCalendar(settings); + + expect($('.fc-view thead ' + dayClasses[index])).toHaveText(moment.weekdays()[index]); + }); + }); }); }); - }); - }); - - describe('when view is agendaDay', function() { - beforeEach(function() { - settings.defaultView = 'agendaDay'; - }); - - describe('when lang is default', function() { - beforeEach(function() { - moment.lang('en'); - }); - - $.each(moment.weekdays(), function(index, weekday) { - it('should be ' + weekday, function() { - settings.lang = 'en'; - settings.now = moment(referenceDate).add('days', index); - $('#cal').fullCalendar(settings); - - var itemClasses = '.fc-col0.fc-widget-header'; - expect($(itemClasses)[0]).toContainText(weekday); - }); - }); - }); - - $.each(languages, function(index, language) { - describe('when lang is ' + language, function() { - beforeEach(function() { - moment.lang(language); - }); - - $.each(moment.weekdays(), function(index, weekday) { - it('should be the translation for ' + weekday, function() { - var weekdays = moment.weekdays(); - - settings.lang = language; - settings.now = moment(referenceDate).add('days', index); // move to beforeEach + + describe('when daynames are specified', function() { + var weekdays = [ + 'Hovjaj', + 'maSjaj', + 'veSjaj', + 'mechjaj', + 'jevjaj', + 'parmaqjaj', + 'HoSjaj' + ]; + + dayClasses.forEach(function(cls, idx, classes) { + it('should be ' + weekdays[idx], function() { + settings.dayNames = moment.weekdays(); + settings.now = moment(referenceDate).add('days', idx); + $('#cal').fullCalendar(settings); - - var dayClasses = '.fc-col0.fc-widget-header'; - expect($(dayClasses)[0]).toContainText(weekdays[index]); + + expect($('.fc-view thead ' + cls)).toHaveText(moment.weekdays()[idx]); }); }); }); }); - - describe('when daynames are specified', function() { - var weekdays = [ - 'Hovjaj', - 'maSjaj', - 'veSjaj', - 'mechjaj', - 'jevjaj', - 'parmaqjaj', - 'HoSjaj' - ]; - - $.each(weekdays, function(index, weekday) { - it('should be ' + weekday, function() { - settings.dayNames = weekdays; - settings.now = moment(referenceDate).add('days', index); - - $('#cal').fullCalendar(settings); - - var dayClasses = '.fc-col0.fc-widget-header'; - expect($(dayClasses)[0]).toContainText(weekday); - }); - }); - }); }); }); From 2c0e9aa887eb4c97cf16fd89325cfd98bfe09686 Mon Sep 17 00:00:00 2001 From: David Asabina Date: Sat, 24 May 2014 03:20:49 +0200 Subject: [PATCH 6/6] Fixing style issues --- tests/automated/dayNames.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/automated/dayNames.js b/tests/automated/dayNames.js index 6a7df22..20078e3 100644 --- a/tests/automated/dayNames.js +++ b/tests/automated/dayNames.js @@ -29,41 +29,41 @@ describe('day names', function() { beforeEach(function() { settings.defaultView = 'basicDay'; }); - + describe('when lang is default', function() { beforeEach(function() { settings.lang = 'en'; }); - + dayClasses.forEach(function(cls, index, classes) { var weekdays = moment.weekdays(); it('should be ' + weekdays[index], function() { settings.now = moment(referenceDate).add('days', index); $('#cal').fullCalendar(settings); - + expect($('.fc-view thead ' + dayClasses[index])).toHaveText(weekdays[index]); }); }); }); - + $.each(languages, function(index, language) { describe('when lang is ' + language, function() { beforeEach(function() { moment.lang(language); }); - + dayClasses.forEach(function(cls, index, classes) { it('should be the translation for ' + moment.weekdays()[index], function() { settings.lang = language; settings.now = moment(referenceDate).add('days', index); $('#cal').fullCalendar(settings); - + expect($('.fc-view thead ' + dayClasses[index])).toHaveText(moment.weekdays()[index]); }); }); }); }); - + describe('when daynames are specified', function() { var weekdays = [ 'Hovjaj', @@ -74,14 +74,14 @@ describe('day names', function() { 'parmaqjaj', 'HoSjaj' ]; - + dayClasses.forEach(function(cls, idx, classes) { it('should be ' + weekdays[idx], function() { settings.dayNames = moment.weekdays(); settings.now = moment(referenceDate).add('days', idx); - + $('#cal').fullCalendar(settings); - + expect($('.fc-view thead ' + cls)).toHaveText(moment.weekdays()[idx]); }); });