mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Fix grey dailies with weekly frequency and no weekdays selected in Habitica (#135419)
This commit is contained in:
parent
3aa466806e
commit
4dbf2b0320
@ -3,13 +3,14 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
|
from dataclasses import asdict
|
||||||
from datetime import date, datetime, timedelta
|
from datetime import date, datetime, timedelta
|
||||||
from enum import StrEnum
|
from enum import StrEnum
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
from dateutil.rrule import rrule
|
from dateutil.rrule import rrule
|
||||||
from habiticalib import TaskType
|
from habiticalib import Frequency, TaskType
|
||||||
|
|
||||||
from homeassistant.components.calendar import (
|
from homeassistant.components.calendar import (
|
||||||
CalendarEntity,
|
CalendarEntity,
|
||||||
@ -193,6 +194,10 @@ class HabiticaDailiesCalendarEntity(HabiticaCalendarEntity):
|
|||||||
# only dailies that that are not 'grey dailies'
|
# only dailies that that are not 'grey dailies'
|
||||||
if not (task.Type is TaskType.DAILY and task.everyX):
|
if not (task.Type is TaskType.DAILY and task.everyX):
|
||||||
continue
|
continue
|
||||||
|
if task.frequency is Frequency.WEEKLY and not any(
|
||||||
|
asdict(task.repeat).values()
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
|
||||||
recurrences = build_rrule(task)
|
recurrences = build_rrule(task)
|
||||||
recurrence_dates = self.get_recurrence_dates(
|
recurrence_dates = self.get_recurrence_dates(
|
||||||
@ -334,6 +339,11 @@ class HabiticaDailyRemindersCalendarEntity(HabiticaCalendarEntity):
|
|||||||
if not (task.Type is TaskType.DAILY and task.everyX):
|
if not (task.Type is TaskType.DAILY and task.everyX):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if task.frequency is Frequency.WEEKLY and not any(
|
||||||
|
asdict(task.repeat).values()
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
|
||||||
recurrences = build_rrule(task)
|
recurrences = build_rrule(task)
|
||||||
recurrences_start = self.start_of_today
|
recurrences_start = self.start_of_today
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from dataclasses import fields
|
from dataclasses import asdict, fields
|
||||||
import datetime
|
import datetime
|
||||||
from math import floor
|
from math import floor
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
@ -34,6 +34,8 @@ def next_due_date(task: TaskData, today: datetime.datetime) -> datetime.date | N
|
|||||||
|
|
||||||
if task.everyX == 0 or not task.nextDue: # grey dailies never become due
|
if task.everyX == 0 or not task.nextDue: # grey dailies never become due
|
||||||
return None
|
return None
|
||||||
|
if task.frequency is Frequency.WEEKLY and not any(asdict(task.repeat).values()):
|
||||||
|
return None
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
assert task.startDate
|
assert task.startDate
|
||||||
|
51
tests/components/habitica/fixtures/duedate_fixture_9.json
Normal file
51
tests/components/habitica/fixtures/duedate_fixture_9.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"_id": "564b9ac9-c53d-4638-9e7f-1cd96fe19baa",
|
||||||
|
"frequency": "weekly",
|
||||||
|
"everyX": 1,
|
||||||
|
"repeat": {
|
||||||
|
"m": false,
|
||||||
|
"t": false,
|
||||||
|
"w": false,
|
||||||
|
"th": false,
|
||||||
|
"f": false,
|
||||||
|
"s": false,
|
||||||
|
"su": false
|
||||||
|
},
|
||||||
|
"streak": 1,
|
||||||
|
"nextDue": ["2024-09-20T22:00:00.000Z", "2024-09-27T22:00:00.000Z"],
|
||||||
|
"yesterDaily": true,
|
||||||
|
"history": [],
|
||||||
|
"completed": false,
|
||||||
|
"collapseChecklist": false,
|
||||||
|
"type": "daily",
|
||||||
|
"text": "Zahnseide benutzen",
|
||||||
|
"notes": "Klicke um Änderungen zu machen!",
|
||||||
|
"tags": [],
|
||||||
|
"value": -2.9663035443712333,
|
||||||
|
"priority": 1,
|
||||||
|
"attribute": "str",
|
||||||
|
"challenge": {},
|
||||||
|
"group": {
|
||||||
|
"completedBy": {},
|
||||||
|
"assignedUsers": []
|
||||||
|
},
|
||||||
|
"byHabitica": false,
|
||||||
|
"startDate": "2024-09-25T22:00:00.000Z",
|
||||||
|
"daysOfMonth": [],
|
||||||
|
"weeksOfMonth": [],
|
||||||
|
"checklist": [],
|
||||||
|
"reminders": [],
|
||||||
|
"createdAt": "2024-07-07T17:51:53.268Z",
|
||||||
|
"updatedAt": "2024-09-21T22:24:20.154Z",
|
||||||
|
"userId": "5f359083-ef78-4af0-985a-0b2c6d05797c",
|
||||||
|
"isDue": false,
|
||||||
|
"id": "564b9ac9-c53d-4638-9e7f-1cd96fe19baa"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"notifications": [],
|
||||||
|
"userV": 589,
|
||||||
|
"appVersion": "5.28.6"
|
||||||
|
}
|
@ -598,6 +598,56 @@
|
|||||||
"userId": "5f359083-ef78-4af0-985a-0b2c6d05797c",
|
"userId": "5f359083-ef78-4af0-985a-0b2c6d05797c",
|
||||||
"isDue": false,
|
"isDue": false,
|
||||||
"id": "6e53f1f5-a315-4edd-984d-8d762e4a08ef"
|
"id": "6e53f1f5-a315-4edd-984d-8d762e4a08ef"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repeat": {
|
||||||
|
"m": false,
|
||||||
|
"t": false,
|
||||||
|
"w": false,
|
||||||
|
"th": false,
|
||||||
|
"f": false,
|
||||||
|
"s": false,
|
||||||
|
"su": false
|
||||||
|
},
|
||||||
|
"challenge": {},
|
||||||
|
"group": {
|
||||||
|
"completedBy": {},
|
||||||
|
"assignedUsers": []
|
||||||
|
},
|
||||||
|
"_id": "7d92278b-9361-4854-83b6-0a66b57dce20",
|
||||||
|
"frequency": "weekly",
|
||||||
|
"everyX": 1,
|
||||||
|
"streak": 1,
|
||||||
|
"nextDue": [
|
||||||
|
"2024-12-14T23:00:00.000Z",
|
||||||
|
"2025-01-18T23:00:00.000Z",
|
||||||
|
"2025-02-15T23:00:00.000Z",
|
||||||
|
"2025-03-15T23:00:00.000Z",
|
||||||
|
"2025-04-19T23:00:00.000Z",
|
||||||
|
"2025-05-17T23:00:00.000Z"
|
||||||
|
],
|
||||||
|
"yesterDaily": true,
|
||||||
|
"history": [],
|
||||||
|
"completed": false,
|
||||||
|
"collapseChecklist": false,
|
||||||
|
"type": "daily",
|
||||||
|
"text": "Lerne eine neue Programmiersprache",
|
||||||
|
"notes": "Wähle eine Programmiersprache aus, die du noch nicht kennst, und lerne die Grundlagen.",
|
||||||
|
"tags": [],
|
||||||
|
"value": -0.9215181434950852,
|
||||||
|
"priority": 1,
|
||||||
|
"attribute": "str",
|
||||||
|
"byHabitica": false,
|
||||||
|
"startDate": "2024-09-20T23:00:00.000Z",
|
||||||
|
"daysOfMonth": [],
|
||||||
|
"weeksOfMonth": [],
|
||||||
|
"checklist": [],
|
||||||
|
"reminders": [],
|
||||||
|
"createdAt": "2024-10-10T15:57:14.304Z",
|
||||||
|
"updatedAt": "2024-11-27T23:47:29.986Z",
|
||||||
|
"userId": "5f359083-ef78-4af0-985a-0b2c6d05797c",
|
||||||
|
"isDue": false,
|
||||||
|
"id": "7d92278b-9361-4854-83b6-0a66b57dce20"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"notifications": [
|
"notifications": [
|
||||||
|
@ -1166,6 +1166,84 @@
|
|||||||
]),
|
]),
|
||||||
'yesterDaily': True,
|
'yesterDaily': True,
|
||||||
}),
|
}),
|
||||||
|
dict({
|
||||||
|
'Type': <TaskType.DAILY: 'daily'>,
|
||||||
|
'alias': None,
|
||||||
|
'attribute': <Attributes.STR: 'str'>,
|
||||||
|
'byHabitica': False,
|
||||||
|
'challenge': dict({
|
||||||
|
'broken': None,
|
||||||
|
'id': None,
|
||||||
|
'shortName': None,
|
||||||
|
'taskId': None,
|
||||||
|
'winner': None,
|
||||||
|
}),
|
||||||
|
'checklist': list([
|
||||||
|
]),
|
||||||
|
'collapseChecklist': False,
|
||||||
|
'completed': False,
|
||||||
|
'counterDown': None,
|
||||||
|
'counterUp': None,
|
||||||
|
'createdAt': datetime.datetime(2024, 10, 10, 15, 57, 14, 304000, tzinfo=datetime.timezone.utc),
|
||||||
|
'date': None,
|
||||||
|
'daysOfMonth': list([
|
||||||
|
]),
|
||||||
|
'down': None,
|
||||||
|
'everyX': 1,
|
||||||
|
'frequency': <Frequency.WEEKLY: 'weekly'>,
|
||||||
|
'group': dict({
|
||||||
|
'assignedDate': None,
|
||||||
|
'assignedUsers': list([
|
||||||
|
]),
|
||||||
|
'assignedUsersDetail': dict({
|
||||||
|
}),
|
||||||
|
'assigningUsername': None,
|
||||||
|
'completedBy': dict({
|
||||||
|
'date': None,
|
||||||
|
'userId': None,
|
||||||
|
}),
|
||||||
|
'id': None,
|
||||||
|
'managerNotes': None,
|
||||||
|
'taskId': None,
|
||||||
|
}),
|
||||||
|
'history': list([
|
||||||
|
]),
|
||||||
|
'id': UUID('7d92278b-9361-4854-83b6-0a66b57dce20'),
|
||||||
|
'isDue': False,
|
||||||
|
'nextDue': list([
|
||||||
|
datetime.datetime(2024, 12, 14, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 1, 18, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 2, 15, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 3, 15, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 4, 19, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 5, 17, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
]),
|
||||||
|
'notes': 'Wähle eine Programmiersprache aus, die du noch nicht kennst, und lerne die Grundlagen.',
|
||||||
|
'priority': <TaskPriority.EASY: 1>,
|
||||||
|
'reminders': list([
|
||||||
|
]),
|
||||||
|
'repeat': dict({
|
||||||
|
'f': False,
|
||||||
|
'm': False,
|
||||||
|
's': False,
|
||||||
|
'su': False,
|
||||||
|
't': False,
|
||||||
|
'th': False,
|
||||||
|
'w': False,
|
||||||
|
}),
|
||||||
|
'startDate': datetime.datetime(2024, 9, 20, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
'streak': 1,
|
||||||
|
'tags': list([
|
||||||
|
]),
|
||||||
|
'text': 'Lerne eine neue Programmiersprache',
|
||||||
|
'up': None,
|
||||||
|
'updatedAt': datetime.datetime(2024, 11, 27, 23, 47, 29, 986000, tzinfo=datetime.timezone.utc),
|
||||||
|
'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'),
|
||||||
|
'value': -0.9215181434950852,
|
||||||
|
'weeksOfMonth': list([
|
||||||
|
]),
|
||||||
|
'yesterDaily': True,
|
||||||
|
}),
|
||||||
dict({
|
dict({
|
||||||
'Type': <TaskType.TODO: 'todo'>,
|
'Type': <TaskType.TODO: 'todo'>,
|
||||||
'alias': None,
|
'alias': None,
|
||||||
@ -3320,6 +3398,84 @@
|
|||||||
]),
|
]),
|
||||||
'yesterDaily': True,
|
'yesterDaily': True,
|
||||||
}),
|
}),
|
||||||
|
dict({
|
||||||
|
'Type': <TaskType.DAILY: 'daily'>,
|
||||||
|
'alias': None,
|
||||||
|
'attribute': <Attributes.STR: 'str'>,
|
||||||
|
'byHabitica': False,
|
||||||
|
'challenge': dict({
|
||||||
|
'broken': None,
|
||||||
|
'id': None,
|
||||||
|
'shortName': None,
|
||||||
|
'taskId': None,
|
||||||
|
'winner': None,
|
||||||
|
}),
|
||||||
|
'checklist': list([
|
||||||
|
]),
|
||||||
|
'collapseChecklist': False,
|
||||||
|
'completed': False,
|
||||||
|
'counterDown': None,
|
||||||
|
'counterUp': None,
|
||||||
|
'createdAt': datetime.datetime(2024, 10, 10, 15, 57, 14, 304000, tzinfo=datetime.timezone.utc),
|
||||||
|
'date': None,
|
||||||
|
'daysOfMonth': list([
|
||||||
|
]),
|
||||||
|
'down': None,
|
||||||
|
'everyX': 1,
|
||||||
|
'frequency': <Frequency.WEEKLY: 'weekly'>,
|
||||||
|
'group': dict({
|
||||||
|
'assignedDate': None,
|
||||||
|
'assignedUsers': list([
|
||||||
|
]),
|
||||||
|
'assignedUsersDetail': dict({
|
||||||
|
}),
|
||||||
|
'assigningUsername': None,
|
||||||
|
'completedBy': dict({
|
||||||
|
'date': None,
|
||||||
|
'userId': None,
|
||||||
|
}),
|
||||||
|
'id': None,
|
||||||
|
'managerNotes': None,
|
||||||
|
'taskId': None,
|
||||||
|
}),
|
||||||
|
'history': list([
|
||||||
|
]),
|
||||||
|
'id': UUID('7d92278b-9361-4854-83b6-0a66b57dce20'),
|
||||||
|
'isDue': False,
|
||||||
|
'nextDue': list([
|
||||||
|
datetime.datetime(2024, 12, 14, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 1, 18, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 2, 15, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 3, 15, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 4, 19, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 5, 17, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
]),
|
||||||
|
'notes': 'Wähle eine Programmiersprache aus, die du noch nicht kennst, und lerne die Grundlagen.',
|
||||||
|
'priority': <TaskPriority.EASY: 1>,
|
||||||
|
'reminders': list([
|
||||||
|
]),
|
||||||
|
'repeat': dict({
|
||||||
|
'f': False,
|
||||||
|
'm': False,
|
||||||
|
's': False,
|
||||||
|
'su': False,
|
||||||
|
't': False,
|
||||||
|
'th': False,
|
||||||
|
'w': False,
|
||||||
|
}),
|
||||||
|
'startDate': datetime.datetime(2024, 9, 20, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
'streak': 1,
|
||||||
|
'tags': list([
|
||||||
|
]),
|
||||||
|
'text': 'Lerne eine neue Programmiersprache',
|
||||||
|
'up': None,
|
||||||
|
'updatedAt': datetime.datetime(2024, 11, 27, 23, 47, 29, 986000, tzinfo=datetime.timezone.utc),
|
||||||
|
'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'),
|
||||||
|
'value': -0.9215181434950852,
|
||||||
|
'weeksOfMonth': list([
|
||||||
|
]),
|
||||||
|
'yesterDaily': True,
|
||||||
|
}),
|
||||||
]),
|
]),
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
@ -4373,6 +4529,84 @@
|
|||||||
]),
|
]),
|
||||||
'yesterDaily': True,
|
'yesterDaily': True,
|
||||||
}),
|
}),
|
||||||
|
dict({
|
||||||
|
'Type': <TaskType.DAILY: 'daily'>,
|
||||||
|
'alias': None,
|
||||||
|
'attribute': <Attributes.STR: 'str'>,
|
||||||
|
'byHabitica': False,
|
||||||
|
'challenge': dict({
|
||||||
|
'broken': None,
|
||||||
|
'id': None,
|
||||||
|
'shortName': None,
|
||||||
|
'taskId': None,
|
||||||
|
'winner': None,
|
||||||
|
}),
|
||||||
|
'checklist': list([
|
||||||
|
]),
|
||||||
|
'collapseChecklist': False,
|
||||||
|
'completed': False,
|
||||||
|
'counterDown': None,
|
||||||
|
'counterUp': None,
|
||||||
|
'createdAt': datetime.datetime(2024, 10, 10, 15, 57, 14, 304000, tzinfo=datetime.timezone.utc),
|
||||||
|
'date': None,
|
||||||
|
'daysOfMonth': list([
|
||||||
|
]),
|
||||||
|
'down': None,
|
||||||
|
'everyX': 1,
|
||||||
|
'frequency': <Frequency.WEEKLY: 'weekly'>,
|
||||||
|
'group': dict({
|
||||||
|
'assignedDate': None,
|
||||||
|
'assignedUsers': list([
|
||||||
|
]),
|
||||||
|
'assignedUsersDetail': dict({
|
||||||
|
}),
|
||||||
|
'assigningUsername': None,
|
||||||
|
'completedBy': dict({
|
||||||
|
'date': None,
|
||||||
|
'userId': None,
|
||||||
|
}),
|
||||||
|
'id': None,
|
||||||
|
'managerNotes': None,
|
||||||
|
'taskId': None,
|
||||||
|
}),
|
||||||
|
'history': list([
|
||||||
|
]),
|
||||||
|
'id': UUID('7d92278b-9361-4854-83b6-0a66b57dce20'),
|
||||||
|
'isDue': False,
|
||||||
|
'nextDue': list([
|
||||||
|
datetime.datetime(2024, 12, 14, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 1, 18, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 2, 15, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 3, 15, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 4, 19, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 5, 17, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
]),
|
||||||
|
'notes': 'Wähle eine Programmiersprache aus, die du noch nicht kennst, und lerne die Grundlagen.',
|
||||||
|
'priority': <TaskPriority.EASY: 1>,
|
||||||
|
'reminders': list([
|
||||||
|
]),
|
||||||
|
'repeat': dict({
|
||||||
|
'f': False,
|
||||||
|
'm': False,
|
||||||
|
's': False,
|
||||||
|
'su': False,
|
||||||
|
't': False,
|
||||||
|
'th': False,
|
||||||
|
'w': False,
|
||||||
|
}),
|
||||||
|
'startDate': datetime.datetime(2024, 9, 20, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
'streak': 1,
|
||||||
|
'tags': list([
|
||||||
|
]),
|
||||||
|
'text': 'Lerne eine neue Programmiersprache',
|
||||||
|
'up': None,
|
||||||
|
'updatedAt': datetime.datetime(2024, 11, 27, 23, 47, 29, 986000, tzinfo=datetime.timezone.utc),
|
||||||
|
'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'),
|
||||||
|
'value': -0.9215181434950852,
|
||||||
|
'weeksOfMonth': list([
|
||||||
|
]),
|
||||||
|
'yesterDaily': True,
|
||||||
|
}),
|
||||||
]),
|
]),
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
@ -4876,6 +5110,84 @@
|
|||||||
]),
|
]),
|
||||||
'yesterDaily': True,
|
'yesterDaily': True,
|
||||||
}),
|
}),
|
||||||
|
dict({
|
||||||
|
'Type': <TaskType.DAILY: 'daily'>,
|
||||||
|
'alias': None,
|
||||||
|
'attribute': <Attributes.STR: 'str'>,
|
||||||
|
'byHabitica': False,
|
||||||
|
'challenge': dict({
|
||||||
|
'broken': None,
|
||||||
|
'id': None,
|
||||||
|
'shortName': None,
|
||||||
|
'taskId': None,
|
||||||
|
'winner': None,
|
||||||
|
}),
|
||||||
|
'checklist': list([
|
||||||
|
]),
|
||||||
|
'collapseChecklist': False,
|
||||||
|
'completed': False,
|
||||||
|
'counterDown': None,
|
||||||
|
'counterUp': None,
|
||||||
|
'createdAt': datetime.datetime(2024, 10, 10, 15, 57, 14, 304000, tzinfo=datetime.timezone.utc),
|
||||||
|
'date': None,
|
||||||
|
'daysOfMonth': list([
|
||||||
|
]),
|
||||||
|
'down': None,
|
||||||
|
'everyX': 1,
|
||||||
|
'frequency': <Frequency.WEEKLY: 'weekly'>,
|
||||||
|
'group': dict({
|
||||||
|
'assignedDate': None,
|
||||||
|
'assignedUsers': list([
|
||||||
|
]),
|
||||||
|
'assignedUsersDetail': dict({
|
||||||
|
}),
|
||||||
|
'assigningUsername': None,
|
||||||
|
'completedBy': dict({
|
||||||
|
'date': None,
|
||||||
|
'userId': None,
|
||||||
|
}),
|
||||||
|
'id': None,
|
||||||
|
'managerNotes': None,
|
||||||
|
'taskId': None,
|
||||||
|
}),
|
||||||
|
'history': list([
|
||||||
|
]),
|
||||||
|
'id': UUID('7d92278b-9361-4854-83b6-0a66b57dce20'),
|
||||||
|
'isDue': False,
|
||||||
|
'nextDue': list([
|
||||||
|
datetime.datetime(2024, 12, 14, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 1, 18, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 2, 15, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 3, 15, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 4, 19, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
datetime.datetime(2025, 5, 17, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
]),
|
||||||
|
'notes': 'Wähle eine Programmiersprache aus, die du noch nicht kennst, und lerne die Grundlagen.',
|
||||||
|
'priority': <TaskPriority.EASY: 1>,
|
||||||
|
'reminders': list([
|
||||||
|
]),
|
||||||
|
'repeat': dict({
|
||||||
|
'f': False,
|
||||||
|
'm': False,
|
||||||
|
's': False,
|
||||||
|
'su': False,
|
||||||
|
't': False,
|
||||||
|
'th': False,
|
||||||
|
'w': False,
|
||||||
|
}),
|
||||||
|
'startDate': datetime.datetime(2024, 9, 20, 23, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
'streak': 1,
|
||||||
|
'tags': list([
|
||||||
|
]),
|
||||||
|
'text': 'Lerne eine neue Programmiersprache',
|
||||||
|
'up': None,
|
||||||
|
'updatedAt': datetime.datetime(2024, 11, 27, 23, 47, 29, 986000, tzinfo=datetime.timezone.utc),
|
||||||
|
'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'),
|
||||||
|
'value': -0.9215181434950852,
|
||||||
|
'weeksOfMonth': list([
|
||||||
|
]),
|
||||||
|
'yesterDaily': True,
|
||||||
|
}),
|
||||||
]),
|
]),
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
|
@ -49,6 +49,12 @@
|
|||||||
'summary': 'Arbeite an einem kreativen Projekt',
|
'summary': 'Arbeite an einem kreativen Projekt',
|
||||||
'uid': '6e53f1f5-a315-4edd-984d-8d762e4a08ef',
|
'uid': '6e53f1f5-a315-4edd-984d-8d762e4a08ef',
|
||||||
}),
|
}),
|
||||||
|
dict({
|
||||||
|
'description': 'Wähle eine Programmiersprache aus, die du noch nicht kennst, und lerne die Grundlagen.',
|
||||||
|
'status': 'needs_action',
|
||||||
|
'summary': 'Lerne eine neue Programmiersprache',
|
||||||
|
'uid': '7d92278b-9361-4854-83b6-0a66b57dce20',
|
||||||
|
}),
|
||||||
]),
|
]),
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
@ -144,7 +150,7 @@
|
|||||||
'last_changed': <ANY>,
|
'last_changed': <ANY>,
|
||||||
'last_reported': <ANY>,
|
'last_reported': <ANY>,
|
||||||
'last_updated': <ANY>,
|
'last_updated': <ANY>,
|
||||||
'state': '3',
|
'state': '4',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_todos[todo.test_user_to_do_s-entry]
|
# name: test_todos[todo.test_user_to_do_s-entry]
|
||||||
|
@ -622,6 +622,7 @@ async def test_move_todo_item_exception(
|
|||||||
("duedate_fixture_6.json", "2024-10-21"),
|
("duedate_fixture_6.json", "2024-10-21"),
|
||||||
("duedate_fixture_7.json", None),
|
("duedate_fixture_7.json", None),
|
||||||
("duedate_fixture_8.json", None),
|
("duedate_fixture_8.json", None),
|
||||||
|
("duedate_fixture_9.json", None),
|
||||||
],
|
],
|
||||||
ids=[
|
ids=[
|
||||||
"default",
|
"default",
|
||||||
@ -632,6 +633,7 @@ async def test_move_todo_item_exception(
|
|||||||
"monthly starts on fixed day",
|
"monthly starts on fixed day",
|
||||||
"grey daily",
|
"grey daily",
|
||||||
"empty nextDue",
|
"empty nextDue",
|
||||||
|
"grey daily no weekdays",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@pytest.mark.usefixtures("set_tz")
|
@pytest.mark.usefixtures("set_tz")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user