diff options
author | Zoltan Flamis <zoltan@hey.com> | 2021-03-11 11:11:44 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-11 11:11:44 +0300 |
commit | cf0c44e84fa3b190910629de7c5698df075a4f17 (patch) | |
tree | 7ed214aa2889953d67e4f78524df8e63b54c6eb9 /plugins/CoreHome | |
parent | e3e913252329f9e26833c4f68980f288735fc770 (diff) |
Set the previous month date to 1 when compare months (#17294)
* set the previous month date to 1 when compare months
* add periods tests and fix one period related bug
* add periods tests and fix other period related bug
* Update periods.spec.js
Diffstat (limited to 'plugins/CoreHome')
-rw-r--r-- | plugins/CoreHome/angularjs/common/services/periods.js | 5 | ||||
-rw-r--r-- | plugins/CoreHome/angularjs/common/services/periods.spec.js | 128 |
2 files changed, 132 insertions, 1 deletions
diff --git a/plugins/CoreHome/angularjs/common/services/periods.js b/plugins/CoreHome/angularjs/common/services/periods.js index a6d3896b03..8033b33962 100644 --- a/plugins/CoreHome/angularjs/common/services/periods.js +++ b/plugins/CoreHome/angularjs/common/services/periods.js @@ -126,6 +126,7 @@ startMonth.setDate(1); var endMonth = new Date(this.dateInPeriod.getTime()); + endMonth.setDate(1); endMonth.setMonth(endMonth.getMonth() + 1); endMonth.setDate(0); @@ -209,6 +210,7 @@ } else if (childPeriodType === 'week') { startDate.setDate(startDate.getDate() - (nAmount * 7)); } else if (childPeriodType === 'month') { + startDate.setDate(1); startDate.setMonth(startDate.getMonth() - nAmount); } else if (childPeriodType === 'year') { startDate.setFullYear(startDate.getFullYear() - nAmount); @@ -346,6 +348,7 @@ if (strDate.match(/last[ -]?month/i)) { var lastMonth = getToday(); + lastMonth.setDate(1); lastMonth.setMonth(lastMonth.getMonth() - 1); return lastMonth; } @@ -381,4 +384,4 @@ date.setMilliseconds(0); return date; } -})();
\ No newline at end of file +})(); diff --git a/plugins/CoreHome/angularjs/common/services/periods.spec.js b/plugins/CoreHome/angularjs/common/services/periods.spec.js new file mode 100644 index 0000000000..7fd0271b33 --- /dev/null +++ b/plugins/CoreHome/angularjs/common/services/periods.spec.js @@ -0,0 +1,128 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +(function () { + describe('piwikPeriods', function() { + var piwikPeriods; + + function clearDate(date) + { + var date = new Date(date); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + + return date; + } + + beforeEach(module('piwikApp.service')); + beforeEach(inject(function($injector) { + piwikPeriods = $injector.get('piwikPeriods'); + })); + + it('should get daterange for day', function() { + var day = '2021-03-10'; + + var result = piwikPeriods.parse('day', day).getDateRange(); + var expected = [clearDate(day), clearDate(day)]; + + expect(result).to.eql(expected); + }); + + it('should get daterange for week', function() { + var day = '2021-03-10'; + var monday = '2021-03-08'; + var sunday = '2021-03-14'; + + var result = piwikPeriods.parse('week', day).getDateRange(); + var expected = [clearDate(monday), clearDate(sunday)]; + + expect(result).to.eql(expected); + }); + + it('should get daterange for month', function() { + var day = '2021-03-10'; + var first = '2021-03-01'; + var last = '2021-03-31'; + + var result = piwikPeriods.parse('month', day).getDateRange(); + var expected = [clearDate(first), clearDate(last)]; + + expect(result).to.eql(expected); + }); + + it('should get daterange for month for date 31th', function() { + var day = '2021-03-31'; + var first = '2021-03-01'; + var last = '2021-03-31'; + + var result = piwikPeriods.parse('month', day).getDateRange(); + var expected = [clearDate(first), clearDate(last)]; + + expect(result).to.eql(expected); + }); + + it('should get daterange for year', function() { + var day = '2021-03-10'; + var first = '2021-01-01'; + var last = '2021-12-31'; + + var result = piwikPeriods.parse('year', day).getDateRange(); + var expected = [clearDate(first), clearDate(last)]; + + expect(result).to.eql(expected); + }); + + it('should get daterange for year for date 31th december', function() { + var day = '2021-12-31'; + var first = '2021-01-01'; + var last = '2021-12-31'; + + var result = piwikPeriods.parse('year', day).getDateRange(); + var expected = [clearDate(first), clearDate(last)]; + + expect(result).to.eql(expected); + }); + + it('should get proper month rangeperiod when date is 31th march', function() { + var day = '2021-03-31'; + var first = '2021-02-01'; + var last = '2021-03-31'; + + var result = piwikPeriods.RangePeriod.getLastNRange('month', 2, day); + + expect(result.startDate).to.eql(clearDate(first)); + expect(result.endDate).to.eql(clearDate(last)); + }); + + it('should parse last month properly when date is 31th march', function() { + originalDateNow = Date.now; + Date.now = function() { + return clearDate('2021-03-31').getTime(); + } + + var result = piwikPeriods.parseDate('last month'); + + expect(result.getMonth()).to.eql(1); // 1 is February + + Date.now = originalDateNow; + }); + + it('should parse last month properly', function() { + originalDateNow = Date.now; + Date.now = function() { + return clearDate('2021-03-10').getTime(); + }; + + var result = piwikPeriods.parseDate('last month'); + + expect(result.getMonth()).to.eql(1); // 1 is February + + Date.now = originalDateNow; + }); + }); +})(); |