mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
Merge branch 'release' into develop
This commit is contained in:
2
npm-shrinkwrap.json
generated
2
npm-shrinkwrap.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "habitica",
|
"name": "habitica",
|
||||||
"version": "3.101.1",
|
"version": "3.101.2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@gulp-sourcemaps/map-sources": {
|
"@gulp-sourcemaps/map-sources": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "habitica",
|
"name": "habitica",
|
||||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||||
"version": "3.101.1",
|
"version": "3.101.2",
|
||||||
"main": "./website/server/index.js",
|
"main": "./website/server/index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@slack/client": "^3.8.1",
|
"@slack/client": "^3.8.1",
|
||||||
|
|||||||
@@ -152,11 +152,66 @@ describe('GET /tasks/user', () => {
|
|||||||
expect(dailys2[0].isDue).to.be.true;
|
expect(dailys2[0].isDue).to.be.true;
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns dailies with isDue for the date specified and will add CDS offset if time is not supplied', async () => {
|
it('returns dailies with isDue for the date specified and will add CDS offset if time is not supplied and assumes timezones', async () => {
|
||||||
|
let timezone = 420;
|
||||||
await user.update({
|
await user.update({
|
||||||
'preferences.dayStart': 7,
|
'preferences.dayStart': 0,
|
||||||
|
'preferences.timezoneOffset': timezone,
|
||||||
});
|
});
|
||||||
let startDate = moment().subtract('4', 'days').startOf('day').toISOString();
|
let startDate = moment().zone(timezone).subtract('4', 'days').startOf('day').toISOString();
|
||||||
|
await user.post('/tasks/user', [
|
||||||
|
{
|
||||||
|
text: 'test daily',
|
||||||
|
type: 'daily',
|
||||||
|
startDate,
|
||||||
|
frequency: 'daily',
|
||||||
|
everyX: 2,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
let today = moment().format('YYYY-MM-DD');
|
||||||
|
let dailys = await user.get(`/tasks/user?type=dailys&dueDate=${today}`);
|
||||||
|
expect(dailys[0].isDue).to.be.true;
|
||||||
|
|
||||||
|
let yesterday = moment().subtract('1', 'days').format('YYYY-MM-DD');
|
||||||
|
let dailys2 = await user.get(`/tasks/user?type=dailys&dueDate=${yesterday}`);
|
||||||
|
expect(dailys2[0].isDue).to.be.false;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('returns dailies with isDue for the date specified and will add CDS offset if time is not supplied and assumes timezones', async () => {
|
||||||
|
let timezone = 240;
|
||||||
|
await user.update({
|
||||||
|
'preferences.dayStart': 0,
|
||||||
|
'preferences.timezoneOffset': timezone,
|
||||||
|
});
|
||||||
|
let startDate = moment().zone(timezone).subtract('4', 'days').startOf('day').toISOString();
|
||||||
|
await user.post('/tasks/user', [
|
||||||
|
{
|
||||||
|
text: 'test daily',
|
||||||
|
type: 'daily',
|
||||||
|
startDate,
|
||||||
|
frequency: 'daily',
|
||||||
|
everyX: 2,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
let today = moment().format('YYYY-MM-DD');
|
||||||
|
let dailys = await user.get(`/tasks/user?type=dailys&dueDate=${today}`);
|
||||||
|
expect(dailys[0].isDue).to.be.true;
|
||||||
|
|
||||||
|
let yesterday = moment().subtract('1', 'days').format('YYYY-MM-DD');
|
||||||
|
let dailys2 = await user.get(`/tasks/user?type=dailys&dueDate=${yesterday}`);
|
||||||
|
expect(dailys2[0].isDue).to.be.false;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns dailies with isDue for the date specified and will add CDS offset if time is not supplied and assumes timezones', async () => {
|
||||||
|
let timezone = 540;
|
||||||
|
await user.update({
|
||||||
|
'preferences.dayStart': 0,
|
||||||
|
'preferences.timezoneOffset': timezone,
|
||||||
|
});
|
||||||
|
let startDate = moment().zone(timezone).subtract('4', 'days').startOf('day').toISOString();
|
||||||
await user.post('/tasks/user', [
|
await user.post('/tasks/user', [
|
||||||
{
|
{
|
||||||
text: 'test daily',
|
text: 'test daily',
|
||||||
|
|||||||
@@ -29,12 +29,13 @@ export function setNextDue (task, user, dueDateOption) {
|
|||||||
let now = moment().toDate();
|
let now = moment().toDate();
|
||||||
let dateTaskIsDue = Date.now();
|
let dateTaskIsDue = Date.now();
|
||||||
if (dueDateOption) {
|
if (dueDateOption) {
|
||||||
dateTaskIsDue = moment(dueDateOption);
|
// @TODO Add required ISO format
|
||||||
|
dateTaskIsDue = moment(dueDateOption).add(user.preferences.timezoneOffset, 'minutes');
|
||||||
|
|
||||||
// If not time is supplied. Let's assume we want start of Custom Day Start day.
|
// If not time is supplied. Let's assume we want start of Custom Day Start day.
|
||||||
if (dateTaskIsDue.hour() === 0 && dateTaskIsDue.minute() === 0 && dateTaskIsDue.second() === 0 && dateTaskIsDue.millisecond() === 0) {
|
if (dateTaskIsDue.hour() === 0 && dateTaskIsDue.minute() === 0 && dateTaskIsDue.second() === 0 && dateTaskIsDue.millisecond() === 0) {
|
||||||
dateTaskIsDue.add(user.preferences.dayStart, 'hours');
|
dateTaskIsDue.add(user.preferences.dayStart, 'hours');
|
||||||
}
|
}
|
||||||
|
|
||||||
now = dateTaskIsDue;
|
now = dateTaskIsDue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user