@@ -213,4 +213,186 @@ describe('Unit tests for featured challenge controller', function () {
213213 expect ( vm . stopLoader ) . toHaveBeenCalled ( ) ;
214214 } ) ;
215215 } ) ;
216+
217+ describe ( 'Unit tests for leaderboard submission__submitted_at formatting' , function ( ) {
218+ var $controller , $rootScope , $scope , utilities , vm , moment ;
219+
220+ beforeEach ( inject ( function ( _$controller_ , _$rootScope_ , _utilities_ , _moment_ ) {
221+ $controller = _$controller_ ;
222+ $rootScope = _$rootScope_ ;
223+ utilities = _utilities_ ;
224+ moment = _moment_ ;
225+ $scope = $rootScope . $new ( ) ;
226+ vm = $controller ( 'FeaturedChallengeCtrl' , { $scope : $scope } ) ;
227+ spyOn ( vm , 'startLoader' ) ;
228+ spyOn ( vm , 'stopLoader' ) ;
229+ spyOn ( angular , 'element' ) ;
230+ } ) ) ;
231+
232+ function leaderboardWithSubmissionAt ( date ) {
233+ return {
234+ results : {
235+ results : [
236+ { id : 1 , submission__submitted_at : date }
237+ ]
238+ }
239+ } ;
240+ }
241+
242+ it ( 'should set timeSpan to "months" for 1 year ago' , function ( ) {
243+ var oneYearAgo = moment ( ) . subtract ( 1 , 'years' ) . toDate ( ) ;
244+ var response = leaderboardWithSubmissionAt ( oneYearAgo ) ;
245+
246+ utilities . sendRequest = function ( parameters ) {
247+ parameters . callback . onSuccess ( { data : response . results } ) ;
248+ } ;
249+
250+ vm . getLeaderboard ( 1 ) ;
251+
252+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'months' ) ;
253+ } ) ;
254+
255+ it ( 'should set timeSpan to "years" for 2 years ago' , function ( ) {
256+ var twoYearsAgo = moment ( ) . subtract ( 2 , 'years' ) . toDate ( ) ;
257+ var response = leaderboardWithSubmissionAt ( twoYearsAgo ) ;
258+
259+ utilities . sendRequest = function ( parameters ) {
260+ parameters . callback . onSuccess ( { data : response . results } ) ;
261+ } ;
262+
263+ vm . getLeaderboard ( 1 ) ;
264+
265+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'years' ) ;
266+ } ) ;
267+
268+ it ( 'should set timeSpan to "days" for 1 month ago' , function ( ) {
269+ var oneMonthAgo = moment ( ) . subtract ( 1 , 'months' ) . toDate ( ) ;
270+ var response = leaderboardWithSubmissionAt ( oneMonthAgo ) ;
271+
272+ utilities . sendRequest = function ( parameters ) {
273+ parameters . callback . onSuccess ( { data : response . results } ) ;
274+ } ;
275+
276+ vm . getLeaderboard ( 1 ) ;
277+
278+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'days' ) ;
279+ } ) ;
280+
281+ it ( 'should set timeSpan to "months" for 3 months ago' , function ( ) {
282+ var threeMonthsAgo = moment ( ) . subtract ( 3 , 'months' ) . toDate ( ) ;
283+ var response = leaderboardWithSubmissionAt ( threeMonthsAgo ) ;
284+
285+ utilities . sendRequest = function ( parameters ) {
286+ parameters . callback . onSuccess ( { data : response . results } ) ;
287+ } ;
288+
289+ vm . getLeaderboard ( 1 ) ;
290+
291+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'months' ) ;
292+ } ) ;
293+
294+ it ( 'should set timeSpan to "day" for 1 day ago' , function ( ) {
295+ var oneDayAgo = moment ( ) . subtract ( 1 , 'days' ) . toDate ( ) ;
296+ var response = leaderboardWithSubmissionAt ( oneDayAgo ) ;
297+
298+ utilities . sendRequest = function ( parameters ) {
299+ parameters . callback . onSuccess ( { data : response . results } ) ;
300+ } ;
301+
302+ vm . getLeaderboard ( 1 ) ;
303+
304+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'day' ) ;
305+ } ) ;
306+
307+ it ( 'should set timeSpan to "days" for 5 days ago' , function ( ) {
308+ var fiveDaysAgo = moment ( ) . subtract ( 5 , 'days' ) . toDate ( ) ;
309+ var response = leaderboardWithSubmissionAt ( fiveDaysAgo ) ;
310+
311+ utilities . sendRequest = function ( parameters ) {
312+ parameters . callback . onSuccess ( { data : response . results } ) ;
313+ } ;
314+
315+ vm . getLeaderboard ( 1 ) ;
316+
317+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'days' ) ;
318+ } ) ;
319+
320+ it ( 'should set timeSpan to "hour" for 1 hour ago' , function ( ) {
321+ var oneHourAgo = moment ( ) . subtract ( 1 , 'hours' ) . toDate ( ) ;
322+ var response = leaderboardWithSubmissionAt ( oneHourAgo ) ;
323+
324+ utilities . sendRequest = function ( parameters ) {
325+ parameters . callback . onSuccess ( { data : response . results } ) ;
326+ } ;
327+
328+ vm . getLeaderboard ( 1 ) ;
329+
330+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'hour' ) ;
331+ } ) ;
332+
333+ it ( 'should set timeSpan to "hours" for 10 hours ago' , function ( ) {
334+ var tenHoursAgo = moment ( ) . subtract ( 10 , 'hours' ) . toDate ( ) ;
335+ var response = leaderboardWithSubmissionAt ( tenHoursAgo ) ;
336+
337+ utilities . sendRequest = function ( parameters ) {
338+ parameters . callback . onSuccess ( { data : response . results } ) ;
339+ } ;
340+
341+ vm . getLeaderboard ( 1 ) ;
342+
343+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'hours' ) ;
344+ } ) ;
345+
346+ it ( 'should set timeSpan to "minute" for 1 minute ago' , function ( ) {
347+ var oneMinuteAgo = moment ( ) . subtract ( 1 , 'minutes' ) . toDate ( ) ;
348+ var response = leaderboardWithSubmissionAt ( oneMinuteAgo ) ;
349+
350+ utilities . sendRequest = function ( parameters ) {
351+ parameters . callback . onSuccess ( { data : response . results } ) ;
352+ } ;
353+
354+ vm . getLeaderboard ( 1 ) ;
355+
356+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'minute' ) ;
357+ } ) ;
358+
359+ it ( 'should set timeSpan to "minutes" for 30 minutes ago' , function ( ) {
360+ var thirtyMinutesAgo = moment ( ) . subtract ( 30 , 'minutes' ) . toDate ( ) ;
361+ var response = leaderboardWithSubmissionAt ( thirtyMinutesAgo ) ;
362+
363+ utilities . sendRequest = function ( parameters ) {
364+ parameters . callback . onSuccess ( { data : response . results } ) ;
365+ } ;
366+
367+ vm . getLeaderboard ( 1 ) ;
368+
369+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'minutes' ) ;
370+ } ) ;
371+
372+ it ( 'should set timeSpan to "second" for 1 second ago' , function ( ) {
373+ var oneSecondAgo = moment ( ) . subtract ( 1 , 'seconds' ) . toDate ( ) ;
374+ var response = leaderboardWithSubmissionAt ( oneSecondAgo ) ;
375+
376+ utilities . sendRequest = function ( parameters ) {
377+ parameters . callback . onSuccess ( { data : response . results } ) ;
378+ } ;
379+
380+ vm . getLeaderboard ( 1 ) ;
381+
382+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'second' ) ;
383+ } ) ;
384+
385+ it ( 'should set timeSpan to "seconds" for 45 seconds ago' , function ( ) {
386+ var fortyFiveSecondsAgo = moment ( ) . subtract ( 45 , 'seconds' ) . toDate ( ) ;
387+ var response = leaderboardWithSubmissionAt ( fortyFiveSecondsAgo ) ;
388+
389+ utilities . sendRequest = function ( parameters ) {
390+ parameters . callback . onSuccess ( { data : response . results } ) ;
391+ } ;
392+
393+ vm . getLeaderboard ( 1 ) ;
394+
395+ expect ( vm . leaderboard [ 0 ] . timeSpan ) . toBe ( 'seconds' ) ;
396+ } ) ;
397+ } ) ;
216398} ) ;
0 commit comments