diff --git a/homeassistant/components/habitica/const.py b/homeassistant/components/habitica/const.py index a5ceb48a052..47191e92775 100644 --- a/homeassistant/components/habitica/const.py +++ b/homeassistant/components/habitica/const.py @@ -31,6 +31,11 @@ ATTR_TASK = "task" ATTR_DIRECTION = "direction" ATTR_TARGET = "target" ATTR_ITEM = "item" +ATTR_TYPE = "type" +ATTR_PRIORITY = "priority" +ATTR_TAG = "tag" +ATTR_KEYWORD = "keyword" + SERVICE_CAST_SKILL = "cast_skill" SERVICE_START_QUEST = "start_quest" SERVICE_ACCEPT_QUEST = "accept_quest" @@ -38,6 +43,8 @@ SERVICE_CANCEL_QUEST = "cancel_quest" SERVICE_ABORT_QUEST = "abort_quest" SERVICE_REJECT_QUEST = "reject_quest" SERVICE_LEAVE_QUEST = "leave_quest" +SERVICE_GET_TASKS = "get_tasks" + SERVICE_SCORE_HABIT = "score_habit" SERVICE_SCORE_REWARD = "score_reward" diff --git a/homeassistant/components/habitica/icons.json b/homeassistant/components/habitica/icons.json index d4ca5dba10d..075ed353f2b 100644 --- a/homeassistant/components/habitica/icons.json +++ b/homeassistant/components/habitica/icons.json @@ -196,6 +196,12 @@ }, "transformation": { "service": "mdi:flask-round-bottom" + }, + "get_tasks": { + "service": "mdi:calendar-export", + "sections": { + "filter": "mdi:calendar-filter" + } } } } diff --git a/homeassistant/components/habitica/services.py b/homeassistant/components/habitica/services.py index b2ba7218c38..5961c139003 100644 --- a/homeassistant/components/habitica/services.py +++ b/homeassistant/components/habitica/services.py @@ -4,7 +4,7 @@ from __future__ import annotations from dataclasses import asdict import logging -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from aiohttp import ClientError from habiticalib import ( @@ -13,6 +13,9 @@ from habiticalib import ( NotAuthorizedError, NotFoundError, Skill, + TaskData, + TaskPriority, + TaskType, TooManyRequestsError, ) import voluptuous as vol @@ -36,10 +39,14 @@ from .const import ( ATTR_DATA, ATTR_DIRECTION, ATTR_ITEM, + ATTR_KEYWORD, ATTR_PATH, + ATTR_PRIORITY, ATTR_SKILL, + ATTR_TAG, ATTR_TARGET, ATTR_TASK, + ATTR_TYPE, DOMAIN, EVENT_API_CALL_SUCCESS, SERVICE_ABORT_QUEST, @@ -47,6 +54,7 @@ from .const import ( SERVICE_API_CALL, SERVICE_CANCEL_QUEST, SERVICE_CAST_SKILL, + SERVICE_GET_TASKS, SERVICE_LEAVE_QUEST, SERVICE_REJECT_QUEST, SERVICE_SCORE_HABIT, @@ -96,6 +104,21 @@ SERVICE_TRANSFORMATION_SCHEMA = vol.Schema( } ) +SERVICE_GET_TASKS_SCHEMA = vol.Schema( + { + vol.Required(ATTR_CONFIG_ENTRY): ConfigEntrySelector(), + vol.Optional(ATTR_TYPE): vol.All( + cv.ensure_list, [vol.All(vol.Upper, vol.In({x.name for x in TaskType}))] + ), + vol.Optional(ATTR_PRIORITY): vol.All( + cv.ensure_list, [vol.All(vol.Upper, vol.In({x.name for x in TaskPriority}))] + ), + vol.Optional(ATTR_TASK): vol.All(cv.ensure_list, [str]), + vol.Optional(ATTR_TAG): vol.All(cv.ensure_list, [str]), + vol.Optional(ATTR_KEYWORD): cv.string, + } +) + SKILL_MAP = { "pickpocket": Skill.PICKPOCKET, "backstab": Skill.BACKSTAB, @@ -403,6 +426,52 @@ def async_setup_services(hass: HomeAssistant) -> None: # noqa: C901 else: return asdict(response.data) + async def get_tasks(call: ServiceCall) -> ServiceResponse: + """Get tasks action.""" + + entry = get_config_entry(hass, call.data[ATTR_CONFIG_ENTRY]) + coordinator = entry.runtime_data + response: list[TaskData] = coordinator.data.tasks + + if types := {TaskType[x] for x in call.data.get(ATTR_TYPE, [])}: + response = [task for task in response if task.Type in types] + + if priority := {TaskPriority[x] for x in call.data.get(ATTR_PRIORITY, [])}: + response = [task for task in response if task.priority in priority] + + if tasks := call.data.get(ATTR_TASK): + response = [ + task + for task in response + if str(task.id) in tasks or task.alias in tasks or task.text in tasks + ] + + if tags := call.data.get(ATTR_TAG): + tag_ids = { + tag.id + for tag in coordinator.data.user.tags + if (tag.name and tag.name.lower()) + in (tag.lower() for tag in tags) # Case-insensitive matching + and tag.id + } + + response = [ + task + for task in response + if any(tag_id in task.tags for tag_id in tag_ids if task.tags) + ] + if keyword := call.data.get(ATTR_KEYWORD): + keyword = keyword.lower() + response = [ + task + for task in response + if (task.text and keyword in task.text.lower()) + or (task.notes and keyword in task.notes.lower()) + or any(keyword in item.text.lower() for item in task.checklist) + ] + result: dict[str, Any] = {"tasks": response} + return result + hass.services.async_register( DOMAIN, SERVICE_API_CALL, @@ -440,3 +509,10 @@ def async_setup_services(hass: HomeAssistant) -> None: # noqa: C901 schema=SERVICE_TRANSFORMATION_SCHEMA, supports_response=SupportsResponse.ONLY, ) + hass.services.async_register( + DOMAIN, + SERVICE_GET_TASKS, + get_tasks, + schema=SERVICE_GET_TASKS_SCHEMA, + supports_response=SupportsResponse.ONLY, + ) diff --git a/homeassistant/components/habitica/services.yaml b/homeassistant/components/habitica/services.yaml index a89c935b630..f3095518290 100644 --- a/homeassistant/components/habitica/services.yaml +++ b/homeassistant/components/habitica/services.yaml @@ -94,3 +94,49 @@ transformation: required: true selector: text: +get_tasks: + fields: + config_entry: *config_entry + filter: + collapsed: true + fields: + type: + required: false + selector: + select: + options: + - "habit" + - "daily" + - "todo" + - "reward" + mode: dropdown + translation_key: "type" + multiple: true + sort: true + priority: + required: false + selector: + select: + options: + - "trivial" + - "easy" + - "medium" + - "hard" + mode: dropdown + translation_key: "priority" + multiple: true + sort: false + task: + required: false + selector: + text: + multiple: true + tag: + required: false + selector: + text: + multiple: true + keyword: + required: false + selector: + text: diff --git a/homeassistant/components/habitica/strings.json b/homeassistant/components/habitica/strings.json index 9fbcf7ad57c..4065915c283 100644 --- a/homeassistant/components/habitica/strings.json +++ b/homeassistant/components/habitica/strings.json @@ -3,6 +3,7 @@ "todos": "To-Do's", "dailies": "Dailies", "config_entry_name": "Select character", + "task_name": "Task name", "unit_tasks": "tasks", "unit_health_points": "HP", "unit_mana_points": "MP", @@ -444,7 +445,7 @@ "description": "Select the skill or spell you want to cast on the task. Only skills corresponding to your character's class can be used." }, "task": { - "name": "Task name", + "name": "[%key:component::habitica::common::task_name%]", "description": "The name (or task ID) of the task you want to target with the skill or spell." } } @@ -558,6 +559,42 @@ "description": "The name of the character you want to use the transformation item on. You can also specify the players username or user ID." } } + }, + "get_tasks": { + "name": "Get tasks", + "description": "Retrieve tasks from your Habitica character.", + "fields": { + "config_entry": { + "name": "[%key:component::habitica::common::config_entry_name%]", + "description": "Choose the Habitica character to retrieve tasks from." + }, + "type": { + "name": "Task type", + "description": "Filter tasks by type." + }, + "priority": { + "name": "Difficulty", + "description": "Filter tasks by difficulty." + }, + "task": { + "name": "[%key:component::habitica::common::task_name%]", + "description": "Select tasks by matching their name (or task ID)." + }, + "tag": { + "name": "Tag", + "description": "Filter tasks that have one or more of the selected tags." + }, + "keyword": { + "name": "Keyword", + "description": "Filter tasks by keyword, searching across titles, notes, and checklists." + } + }, + "sections": { + "filter": { + "name": "Filter options", + "description": "Use the optional filters to narrow the returned tasks." + } + } } }, "selector": { @@ -576,6 +613,22 @@ "seafoam": "Seafoam", "shiny_seed": "Shiny seed" } + }, + "type": { + "options": { + "daily": "Daily", + "habit": "Habit", + "todo": "To-do", + "reward": "Reward" + } + }, + "priority": { + "options": { + "trivial": "Trivial", + "easy": "Easy", + "medium": "Medium", + "hard": "Hard" + } } } } diff --git a/tests/components/habitica/fixtures/tasks.json b/tests/components/habitica/fixtures/tasks.json index a4942063612..3bb646be512 100644 --- a/tests/components/habitica/fixtures/tasks.json +++ b/tests/components/habitica/fixtures/tasks.json @@ -233,13 +233,20 @@ "startDate": "2024-07-06T22:00:00.000Z", "daysOfMonth": [], "weeksOfMonth": [], - "checklist": [], + "checklist": [ + { + "completed": false, + "id": "c8662c16-8cd3-4104-a3b2-b1e54f61b8ca", + "text": "Checklist-item1" + } + ], "reminders": [], "createdAt": "2024-07-07T17:51:53.268Z", "updatedAt": "2024-09-21T22:24:20.154Z", "userId": "5f359083-ef78-4af0-985a-0b2c6d05797c", "isDue": true, - "id": "564b9ac9-c53d-4638-9e7f-1cd96fe19baa" + "id": "564b9ac9-c53d-4638-9e7f-1cd96fe19baa", + "alias": "alias_zahnseide_benutzen" }, { "_id": "f2c85972-1a19-4426-bc6d-ce3337b9d99f", @@ -386,11 +393,17 @@ "history": [], "completed": false, "collapseChecklist": false, - "checklist": [], + "checklist": [ + { + "completed": true, + "id": "c8662c16-8cd3-4104-a3b2-b1e54f61b8ca", + "text": "Checklist-item1" + } + ], "type": "daily", "text": "Fitnessstudio besuchen", "notes": "Ein einstündiges Workout im Fitnessstudio absolvieren.", - "tags": ["51076966-2970-4b40-b6ba-d58c6a756dd7"], + "tags": ["6aa65cbb-dc08-4fdd-9a66-7dedb7ba4cab"], "value": 0, "priority": 2, "attribute": "str", @@ -416,7 +429,10 @@ "type": "todo", "text": "Buch zu Ende lesen", "notes": "Das Buch, das du angefangen hast, bis zum Wochenende fertig lesen.", - "tags": [], + "tags": [ + "20409521-c096-447f-9a90-23e8da615710", + "8515e4ae-2f4b-455a-b4a4-8939e04b1bfd" + ], "value": 0, "priority": 1, "attribute": "str", diff --git a/tests/components/habitica/fixtures/user.json b/tests/components/habitica/fixtures/user.json index e176ca48ea4..d97ad458c77 100644 --- a/tests/components/habitica/fixtures/user.json +++ b/tests/components/habitica/fixtures/user.json @@ -67,6 +67,36 @@ }, "_id": "94cd398c-2240-4320-956e-6d345cf2c0de" }, + "tags": [ + { + "id": "8515e4ae-2f4b-455a-b4a4-8939e04b1bfd", + "name": "Arbeit" + }, + { + "id": "6aa65cbb-dc08-4fdd-9a66-7dedb7ba4cab", + "name": "Training" + }, + { + "id": "20409521-c096-447f-9a90-23e8da615710", + "name": "Gesundheit + Wohlbefinden" + }, + { + "id": "2ac458af-0833-4f3f-bf04-98a0c33ef60b", + "name": "Schule" + }, + { + "id": "1bcb1a0f-4d05-4087-8223-5ea779e258b0", + "name": "Teams" + }, + { + "id": "b2780f82-b3b5-49a3-a677-48f2c8c7e3bb", + "name": "Hausarbeiten" + }, + { + "id": "3450351f-1323-4c7e-9fd2-0cdff25b3ce0", + "name": "Kreativität" + } + ], "needsCron": true, "lastCron": "2024-09-21T22:01:55.586Z", "id": "a380546a-94be-4b8e-8a0b-23e0d5c03303", diff --git a/tests/components/habitica/snapshots/test_sensor.ambr b/tests/components/habitica/snapshots/test_sensor.ambr index 96cb1dfe26f..c9a50494694 100644 --- a/tests/components/habitica/snapshots/test_sensor.ambr +++ b/tests/components/habitica/snapshots/test_sensor.ambr @@ -198,7 +198,7 @@ }), 'start_date': '2024-09-21T22:00:00+00:00', 'tags': list([ - '51076966-2970-4b40-b6ba-d58c6a756dd7', + '6aa65cbb-dc08-4fdd-9a66-7dedb7ba4cab', ]), 'text': 'Fitnessstudio besuchen', 'type': 'daily', @@ -1553,6 +1553,10 @@ 'th': False, 'w': True, }), + 'tags': list([ + '20409521-c096-447f-9a90-23e8da615710', + '8515e4ae-2f4b-455a-b4a4-8939e04b1bfd', + ]), 'text': 'Buch zu Ende lesen', 'type': 'todo', }), diff --git a/tests/components/habitica/snapshots/test_services.ambr b/tests/components/habitica/snapshots/test_services.ambr new file mode 100644 index 00000000000..3030b228d38 --- /dev/null +++ b/tests/components/habitica/snapshots/test_services.ambr @@ -0,0 +1,6229 @@ +# serializer version: 1 +# name: test_get_tasks[all_tasks] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': True, + 'everyX': None, + 'frequency': , + '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('f21fa608-cfc6-4413-9fc7-0eb1b48ca43a'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': '', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Gesundes Essen/Junkfood', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 324000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('1d147de6-5c02-4740-8e2f-71d3015a37f4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': '', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Eine kurze Pause machen', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': True, + 'everyX': None, + 'frequency': , + '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('bc1d1855-b2b8-4663-98ff-62e7b763dfc4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Oder lösche es über die Bearbeitungs-Ansicht', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Klicke hier um dies als schlechte Gewohnheit zu markieren, die Du gerne loswerden möchtest', + 'up': False, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'create_a_task', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 264000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 140000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('e97659e0-2c42-4599-a7bb-00282adc410d'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Eine Gewohnheit, eine Tagesaufgabe oder ein To-Do', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Füge eine Aufgabe zu Habitica hinzu', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'alias_zahnseide_benutzen', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': False, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 6, 749000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 292000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 719000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 9, 44, 56, 907000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 243000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 20, 20, 19, 56, 447000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.07645736684721605, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 692000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.921585289356988, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 640000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.9454824860630637, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 542000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9966001649571803, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 608000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -4.07641493832036, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 9, 21, 22, 24, 20, 150000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9663035443712333, + }), + ]), + 'id': UUID('564b9ac9-c53d-4638-9e7f-1cd96fe19baa'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 23, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 24, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 25, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 26, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 27, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 28, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + ]), + 'notes': 'Klicke um Änderungen zu machen!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Zahnseide benutzen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 24, 20, 154000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -2.9663035443712333, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 17, 55, 3, 74000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 291000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 717000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 7, 20, 59, 722000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 246000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 10, 1, 32, 219000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 2.023365658844519, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 691000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0738942424964806, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 638000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.10103816898038132, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 540000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.8963760215867302, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 607000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.919611992979862, + }), + ]), + 'id': UUID('f2c85972-1a19-4426-bc6d-ce3337b9d99f'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 22, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 23, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 25, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 26, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Klicke um Deinen Terminplan festzulegen!', + 'priority': , + 'reminders': list([ + dict({ + 'id': UUID('1491d640-6b21-4d0c-8940-0b7aa61c8836'), + 'startDate': None, + 'time': datetime.datetime(2024, 9, 22, 20, 0, tzinfo=datetime.timezone.utc), + }), + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + ]), + 'text': '5 Minuten ruhig durchatmen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 51, 41, 756000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -1.919611992979862, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': True, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': False, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + '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('2c6d136c-a1c3-4bef-b7c4-fa980784b1e1'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 28, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 1, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 4, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 8, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Ein einstündiges Workout im Fitnessstudio absolvieren.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': False, + 's': True, + 'su': True, + 't': False, + 'th': False, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 9, 21, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + UUID('6aa65cbb-dc08-4fdd-9a66-7dedb7ba4cab'), + ]), + 'text': 'Fitnessstudio besuchen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'userId': UUID('1343a9af-d891-4027-841a-956d105ca408'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 9, 27, 22, 17, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('88de7cd9-af2b-49ce-9afd-bf941d87336b'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Das Buch, das du angefangen hast, bis zum Wochenende fertig lesen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('20409521-c096-447f-9a90-23e8da615710'), + UUID('8515e4ae-2f4b-455a-b4a4-8939e04b1bfd'), + ]), + 'text': 'Buch zu Ende lesen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'pay_bills', + 'attribute': , + '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, 9, 21, 22, 17, 19, 513000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 8, 31, 22, 16, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('2f6fcabc-f670-4ec3-ba65-817e8deea490'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Strom- und Internetrechnungen rechtzeitig überweisen.', + 'priority': , + 'reminders': list([ + dict({ + 'id': UUID('91c09432-10ac-4a49-bd20-823081ec29ed'), + 'startDate': None, + 'time': datetime.datetime(2024, 9, 22, 2, 0, tzinfo=datetime.timezone.utc), + }), + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Rechnungen bezahlen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 19, 35, 576000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 16, 38, 153000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('1aa3137e-ef72-4d1f-91ee-41933602f438'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Rasen mähen und die Pflanzen gießen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Garten pflegen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 16, 38, 153000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 16, 16, 756000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 9, 21, 22, 0, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('86ea2475-d1b5-4020-bdcc-c188c7996afa'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Den Ausflug für das kommende Wochenende organisieren.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('51076966-2970-4b40-b6ba-d58c6a756dd7'), + ]), + 'text': 'Wochenendausflug planen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 16, 16, 756000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('5e2ea1df-f6e6-4ba3-bccb-97c5ec63e99b'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Schaue fern, spiele ein Spiel, gönne Dir einen Leckerbissen, es liegt ganz bei Dir!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Belohne Dich selbst', + 'up': None, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 10.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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': , + '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('6e53f1f5-a315-4edd-984d-8d762e4a08ef'), + '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': 'Klicke um den Namen Deines aktuellen Projekts anzugeben & setze einen Terminplan!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': False, + 's': False, + 'su': True, + 't': False, + 'th': False, + 'w': False, + }), + 'startDate': datetime.datetime(2024, 9, 20, 23, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Arbeite an einem kreativen Projekt', + '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([ + 3, + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 21, 22, 19, 10, 919000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('162f0bbe-a097-4a06-b4f4-8fbeed85d2ba'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Lebensmittel und Haushaltsbedarf für die Woche einkaufen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('64235347-55d0-4ba1-a86a-3428dcfdf319'), + ]), + 'text': 'Wocheneinkauf erledigen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 19, 15, 484000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 1.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 21, 22, 18, 30, 646000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('3fa06743-aa0f-472b-af1a-f27c755e329c'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Wohnzimmer und Küche gründlich aufräumen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('64235347-55d0-4ba1-a86a-3428dcfdf319'), + ]), + 'text': 'Wohnung aufräumen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 18, 34, 663000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 1.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + ]), + }) +# --- +# name: test_get_tasks[by alias] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': 'alias_zahnseide_benutzen', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': False, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 6, 749000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 292000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 719000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 9, 44, 56, 907000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 243000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 20, 20, 19, 56, 447000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.07645736684721605, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 692000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.921585289356988, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 640000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.9454824860630637, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 542000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9966001649571803, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 608000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -4.07641493832036, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 9, 21, 22, 24, 20, 150000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9663035443712333, + }), + ]), + 'id': UUID('564b9ac9-c53d-4638-9e7f-1cd96fe19baa'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 23, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 24, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 25, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 26, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 27, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 28, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + ]), + 'notes': 'Klicke um Änderungen zu machen!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Zahnseide benutzen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 24, 20, 154000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -2.9663035443712333, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + ]), + }) +# --- +# name: test_get_tasks[by keyword] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': True, + 'everyX': None, + 'frequency': , + '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('bc1d1855-b2b8-4663-98ff-62e7b763dfc4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Oder lösche es über die Bearbeitungs-Ansicht', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Klicke hier um dies als schlechte Gewohnheit zu markieren, die Du gerne loswerden möchtest', + 'up': False, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'create_a_task', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 264000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 140000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('e97659e0-2c42-4599-a7bb-00282adc410d'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Eine Gewohnheit, eine Tagesaufgabe oder ein To-Do', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Füge eine Aufgabe zu Habitica hinzu', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + ]), + }) +# --- +# name: test_get_tasks[by tag] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': True, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': False, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + '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('2c6d136c-a1c3-4bef-b7c4-fa980784b1e1'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 28, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 1, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 4, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 8, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Ein einstündiges Workout im Fitnessstudio absolvieren.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': False, + 's': True, + 'su': True, + 't': False, + 'th': False, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 9, 21, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + UUID('6aa65cbb-dc08-4fdd-9a66-7dedb7ba4cab'), + ]), + 'text': 'Fitnessstudio besuchen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'userId': UUID('1343a9af-d891-4027-841a-956d105ca408'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 9, 27, 22, 17, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('88de7cd9-af2b-49ce-9afd-bf941d87336b'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Das Buch, das du angefangen hast, bis zum Wochenende fertig lesen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('20409521-c096-447f-9a90-23e8da615710'), + UUID('8515e4ae-2f4b-455a-b4a4-8939e04b1bfd'), + ]), + 'text': 'Buch zu Ende lesen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + ]), + }) +# --- +# name: test_get_tasks[by task ID] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 17, 55, 3, 74000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 291000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 717000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 7, 20, 59, 722000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 246000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 10, 1, 32, 219000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 2.023365658844519, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 691000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0738942424964806, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 638000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.10103816898038132, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 540000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.8963760215867302, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 607000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.919611992979862, + }), + ]), + 'id': UUID('f2c85972-1a19-4426-bc6d-ce3337b9d99f'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 22, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 23, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 25, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 26, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Klicke um Deinen Terminplan festzulegen!', + 'priority': , + 'reminders': list([ + dict({ + 'id': UUID('1491d640-6b21-4d0c-8940-0b7aa61c8836'), + 'startDate': None, + 'time': datetime.datetime(2024, 9, 22, 20, 0, tzinfo=datetime.timezone.utc), + }), + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + ]), + 'text': '5 Minuten ruhig durchatmen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 51, 41, 756000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -1.919611992979862, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + ]), + }) +# --- +# name: test_get_tasks[by task name] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 324000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('1d147de6-5c02-4740-8e2f-71d3015a37f4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': '', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Eine kurze Pause machen', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'alias_zahnseide_benutzen', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': False, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 6, 749000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 292000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 719000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 9, 44, 56, 907000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 243000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 20, 20, 19, 56, 447000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.07645736684721605, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 692000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.921585289356988, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 640000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.9454824860630637, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 542000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9966001649571803, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 608000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -4.07641493832036, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 9, 21, 22, 24, 20, 150000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9663035443712333, + }), + ]), + 'id': UUID('564b9ac9-c53d-4638-9e7f-1cd96fe19baa'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 23, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 24, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 25, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 26, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 27, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 28, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + ]), + 'notes': 'Klicke um Änderungen zu machen!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Zahnseide benutzen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 24, 20, 154000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -2.9663035443712333, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + ]), + }) +# --- +# name: test_get_tasks[easy tasks] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': True, + 'everyX': None, + 'frequency': , + '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('f21fa608-cfc6-4413-9fc7-0eb1b48ca43a'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': '', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Gesundes Essen/Junkfood', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 324000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('1d147de6-5c02-4740-8e2f-71d3015a37f4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': '', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Eine kurze Pause machen', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': True, + 'everyX': None, + 'frequency': , + '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('bc1d1855-b2b8-4663-98ff-62e7b763dfc4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Oder lösche es über die Bearbeitungs-Ansicht', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Klicke hier um dies als schlechte Gewohnheit zu markieren, die Du gerne loswerden möchtest', + 'up': False, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'create_a_task', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 264000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 140000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('e97659e0-2c42-4599-a7bb-00282adc410d'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Eine Gewohnheit, eine Tagesaufgabe oder ein To-Do', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Füge eine Aufgabe zu Habitica hinzu', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'alias_zahnseide_benutzen', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': False, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 6, 749000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 292000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 719000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 9, 44, 56, 907000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 243000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 20, 20, 19, 56, 447000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.07645736684721605, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 692000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.921585289356988, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 640000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.9454824860630637, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 542000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9966001649571803, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 608000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -4.07641493832036, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 9, 21, 22, 24, 20, 150000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9663035443712333, + }), + ]), + 'id': UUID('564b9ac9-c53d-4638-9e7f-1cd96fe19baa'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 23, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 24, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 25, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 26, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 27, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 28, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + ]), + 'notes': 'Klicke um Änderungen zu machen!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Zahnseide benutzen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 24, 20, 154000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -2.9663035443712333, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 17, 55, 3, 74000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 291000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 717000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 7, 20, 59, 722000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 246000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 10, 1, 32, 219000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 2.023365658844519, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 691000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0738942424964806, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 638000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.10103816898038132, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 540000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.8963760215867302, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 607000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.919611992979862, + }), + ]), + 'id': UUID('f2c85972-1a19-4426-bc6d-ce3337b9d99f'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 22, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 23, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 25, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 26, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Klicke um Deinen Terminplan festzulegen!', + 'priority': , + 'reminders': list([ + dict({ + 'id': UUID('1491d640-6b21-4d0c-8940-0b7aa61c8836'), + 'startDate': None, + 'time': datetime.datetime(2024, 9, 22, 20, 0, tzinfo=datetime.timezone.utc), + }), + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + ]), + 'text': '5 Minuten ruhig durchatmen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 51, 41, 756000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -1.919611992979862, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 9, 27, 22, 17, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('88de7cd9-af2b-49ce-9afd-bf941d87336b'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Das Buch, das du angefangen hast, bis zum Wochenende fertig lesen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('20409521-c096-447f-9a90-23e8da615710'), + UUID('8515e4ae-2f4b-455a-b4a4-8939e04b1bfd'), + ]), + 'text': 'Buch zu Ende lesen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'pay_bills', + 'attribute': , + '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, 9, 21, 22, 17, 19, 513000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 8, 31, 22, 16, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('2f6fcabc-f670-4ec3-ba65-817e8deea490'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Strom- und Internetrechnungen rechtzeitig überweisen.', + 'priority': , + 'reminders': list([ + dict({ + 'id': UUID('91c09432-10ac-4a49-bd20-823081ec29ed'), + 'startDate': None, + 'time': datetime.datetime(2024, 9, 22, 2, 0, tzinfo=datetime.timezone.utc), + }), + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Rechnungen bezahlen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 19, 35, 576000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 16, 38, 153000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('1aa3137e-ef72-4d1f-91ee-41933602f438'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Rasen mähen und die Pflanzen gießen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Garten pflegen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 16, 38, 153000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 16, 16, 756000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 9, 21, 22, 0, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('86ea2475-d1b5-4020-bdcc-c188c7996afa'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Den Ausflug für das kommende Wochenende organisieren.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('51076966-2970-4b40-b6ba-d58c6a756dd7'), + ]), + 'text': 'Wochenendausflug planen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 16, 16, 756000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('5e2ea1df-f6e6-4ba3-bccb-97c5ec63e99b'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Schaue fern, spiele ein Spiel, gönne Dir einen Leckerbissen, es liegt ganz bei Dir!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Belohne Dich selbst', + 'up': None, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 10.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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': , + '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('6e53f1f5-a315-4edd-984d-8d762e4a08ef'), + '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': 'Klicke um den Namen Deines aktuellen Projekts anzugeben & setze einen Terminplan!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': False, + 's': False, + 'su': True, + 't': False, + 'th': False, + 'w': False, + }), + 'startDate': datetime.datetime(2024, 9, 20, 23, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Arbeite an einem kreativen Projekt', + '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([ + 3, + ]), + 'yesterDaily': True, + }), + ]), + }) +# --- +# name: test_get_tasks[empty result] + dict({ + 'tasks': list([ + ]), + }) +# --- +# name: test_get_tasks[hard tasks] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': True, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': False, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + '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('2c6d136c-a1c3-4bef-b7c4-fa980784b1e1'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 28, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 1, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 4, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 8, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Ein einstündiges Workout im Fitnessstudio absolvieren.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': False, + 's': True, + 'su': True, + 't': False, + 'th': False, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 9, 21, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + UUID('6aa65cbb-dc08-4fdd-9a66-7dedb7ba4cab'), + ]), + 'text': 'Fitnessstudio besuchen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'userId': UUID('1343a9af-d891-4027-841a-956d105ca408'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 21, 22, 18, 30, 646000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('3fa06743-aa0f-472b-af1a-f27c755e329c'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Wohnzimmer und Küche gründlich aufräumen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('64235347-55d0-4ba1-a86a-3428dcfdf319'), + ]), + 'text': 'Wohnung aufräumen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 18, 34, 663000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 1.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + ]), + }) +# --- +# name: test_get_tasks[medium tasks] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 21, 22, 19, 10, 919000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('162f0bbe-a097-4a06-b4f4-8fbeed85d2ba'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Lebensmittel und Haushaltsbedarf für die Woche einkaufen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('64235347-55d0-4ba1-a86a-3428dcfdf319'), + ]), + 'text': 'Wocheneinkauf erledigen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 19, 15, 484000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 1.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + ]), + }) +# --- +# name: test_get_tasks[only dailies and habits] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': True, + 'everyX': None, + 'frequency': , + '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('f21fa608-cfc6-4413-9fc7-0eb1b48ca43a'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': '', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Gesundes Essen/Junkfood', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 324000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('1d147de6-5c02-4740-8e2f-71d3015a37f4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': '', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Eine kurze Pause machen', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': True, + 'everyX': None, + 'frequency': , + '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('bc1d1855-b2b8-4663-98ff-62e7b763dfc4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Oder lösche es über die Bearbeitungs-Ansicht', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Klicke hier um dies als schlechte Gewohnheit zu markieren, die Du gerne loswerden möchtest', + 'up': False, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'create_a_task', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 264000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 140000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('e97659e0-2c42-4599-a7bb-00282adc410d'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Eine Gewohnheit, eine Tagesaufgabe oder ein To-Do', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Füge eine Aufgabe zu Habitica hinzu', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'alias_zahnseide_benutzen', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': False, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 6, 749000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 292000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 719000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 9, 44, 56, 907000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 243000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 20, 20, 19, 56, 447000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.07645736684721605, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 692000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.921585289356988, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 640000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.9454824860630637, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 542000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9966001649571803, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 608000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -4.07641493832036, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 9, 21, 22, 24, 20, 150000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9663035443712333, + }), + ]), + 'id': UUID('564b9ac9-c53d-4638-9e7f-1cd96fe19baa'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 23, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 24, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 25, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 26, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 27, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 28, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + ]), + 'notes': 'Klicke um Änderungen zu machen!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Zahnseide benutzen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 24, 20, 154000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -2.9663035443712333, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 17, 55, 3, 74000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 291000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 717000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 7, 20, 59, 722000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 246000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 10, 1, 32, 219000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 2.023365658844519, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 691000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0738942424964806, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 638000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.10103816898038132, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 540000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.8963760215867302, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 607000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.919611992979862, + }), + ]), + 'id': UUID('f2c85972-1a19-4426-bc6d-ce3337b9d99f'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 22, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 23, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 25, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 26, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Klicke um Deinen Terminplan festzulegen!', + 'priority': , + 'reminders': list([ + dict({ + 'id': UUID('1491d640-6b21-4d0c-8940-0b7aa61c8836'), + 'startDate': None, + 'time': datetime.datetime(2024, 9, 22, 20, 0, tzinfo=datetime.timezone.utc), + }), + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + ]), + 'text': '5 Minuten ruhig durchatmen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 51, 41, 756000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -1.919611992979862, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': True, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': False, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + '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('2c6d136c-a1c3-4bef-b7c4-fa980784b1e1'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 28, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 1, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 4, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 8, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Ein einstündiges Workout im Fitnessstudio absolvieren.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': False, + 's': True, + 'su': True, + 't': False, + 'th': False, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 9, 21, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + UUID('6aa65cbb-dc08-4fdd-9a66-7dedb7ba4cab'), + ]), + 'text': 'Fitnessstudio besuchen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'userId': UUID('1343a9af-d891-4027-841a-956d105ca408'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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': , + '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('6e53f1f5-a315-4edd-984d-8d762e4a08ef'), + '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': 'Klicke um den Namen Deines aktuellen Projekts anzugeben & setze einen Terminplan!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': False, + 's': False, + 'su': True, + 't': False, + 'th': False, + 'w': False, + }), + 'startDate': datetime.datetime(2024, 9, 20, 23, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Arbeite an einem kreativen Projekt', + '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([ + 3, + ]), + 'yesterDaily': True, + }), + ]), + }) +# --- +# name: test_get_tasks[only dailies] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': 'alias_zahnseide_benutzen', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': False, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 6, 749000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 292000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 719000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 9, 44, 56, 907000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 243000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 20, 20, 19, 56, 447000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.07645736684721605, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 692000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.921585289356988, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 640000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.9454824860630637, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 542000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9966001649571803, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 608000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -4.07641493832036, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 9, 21, 22, 24, 20, 150000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -2.9663035443712333, + }), + ]), + 'id': UUID('564b9ac9-c53d-4638-9e7f-1cd96fe19baa'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 23, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 24, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 25, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 26, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 27, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + datetime.datetime(2024, 9, 28, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200), 'GMT')), + ]), + 'notes': 'Klicke um Änderungen zu machen!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Zahnseide benutzen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 24, 20, 154000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -2.9663035443712333, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 7, 17, 55, 3, 74000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 17, 15, 11, 291000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.02529999999999999, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 7, 9, 22, 31, 46, 717000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.9740518837628547, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 11, 7, 20, 59, 722000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.051222853419153, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 9, 58, 45, 246000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0499115128458676, + }), + dict({ + 'completed': True, + 'date': datetime.datetime(2024, 7, 12, 10, 1, 32, 219000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 2.023365658844519, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 8, 21, 15, 55, 7, 691000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 1.0738942424964806, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 20, 15, 29, 23, 638000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': 0.10103816898038132, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 21, 23, 7, 540000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -0.8963760215867302, + }), + dict({ + 'completed': False, + 'date': datetime.datetime(2024, 9, 21, 22, 1, 55, 607000, tzinfo=datetime.timezone.utc), + 'isDue': True, + 'scoredDown': None, + 'scoredUp': None, + 'value': -1.919611992979862, + }), + ]), + 'id': UUID('f2c85972-1a19-4426-bc6d-ce3337b9d99f'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 22, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 23, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 25, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 26, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Klicke um Deinen Terminplan festzulegen!', + 'priority': , + 'reminders': list([ + dict({ + 'id': UUID('1491d640-6b21-4d0c-8940-0b7aa61c8836'), + 'startDate': None, + 'time': datetime.datetime(2024, 9, 22, 20, 0, tzinfo=datetime.timezone.utc), + }), + ]), + 'repeat': dict({ + 'f': True, + 'm': True, + 's': True, + 'su': True, + 't': True, + 'th': True, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 7, 6, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + ]), + 'text': '5 Minuten ruhig durchatmen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 51, 41, 756000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': -1.919611992979862, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + dict({ + 'completed': True, + 'id': UUID('c8662c16-8cd3-4104-a3b2-b1e54f61b8ca'), + 'text': 'Checklist-item1', + }), + ]), + 'collapseChecklist': False, + 'completed': False, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': 1, + 'frequency': , + '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('2c6d136c-a1c3-4bef-b7c4-fa980784b1e1'), + 'isDue': True, + 'nextDue': list([ + datetime.datetime(2024, 9, 24, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 27, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 9, 28, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 1, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 4, 22, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 10, 8, 22, 0, tzinfo=datetime.timezone.utc), + ]), + 'notes': 'Ein einstündiges Workout im Fitnessstudio absolvieren.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': False, + 's': True, + 'su': True, + 't': False, + 'th': False, + 'w': True, + }), + 'startDate': datetime.datetime(2024, 9, 21, 22, 0, tzinfo=datetime.timezone.utc), + 'streak': 0, + 'tags': list([ + UUID('6aa65cbb-dc08-4fdd-9a66-7dedb7ba4cab'), + ]), + 'text': 'Fitnessstudio besuchen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 22, 11, 44, 43, 774000, tzinfo=datetime.timezone.utc), + 'userId': UUID('1343a9af-d891-4027-841a-956d105ca408'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': True, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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': , + '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('6e53f1f5-a315-4edd-984d-8d762e4a08ef'), + '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': 'Klicke um den Namen Deines aktuellen Projekts anzugeben & setze einen Terminplan!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': False, + 's': False, + 'su': True, + 't': False, + 'th': False, + 'w': False, + }), + 'startDate': datetime.datetime(2024, 9, 20, 23, 0, tzinfo=datetime.timezone.utc), + 'streak': 1, + 'tags': list([ + ]), + 'text': 'Arbeite an einem kreativen Projekt', + '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([ + 3, + ]), + 'yesterDaily': True, + }), + ]), + }) +# --- +# name: test_get_tasks[only habits] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': True, + 'everyX': None, + 'frequency': , + '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('f21fa608-cfc6-4413-9fc7-0eb1b48ca43a'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': '', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Gesundes Essen/Junkfood', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 268000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 324000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('1d147de6-5c02-4740-8e2f-71d3015a37f4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': '', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Eine kurze Pause machen', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': True, + 'everyX': None, + 'frequency': , + '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('bc1d1855-b2b8-4663-98ff-62e7b763dfc4'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Oder lösche es über die Bearbeitungs-Ansicht', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Klicke hier um dies als schlechte Gewohnheit zu markieren, die Du gerne loswerden möchtest', + 'up': False, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 265000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'create_a_task', + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': 0, + 'counterUp': 0, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 264000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': False, + 'everyX': None, + 'frequency': , + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': list([ + dict({ + 'completed': None, + 'date': datetime.datetime(2024, 7, 7, 18, 26, 3, 140000, tzinfo=datetime.timezone.utc), + 'isDue': None, + 'scoredDown': 0, + 'scoredUp': 1, + 'value': 1.0, + }), + ]), + 'id': UUID('e97659e0-2c42-4599-a7bb-00282adc410d'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Eine Gewohnheit, eine Tagesaufgabe oder ein To-Do', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Füge eine Aufgabe zu Habitica hinzu', + 'up': True, + 'updatedAt': datetime.datetime(2024, 7, 12, 9, 58, 45, 438000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + ]), + }) +# --- +# name: test_get_tasks[only rewards] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('5e2ea1df-f6e6-4ba3-bccb-97c5ec63e99b'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Schaue fern, spiele ein Spiel, gönne Dir einen Leckerbissen, es liegt ganz bei Dir!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Belohne Dich selbst', + 'up': None, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 10.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + ]), + }) +# --- +# name: test_get_tasks[only todos and rewards] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 9, 27, 22, 17, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('88de7cd9-af2b-49ce-9afd-bf941d87336b'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Das Buch, das du angefangen hast, bis zum Wochenende fertig lesen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('20409521-c096-447f-9a90-23e8da615710'), + UUID('8515e4ae-2f4b-455a-b4a4-8939e04b1bfd'), + ]), + 'text': 'Buch zu Ende lesen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'pay_bills', + 'attribute': , + '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, 9, 21, 22, 17, 19, 513000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 8, 31, 22, 16, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('2f6fcabc-f670-4ec3-ba65-817e8deea490'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Strom- und Internetrechnungen rechtzeitig überweisen.', + 'priority': , + 'reminders': list([ + dict({ + 'id': UUID('91c09432-10ac-4a49-bd20-823081ec29ed'), + 'startDate': None, + 'time': datetime.datetime(2024, 9, 22, 2, 0, tzinfo=datetime.timezone.utc), + }), + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Rechnungen bezahlen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 19, 35, 576000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 16, 38, 153000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('1aa3137e-ef72-4d1f-91ee-41933602f438'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Rasen mähen und die Pflanzen gießen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Garten pflegen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 16, 38, 153000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 16, 16, 756000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 9, 21, 22, 0, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('86ea2475-d1b5-4020-bdcc-c188c7996afa'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Den Ausflug für das kommende Wochenende organisieren.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('51076966-2970-4b40-b6ba-d58c6a756dd7'), + ]), + 'text': 'Wochenendausflug planen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 16, 16, 756000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': None, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('5e2ea1df-f6e6-4ba3-bccb-97c5ec63e99b'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Schaue fern, spiele ein Spiel, gönne Dir einen Leckerbissen, es liegt ganz bei Dir!', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Belohne Dich selbst', + 'up': None, + 'updatedAt': datetime.datetime(2024, 7, 7, 17, 51, 53, 266000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 10.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 21, 22, 19, 10, 919000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('162f0bbe-a097-4a06-b4f4-8fbeed85d2ba'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Lebensmittel und Haushaltsbedarf für die Woche einkaufen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('64235347-55d0-4ba1-a86a-3428dcfdf319'), + ]), + 'text': 'Wocheneinkauf erledigen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 19, 15, 484000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 1.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 21, 22, 18, 30, 646000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('3fa06743-aa0f-472b-af1a-f27c755e329c'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Wohnzimmer und Küche gründlich aufräumen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('64235347-55d0-4ba1-a86a-3428dcfdf319'), + ]), + 'text': 'Wohnung aufräumen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 18, 34, 663000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 1.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + ]), + }) +# --- +# name: test_get_tasks[only todos] + dict({ + 'tasks': list([ + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 9, 27, 22, 17, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('88de7cd9-af2b-49ce-9afd-bf941d87336b'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Das Buch, das du angefangen hast, bis zum Wochenende fertig lesen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('20409521-c096-447f-9a90-23e8da615710'), + UUID('8515e4ae-2f4b-455a-b4a4-8939e04b1bfd'), + ]), + 'text': 'Buch zu Ende lesen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 17, 57, 816000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': 'pay_bills', + 'attribute': , + '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, 9, 21, 22, 17, 19, 513000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 8, 31, 22, 16, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('2f6fcabc-f670-4ec3-ba65-817e8deea490'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Strom- und Internetrechnungen rechtzeitig überweisen.', + 'priority': , + 'reminders': list([ + dict({ + 'id': UUID('91c09432-10ac-4a49-bd20-823081ec29ed'), + 'startDate': None, + 'time': datetime.datetime(2024, 9, 22, 2, 0, tzinfo=datetime.timezone.utc), + }), + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Rechnungen bezahlen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 19, 35, 576000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 16, 38, 153000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('1aa3137e-ef72-4d1f-91ee-41933602f438'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Rasen mähen und die Pflanzen gießen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + ]), + 'text': 'Garten pflegen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 16, 38, 153000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + '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, 9, 21, 22, 16, 16, 756000, tzinfo=datetime.timezone.utc), + 'date': datetime.datetime(2024, 9, 21, 22, 0, tzinfo=datetime.timezone.utc), + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('86ea2475-d1b5-4020-bdcc-c188c7996afa'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Den Ausflug für das kommende Wochenende organisieren.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('51076966-2970-4b40-b6ba-d58c6a756dd7'), + ]), + 'text': 'Wochenendausflug planen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 16, 16, 756000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 0.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 21, 22, 19, 10, 919000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('162f0bbe-a097-4a06-b4f4-8fbeed85d2ba'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Lebensmittel und Haushaltsbedarf für die Woche einkaufen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('64235347-55d0-4ba1-a86a-3428dcfdf319'), + ]), + 'text': 'Wocheneinkauf erledigen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 19, 15, 484000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 1.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + dict({ + 'Type': , + 'alias': None, + 'attribute': , + 'byHabitica': False, + 'challenge': dict({ + 'broken': None, + 'id': None, + 'shortName': None, + 'taskId': None, + 'winner': None, + }), + 'checklist': list([ + ]), + 'collapseChecklist': False, + 'completed': True, + 'counterDown': None, + 'counterUp': None, + 'createdAt': datetime.datetime(2024, 9, 21, 22, 18, 30, 646000, tzinfo=datetime.timezone.utc), + 'date': None, + 'daysOfMonth': list([ + ]), + 'down': None, + 'everyX': None, + 'frequency': None, + 'group': dict({ + 'assignedDate': None, + 'assignedUsers': list([ + ]), + 'assignedUsersDetail': dict({ + }), + 'assigningUsername': None, + 'completedBy': dict({ + 'date': None, + 'userId': None, + }), + 'id': None, + 'managerNotes': None, + 'taskId': None, + }), + 'history': None, + 'id': UUID('3fa06743-aa0f-472b-af1a-f27c755e329c'), + 'isDue': None, + 'nextDue': list([ + ]), + 'notes': 'Wohnzimmer und Küche gründlich aufräumen.', + 'priority': , + 'reminders': list([ + ]), + 'repeat': dict({ + 'f': False, + 'm': True, + 's': False, + 'su': False, + 't': True, + 'th': False, + 'w': True, + }), + 'startDate': None, + 'streak': None, + 'tags': list([ + UUID('64235347-55d0-4ba1-a86a-3428dcfdf319'), + ]), + 'text': 'Wohnung aufräumen', + 'up': None, + 'updatedAt': datetime.datetime(2024, 9, 21, 22, 18, 34, 663000, tzinfo=datetime.timezone.utc), + 'userId': UUID('5f359083-ef78-4af0-985a-0b2c6d05797c'), + 'value': 1.0, + 'weeksOfMonth': list([ + ]), + 'yesterDaily': None, + }), + ]), + }) +# --- +# name: test_get_tasks[trivial tasks] + dict({ + 'tasks': list([ + ]), + }) +# --- diff --git a/tests/components/habitica/test_services.py b/tests/components/habitica/test_services.py index fb40110f2b0..3ada16b9735 100644 --- a/tests/components/habitica/test_services.py +++ b/tests/components/habitica/test_services.py @@ -7,19 +7,25 @@ from uuid import UUID from habiticalib import Direction, Skill import pytest +from syrupy.assertion import SnapshotAssertion from homeassistant.components.habitica.const import ( ATTR_CONFIG_ENTRY, ATTR_DIRECTION, ATTR_ITEM, + ATTR_KEYWORD, + ATTR_PRIORITY, ATTR_SKILL, + ATTR_TAG, ATTR_TARGET, ATTR_TASK, + ATTR_TYPE, DOMAIN, SERVICE_ABORT_QUEST, SERVICE_ACCEPT_QUEST, SERVICE_CANCEL_QUEST, SERVICE_CAST_SKILL, + SERVICE_GET_TASKS, SERVICE_LEAVE_QUEST, SERVICE_REJECT_QUEST, SERVICE_SCORE_HABIT, @@ -775,3 +781,67 @@ async def test_transformation_exceptions( return_response=True, blocking=True, ) + + +@pytest.mark.parametrize( + ("service_data"), + [ + {}, + {ATTR_TYPE: ["daily"]}, + {ATTR_TYPE: ["habit"]}, + {ATTR_TYPE: ["todo"]}, + {ATTR_TYPE: ["reward"]}, + {ATTR_TYPE: ["daily", "habit"]}, + {ATTR_TYPE: ["todo", "reward"]}, + {ATTR_PRIORITY: "trivial"}, + {ATTR_PRIORITY: "easy"}, + {ATTR_PRIORITY: "medium"}, + {ATTR_PRIORITY: "hard"}, + {ATTR_TASK: ["Zahnseide benutzen", "Eine kurze Pause machen"]}, + {ATTR_TASK: ["f2c85972-1a19-4426-bc6d-ce3337b9d99f"]}, + {ATTR_TASK: ["alias_zahnseide_benutzen"]}, + {ATTR_TAG: ["Training", "Gesundheit + Wohlbefinden"]}, + {ATTR_KEYWORD: "gewohnheit"}, + {ATTR_TAG: ["Home Assistant"]}, + ], + ids=[ + "all_tasks", + "only dailies", + "only habits", + "only todos", + "only rewards", + "only dailies and habits", + "only todos and rewards", + "trivial tasks", + "easy tasks", + "medium tasks", + "hard tasks", + "by task name", + "by task ID", + "by alias", + "by tag", + "by keyword", + "empty result", + ], +) +@pytest.mark.usefixtures("habitica") +async def test_get_tasks( + hass: HomeAssistant, + config_entry: MockConfigEntry, + snapshot: SnapshotAssertion, + service_data: dict[str, Any], +) -> None: + """Test Habitica get_tasks action.""" + + response = await hass.services.async_call( + DOMAIN, + SERVICE_GET_TASKS, + service_data={ + ATTR_CONFIG_ENTRY: config_entry.entry_id, + **service_data, + }, + return_response=True, + blocking=True, + ) + + assert response == snapshot