]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Better threshold tests to capture intended behavior completely. 1663/head
authorStephen Huenneke <stephen.huenneke@gmail.com>
Thu, 22 May 2014 17:51:33 +0000 (10:51 -0700)
committerStephen Huenneke <stephen.huenneke@gmail.com>
Thu, 22 May 2014 17:51:33 +0000 (10:51 -0700)
test/moment/relative_time.js

index 200b90ba7a01d8cc7f0bbfc8ab9cb63bd55dfd41..3a39d46f3709964c258eb9666e1cb61b0ac9929e 100644 (file)
@@ -6,42 +6,111 @@ exports.relativeTime = {
     },
 
     "default thresholds" : function (test) {
-        test.expect(5);
+        test.expect(12);
 
         var a = moment();
-        a.subtract('seconds', 10);
-        test.equal(a.fromNow(), "a few seconds ago", "Seconds friendly relative time");
-        a.subtract('seconds', 35);
-        test.equal(a.fromNow(), "a minute ago", "Minute friendly relative time");
+
+        // Seconds to minutes threshold
+        a.subtract('seconds', 44);
+        test.equal(a.fromNow(), "a few seconds ago", "Below default seconds to minutes threshold");
+        a.subtract('seconds', 1);
+        test.equal(a.fromNow(), "a minute ago", "Above default seconds to minutes threshold");
+
+        // Minutes to hours threshold
+        a = moment();
+        a.subtract('minutes', 44);
+        test.equal(a.fromNow(), "44 minutes ago", "Below default minute to hour threshold");
         a.subtract('minutes', 1);
-        test.equal(a.fromNow(), "2 minutes ago", "Minutes friendly relative time");
-        a.subtract('minutes', 45);
-        test.equal(a.fromNow(), "an hour ago", "1 hour friendly relative time");
-        a.subtract('hours', 22);
-        test.equal(a.fromNow(), "a day ago", "1 day friendly relative time");
+        test.equal(a.fromNow(), "an hour ago", "Above default minute to hour threshold");
+
+        // Hours to days threshold
+        a = moment();
+        a.subtract('hours', 21);
+        test.equal(a.fromNow(), "21 hours ago", "Below default hours to day threshold");
+        a.subtract('hours', 1);
+        test.equal(a.fromNow(), "a day ago", "Above default hours to day threshold");
+
+        // Days to month (singular) threshold
+        a = moment();
+        a.subtract('days', 25);
+        test.equal(a.fromNow(), "25 days ago", "Below default days to month (singular) threshold");
+        a.subtract('days', 1);
+        test.equal(a.fromNow(), "a month ago", "Above default days to month (singular) threshold");
+
+        // Days to months (plural) threshold
+        a = moment();
+        a.subtract('days', 45);
+        test.equal(a.fromNow(), "a month ago", "Below default days to months (plural) threshold");
+        a.subtract('days', 1);
+        test.equal(a.fromNow(), "2 months ago", "Above default days to months (plural) threshold");
+
+        // Days to years threshold
+        a = moment();
+        a.subtract('days', 344);
+        test.equal(a.fromNow(), "11 months ago", "Below default days to years threshold");
+        a.subtract('days', 1);
+        test.equal(a.fromNow(), "a year ago", "Above default days to years threshold");
+
         test.done();
     },
 
     "custom thresholds" : function (test) {
-        test.expect(3);
+        test.expect(12);
 
-        var a = moment();
+        // Seconds to minutes threshold
         moment.relativeTimeThreshold('s', 55);
+        var a = moment();
         a.subtract('seconds', 54);
-        test.equal(a.fromNow(), "a few seconds ago", "Custom <1 minute friendly relative time");
+        test.equal(a.fromNow(), "a few seconds ago", "Below custom seconds to minutes threshold");
+        a.subtract('seconds', 1);
+        test.equal(a.fromNow(), "a minute ago", "Above custom seconds to minutes threshold");
+
         moment.relativeTimeThreshold('s', 45);
 
-        a = moment();
+        // Minutes to hours threshold
         moment.relativeTimeThreshold('m', 55);
+        a = moment();
         a.subtract('minutes', 54);
-        test.equal(a.fromNow(), "54 minutes ago", "Custom <1 hour friendly relative time");
+        test.equal(a.fromNow(), "54 minutes ago", "Below custom minutes to hours threshold");
+        a.subtract('minutes', 1);
+        test.equal(a.fromNow(), "an hour ago", "Above custom minutes to hours threshold");
         moment.relativeTimeThreshold('m', 45);
 
-        a = moment();
+        // Hours to days threshold
         moment.relativeTimeThreshold('h', 24);
+        a = moment();
         a.subtract('hours', 23);
-        test.equal(a.fromNow(), "23 hours ago", "Custom <1 day friendly relative time");
+        test.equal(a.fromNow(), "23 hours ago", "Below custom hours to days threshold");
+        a.subtract('hours', 1);
+        test.equal(a.fromNow(), "a day ago", "Above custom hours to days threshold");
         moment.relativeTimeThreshold('h', 22);
+
+        // Days to month (singluar) threshold
+        moment.relativeTimeThreshold('dd', 28);
+        a = moment();
+        a.subtract('days', 28);
+        test.equal(a.fromNow(), "28 days ago", "Below custom days to month (singular) threshold");
+        a.subtract('days', 1);
+        test.equal(a.fromNow(), "a month ago", "Above custom days to month (singular) threshold");
+        moment.relativeTimeThreshold('dd', 25);
+
+        // Days to months (plural) threshold
+        moment.relativeTimeThreshold('dm', 55);
+        a = moment();
+        a.subtract('days', 55);
+        test.equal(a.fromNow(), "a month ago", "Above custom days to months (plural) threshold");
+        a.subtract('days', 1);
+        test.equal(a.fromNow(), "2 months ago", "Below custom days to months (plural) threshold");
+        moment.relativeTimeThreshold('dm', 45);
+
+        // Days to years threshold
+        moment.relativeTimeThreshold('dy', 360);
+        a = moment();
+        a.subtract('days', 359);
+        test.equal(a.fromNow(), "12 months ago", "Below custom days to years threshold");
+        a.subtract('days', 1);
+        test.equal(a.fromNow(), "a year ago", "Above custom days to years threshold");
+        moment.relativeTimeThreshold('dy', 345);
         test.done();
     }
 };