Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Flamis <zoltan@hey.com>2021-03-11 11:11:44 +0300
committerGitHub <noreply@github.com>2021-03-11 11:11:44 +0300
commitcf0c44e84fa3b190910629de7c5698df075a4f17 (patch)
tree7ed214aa2889953d67e4f78524df8e63b54c6eb9
parente3e913252329f9e26833c4f68980f288735fc770 (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
-rw-r--r--plugins/CoreHome/angularjs/common/services/periods.js5
-rw-r--r--plugins/CoreHome/angularjs/common/services/periods.spec.js128
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;
+ });
+ });
+})();