diff --git a/app/database/models.py b/app/database/models.py index 9e52a195..babe39f5 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -37,10 +37,17 @@ class User(Base): events = relationship("UserEvent", back_populates="participants") + weekly_tasks = relationship( + "WeeklyTask", cascade="all, delete", back_populates="owner") + + tasks = relationship( + "Task", cascade="all, delete", back_populates="owner") + def __repr__(self): return f'' + class Event(Base): __tablename__ = "events" @@ -110,6 +117,34 @@ def __repr__(self): ) +class Task(Base): + __tablename__ = "tasks" + + id = Column(Integer, primary_key=True, index=True) + title = Column(String) + content = Column(String) + is_done = Column(Boolean, nullable=False) + is_important = Column(Boolean, nullable=False) + date_time = Column(DateTime, nullable=False) + owner_id = Column(Integer, ForeignKey("users.id")) + + owner = relationship("User", back_populates="tasks") + + +class WeeklyTask(Base): + __tablename__ = "weekly_task" + + id = Column(Integer, primary_key=True, index=True) + title = Column(String) + days = Column(String, nullable=False) + content = Column(String) + is_important = Column(Boolean, nullable=False) + the_time = Column(String, nullable=False) + owner_id = Column(Integer, ForeignKey("users.id")) + + owner = relationship("User", back_populates="weekly_tasks") + + class Quote(Base): __tablename__ = "quotes" diff --git a/app/internal/weekly_tasks.py b/app/internal/weekly_tasks.py new file mode 100644 index 00000000..6711c338 --- /dev/null +++ b/app/internal/weekly_tasks.py @@ -0,0 +1,129 @@ +from datetime import date ,datetime, time +from typing import Tuple + +from app.database.models import User, Task, WeeklyTask +from sqlalchemy.orm.session import Session + + +def check_inputs(days: str, the_time: time, title: str) -> bool: + """Checks inputs, used by the make_or_change_weekly_task function""" + if not days or days == "" or not the_time or not title or title == "": + return False + return True + + +def make_or_change_weekly_task( + user: User, session: Session, + mode: str, weekly_task_id: int, + title: str, days: str, + content: str, is_important: bool, + the_time: time) -> Tuple[bool, WeeklyTask]: + """This function is being used to add a Weekly Task to the user + or to edit an existing Weekly Task the user have. + + Args: + user (User): The user who wants to add or edit the Weekly Task. + session (Session): The session to redirect to the database. + mode (str): Determines whether in Add or Edit mode. + weekly_task_id (int): In edit mode, represents the weekly task being edited. + title (str): Title of the Weekly Task. + days (str): Return days of the Weekly Task. + content (str): Content of the Weekly Task. + is_important (bool): If the task is important. + the_time (time): Return time of the Weekly Task. + + Returns: + Tuple: Boolean variable which shows if the change has been made to the db. + and the model WeeklyTask which the function made so far. + """ + weekly_task = WeeklyTask( + title=title, + content=content, + is_important=is_important, + owner_id=user.id + ) + + if weekly_task_id: + weekly_task.id = weekly_task_id + + inputs_ok = check_inputs(days, the_time, title) + if not inputs_ok: + return False, weekly_task + + weekly_task.days = days + weekly_task.the_time = the_time.strftime("%H:%M") + + if mode == "add": + user_titles = (user_weekly_task.title for user_weekly_task in user.weekly_tasks) + if title in user_titles: + return False, weekly_task + session.add(weekly_task) + session.commit() + return True, weekly_task + + else: # if mode == "edit" + old_weekly_task = session.query(WeeklyTask).filter_by(id=weekly_task.id).first() + + user_titles = ( + user_weekly_task.title for user_weekly_task in user.weekly_tasks + if user_weekly_task.title != old_weekly_task.title + ) + + if title in user_titles: + return False, weekly_task + + if old_weekly_task.owner_id != weekly_task.owner_id: + return False, weekly_task + + old_weekly_task.title = weekly_task.title + old_weekly_task.days = weekly_task.days + old_weekly_task.content = weekly_task.content + old_weekly_task.is_important = weekly_task.is_important + old_weekly_task.the_time = weekly_task.the_time + session.commit() + return True, weekly_task + + +def make_task(task: Task, user: User, session: Session) -> bool: + """Make a task, used by the generate_tasks function""" + user_tasks_query = session.query(Task).filter_by(owner_id=user.id) + task_exist = user_tasks_query.filter_by(date_time=task.date_time, title=task.title).first() + if not task_exist: + session.add(task) + session.commit() + return True + return False + + +def generate_tasks(session: Session, user: User): + """Generates tasks for the week + based on all the weekly tasks the user have""" + current_date = date.today() + current_week_num = current_date.strftime("%W") + current_year = current_date.strftime("%Y") + + for weekly_task in user.weekly_tasks: + the_time = weekly_task.the_time + days = weekly_task.days.split(", ") + for day in days: + date_string = f"{day} {the_time} {current_week_num} {current_year}" + date_time = datetime.strptime(date_string, "%a %H:%M %W %Y") + task = Task( + title=weekly_task.title, + content=weekly_task.content, + is_done=False, + is_important=weekly_task.is_important, + date_time=date_time, + owner_id=user.id + ) + make_task(task, user, session) + + +def remove_weekly_task(weekly_task_id: int, session: Session) -> bool: + """Removes a weekly task from the db based on the weekly task id""" + weekly_task = session.query(WeeklyTask).filter_by(id=weekly_task_id).first() + if weekly_task: + session.query(WeeklyTask).filter_by(id=weekly_task_id).delete() + session.commit() + return True + return False \ No newline at end of file diff --git a/app/main.py b/app/main.py index 0a9d3657..39027001 100644 --- a/app/main.py +++ b/app/main.py @@ -7,10 +7,11 @@ from app.database.database import engine, get_db from app.dependencies import ( MEDIA_PATH, STATIC_PATH, templates) + from app.internal.quotes import load_quotes, daily_quotes from app.routers import ( agenda, dayview, email, event, invitation, profile, search, telegram, - whatsapp + weekly_tasks, whatsapp ) from app.telegram.bot import telegram_bot from app.internal.logger_customizer import LoggerCustomizer @@ -51,6 +52,7 @@ def create_tables(engine, psql_environment): app.include_router(dayview.router) app.include_router(email.router) app.include_router(invitation.router) +app.include_router(weekly_tasks.router) app.include_router(whatsapp.router) app.include_router(search.router) diff --git a/app/routers/weekly_tasks.py b/app/routers/weekly_tasks.py new file mode 100644 index 00000000..afd4750c --- /dev/null +++ b/app/routers/weekly_tasks.py @@ -0,0 +1,151 @@ +import datetime + +from fastapi import APIRouter, Depends, Request, Form +from starlette.responses import RedirectResponse +from starlette.status import HTTP_302_FOUND + +from app.database.database import get_db +from app.database.models import User, WeeklyTask +from app.dependencies import templates +from app.internal.weekly_tasks import make_or_change_weekly_task, remove_weekly_task, generate_tasks + + +router = APIRouter( + prefix="/weekly-tasks", + tags=["weekly-tasks"], + responses={404: {"description": "Not found"}}, +) + + +def get_placeholder_user(): + user = User( + username='demo_user', + email='demo@email.po', + password='s3jsd183b13', + full_name='The Demo' + ) + return user + + +def get_user(demo_user, session): + user = session.query(User).filter_by(username=demo_user.username).first() + if not user: + session.add(demo_user) + session.commit() + user = session.query(User).filter_by(id=1).first() + return user + + +@router.get("/") +async def weekly_tasks_manager( + request: Request, + session=Depends(get_db), + demo_user=Depends(get_placeholder_user)): + + user = get_user(demo_user, session) + + # TODO: Move the below function to a compatible location + # Need to run regularly whenever there are no tasks on the week + # Or will run on the background after the user left the weekly-tasks manager page + # function: + # generate_tasks(session, user) # imported from app.internal.weekly_tasks + # session.close() + + return templates.TemplateResponse("weekly_tasks_manager.html", { + "request": request, + "weekly_tasks": user.weekly_tasks + }) + + +@router.get("/add") +async def weekly_task_add( + request: Request): + + return templates.TemplateResponse("add_edit_weekly_task.html", { + "request": request, + "weekly_task": None, + "mode": "add" + }) + + +@router.post("/remove") +async def weekly_task_remove( + session=Depends(get_db), + remove_id: int = Form(...)): + + remove_weekly_task(remove_id, session) + session.close() + url = router.url_path_for("weekly_tasks_manager") + return RedirectResponse(url=url, status_code=HTTP_302_FOUND) + + +@router.post("/edit") +async def weekly_task_edit( + request: Request, + session=Depends(get_db), + edit_id: int = Form(...)): + + weekly_task = session.query(WeeklyTask).filter_by(id=edit_id).first() + return templates.TemplateResponse("add_edit_weekly_task.html", { + "request": request, + "weekly_task": weekly_task, + "mode": "edit" + }) + + +@router.post("/make-change") +async def weekly_task_make_change( + request: Request, + session=Depends(get_db), + demo_user=Depends(get_placeholder_user), + title: str = Form(None), + sun: bool = Form(False), + mon: bool = Form(False), + tue: bool = Form(False), + wed: bool = Form(False), + thu: bool = Form(False), + fri: bool = Form(False), + sat: bool = Form(False), + content: str = Form(None), + is_important: bool = Form(False), + the_time: datetime.time = Form(None), + weekly_task_id: int = Form(...), + mode: str = Form(...)): + + user = get_user(demo_user, session) + days_dict = { + "Sun": sun, + "Mon": mon, + "Tue": tue, + "Wed": wed, + "Thu": thu, + "Fri": fri, + "Sat": sat + } + days_list = [day for day, is_true in days_dict.items() if is_true] + days = ", ".join(days_list) + + made_change, weekly_task = make_or_change_weekly_task( + user, session, + mode, weekly_task_id, + title, days, + content, is_important, + the_time, + ) + + massage = None + if mode == "add": + massage = "could not add The Weekly Task" + else: + massage = "These changes could not be made to the Weekly Task" + + if not made_change: + return templates.TemplateResponse("add_edit_weekly_task.html", { + "request": request, + "massage": massage, + "weekly_task": weekly_task, + "mode": mode + }) + session.close() + url = router.url_path_for("weekly_tasks_manager") + return RedirectResponse(url=url, status_code=HTTP_302_FOUND) \ No newline at end of file diff --git a/app/templates/add_edit_weekly_task.html b/app/templates/add_edit_weekly_task.html new file mode 100644 index 00000000..92285571 --- /dev/null +++ b/app/templates/add_edit_weekly_task.html @@ -0,0 +1,157 @@ +{% extends "base.html" %} + +{% block content %} + +
+ {% if mode == "edit" %} + +

Edit Weekly Tasks

+ {% set weekly_task_id = weekly_task.id %} + + {% else %} + +

Add Weekly Tasks

+ {% set weekly_task_id = "0" %} + + {% endif %} +
+ + + {% if massage %} + + {% endif %} + + + {% if weekly_task %} + + + {% if weekly_task.days %} + {% if "Sun" in weekly_task.days %} + {% set c_sun = "checked" %} + {% endif %} + + {% if "Mon" in weekly_task.days %} + {% set c_mon = "checked" %} + {% endif %} + + {% if "Tue" in weekly_task.days %} + {% set c_tue = "checked" %} + {% endif %} + + {% if "Wed" in weekly_task.days %} + {% set c_wed = "checked" %} + {% endif %} + + {% if "Thu" in weekly_task.days %} + {% set c_thu = "checked" %} + {% endif %} + + {% if "Fri" in weekly_task.days %} + {% set c_fri = "checked" %} + {% endif %} + + {% if "Sat" in weekly_task.days %} + {% set c_sat = "checked" %} + {% endif %} + {% endif %} + + + {% if weekly_task.is_important %} + {% set is_important = "checked" %} + {% endif %} + {% endif %} + + + + {% if weekly_task.title == None %} + {% set title = "" %} + {% else %} + {% set title = weekly_task.title %} + {% endif %} + + + + {% if weekly_task.content == None %} + {% set content = "" %} + {% else %} + {% set content = weekly_task.content %} + {% endif %} + + + + +
+ + +
+ + +
+ + + +
+
    +
  • + + Sunday +
  • +
  • + + Monday +
  • +
  • + + Tuesday +
  • +
  • + + Wednesday +
  • +
  • + + Thursday +
  • +
  • + + Friday +
  • +
  • + + Saturday +
  • +
+
+ + +
+ + +
+ + +
+ Description: + +
+ + +
+ + +
+ + + + + + + + + +
+ + +{% endblock %} \ No newline at end of file diff --git a/app/templates/weekly_tasks_manager.html b/app/templates/weekly_tasks_manager.html new file mode 100644 index 00000000..1a6eb9a1 --- /dev/null +++ b/app/templates/weekly_tasks_manager.html @@ -0,0 +1,80 @@ +{% extends "base.html" %} + + +{% block content %} + +
+

Weekly Tasks

+
+ + +
+ + {% for weekly_task in weekly_tasks %} +
+
+ + + + Every: {{ weekly_task.days }} + at: {{ weekly_task.the_time }} + + + + + + + + +
+ + + {% if weekly_task.content == None %} + {% set content = "" %} + {% else %} + {% set content = weekly_task.content %} + {% endif %} + + + +
+

+ {{ weekly_task.title }}
{{ content }} +

+
+ important: {{ weekly_task.is_important }} +
+ + +
+ {% endfor %} + +
+ + + +
+ Add Weekly Task +
+ + +{% endblock %} \ No newline at end of file diff --git a/tests/client_fixture.py b/tests/client_fixture.py index 225b80d4..f8453074 100644 --- a/tests/client_fixture.py +++ b/tests/client_fixture.py @@ -54,6 +54,20 @@ def profile_test_client(): Base.metadata.drop_all(bind=test_engine) +@pytest.fixture(scope="session") +def weekly_tasks_test_client(): + Base.metadata.create_all(bind=test_engine) + app.dependency_overrides[profile.get_db] = get_test_db + app.dependency_overrides[ + profile.get_placeholder_user] = get_test_placeholder_user + + with TestClient(app) as client: + yield client + + app.dependency_overrides = {} + Base.metadata.drop_all(bind=test_engine) + + def get_test_placeholder_user(): return User( username='fake_user', diff --git a/tests/conftest.py b/tests/conftest.py index 90315d93..2546d56e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -11,6 +11,7 @@ 'tests.invitation_fixture', 'tests.association_fixture', 'tests.client_fixture', + 'tests.weekly_tasks_fixture', 'tests.asyncio_fixture', 'tests.logger_fixture', 'smtpdfix', diff --git a/tests/test_weekly_tasks.py b/tests/test_weekly_tasks.py new file mode 100644 index 00000000..2abc080e --- /dev/null +++ b/tests/test_weekly_tasks.py @@ -0,0 +1,269 @@ +from datetime import datetime, time + +from app.database.models import WeeklyTask, Task, User +from app.routers.weekly_tasks import get_placeholder_user +from app.internal.weekly_tasks import check_inputs, generate_tasks +from app.internal.weekly_tasks import make_or_change_weekly_task, make_task +from app.internal.weekly_tasks import remove_weekly_task + + +def test_get_placeholder_user(): + user = get_placeholder_user() + assert user.username == 'demo_user' + assert user.email == 'demo@email.po' + assert user.password == 's3jsd183b13' + assert user.full_name == 'The Demo' + + +def test_weekly_tasks_manager(weekly_tasks_test_client): + # Get weekly-tasks page + data = weekly_tasks_test_client.get('/weekly-tasks').content + + # Verify that it is the page and there are no tasks + assert b'Weekly Tasks' in data + assert b'Test Task 1' not in data + + +def test_weekly_tasks_add(weekly_tasks_test_client, weekly_task, input_weekly_task): + # Get weekly-tasks/add page + data = weekly_tasks_test_client.get('/weekly-tasks/add').content + # Verify that it is the add page + assert b'Add Weekly Tasks' in data + + # set weekly task data for failed attempt + weekly_task_data = { + 'title': weekly_task.title, + 'mode': 'add', + 'weekly_task_id': '0' + } + data = weekly_tasks_test_client.post( + '/weekly-tasks/make-change', data=weekly_task_data).content + # on failed attempt returns to add page + assert b'Add Weekly Tasks' in data + assert b'could not add The Weekly Task' in data + + # sets successful weekly task input + # Sets the input to add mode + input_weekly_task['mode'] = 'add' + input_weekly_task['weekly_task_id'] = '0' + data = weekly_tasks_test_client.post( + '/weekly-tasks/make-change', data=input_weekly_task).content + + # on successful attempt doesn't returns to add page + assert b'Add Weekly Tasks' not in data + + # Get weekly-tasks manager page + data = weekly_tasks_test_client.get('/weekly-tasks').content + # Checks that all weekly task details are displayed + assert b'Weekly Tasks' in data + assert weekly_task.title.encode() in data + assert weekly_task.days.encode() in data + assert weekly_task.content.encode() in data + assert weekly_task.the_time.encode() in data + + +def test_weekly_tasks_edit(weekly_tasks_test_client, weekly_task, session, input_weekly_task): + # Get weekly tasks from db for edit + w_t = session.query(WeeklyTask).filter_by(title=weekly_task.title).first() + data = weekly_tasks_test_client.post( + '/weekly-tasks/edit', data={"edit_id": w_t.id}).content + + # Checks that all weekly task details are displayed + assert b'Edit Weekly Tasks' in data + assert weekly_task.title.encode() in data + assert weekly_task.content.encode() in data + assert weekly_task.the_time.encode() in data + + # Sets the input to edit mode + input_weekly_task['mode'] = 'edit' + # Sets the id for edit + input_weekly_task['weekly_task_id'] = w_t.id + + # set weekly task input for failed attempt + input_weekly_task['title'] = "" + data = weekly_tasks_test_client.post( + '/weekly-tasks/make-change', data=input_weekly_task).content + # on failed attempt returns to edit page + assert b'Edit Weekly Tasks' in data + assert b'These changes could not be made to the Weekly Task' in data + assert weekly_task.title.encode() not in data + assert weekly_task.content.encode() in data + + # sets successful weekly task input + input_weekly_task['title'] = "Test Task 2" + input_weekly_task['fri'] = True + input_weekly_task['thu'] = True + input_weekly_task['sun'] = False + + data = weekly_tasks_test_client.post( + '/weekly-tasks/make-change', data=input_weekly_task).content + + # on successful attempt doesn't returns to add page + assert b'Edit Weekly Tasks' not in data + + # Get weekly-tasks manager page + data = weekly_tasks_test_client.get('/weekly-tasks').content + # Checks that all weekly task details are displayed correctly + assert b'Weekly Tasks' in data + assert weekly_task.title.encode() not in data + assert b'Test Task 2' in data + assert weekly_task.days.encode() not in data + assert b'Mon, Thu, Fri, Sat' in data + assert weekly_task.content.encode() in data + assert weekly_task.the_time.encode() in data + + +def test_weekly_tasks_remove(weekly_tasks_test_client, session, input_weekly_task, weekly_task): + # adds weekly_task + input_weekly_task['mode'] = 'add' + input_weekly_task['weekly_task_id'] = '0' + data = weekly_tasks_test_client.post( + '/weekly-tasks/make-change', data=input_weekly_task).content + + # Checking if added successfully + data = weekly_tasks_test_client.get('/weekly-tasks').content + w_t = session.query(WeeklyTask).filter_by(title=weekly_task.title).first() + assert b'Weekly Tasks' in data + assert w_t.title == weekly_task.title + assert weekly_task.title.encode() in data + + # removes weekly_task + weekly_tasks_test_client.post( + '/weekly-tasks/remove', data={'remove_id': w_t.id}) + + # Checking if removed successfully + data = weekly_tasks_test_client.get('/weekly-tasks').content + w_t = session.query(WeeklyTask).filter_by(title=weekly_task.title).first() + assert b'Weekly Tasks' in data + assert w_t is None + assert weekly_task.title.encode() not in data + + +def test_internal_weekly_tasks_check_inputs(): + the_time = time(1, 1, 1) + ok = check_inputs(days="", the_time=None, title="the title") + assert not ok + ok = check_inputs(days="Sun", the_time=the_time, title="the title") + assert ok + + +def test_internal_weekly_tasks_make_task(user, session): + made_user = session.query(User).filter_by(username=user.username).first() + date_time = datetime(2021, 1, 21, 3, 19) + task = Task( + title="task1", + content="my content", + is_done=False, + is_important=True, + date_time=date_time, + owner_id=made_user.id + ) + made = make_task(task, user, session) + assert made + made = make_task(task, user, session) + assert not made + + made_task = session.query(Task).filter_by(title="task1").first() + assert made_task.date_time == date_time + + +def test_internal_weekly_tasks_make_or_change_weekly_task(user, session, weekly_task): + # seting the time + date_time = datetime.strptime(f"2021-01-28 {weekly_task.the_time}", "%Y-%m-%d %H:%M") + the_time = date_time.time() + + # When unable to create the weekly task + made, w_t = make_or_change_weekly_task(user, session, + mode="add", weekly_task_id=0, title=None, days=weekly_task.days, + content=weekly_task.content, is_important=weekly_task.is_important, + the_time=the_time) + assert not made + # As much data as possible is saved, except for time and days + assert w_t.content == weekly_task.content + assert w_t.days != weekly_task.days + assert w_t.the_time != weekly_task.the_time + + # When successful on making the weekly task + made, w_t = make_or_change_weekly_task(user, session, + mode="add", weekly_task_id=0, title=weekly_task.title, days=weekly_task.days, + content=weekly_task.content, is_important=weekly_task.is_important, + the_time=the_time) + assert made + + # the weekly task added to the db and successfully saved the data + weekly_task_from_db = session.query(WeeklyTask).filter_by(title=weekly_task.title).first() + assert weekly_task_from_db + assert weekly_task_from_db.content == weekly_task.content + assert weekly_task_from_db.the_time == weekly_task.the_time + + # with the id of the weekly task we edit it + edit_id = weekly_task_from_db.id + made, w_t = make_or_change_weekly_task(user, session, + mode="edit", weekly_task_id=edit_id, title="new title", days=weekly_task.days, + content="new content", is_important=weekly_task.is_important, + the_time=the_time) + assert made + edited_w_t_from_db = session.query(WeeklyTask).filter_by(id=edit_id).first() + assert edited_w_t_from_db.content == "new content" + assert edited_w_t_from_db.title == "new title" + + +def test_internal_weekly_tasks_remove_weekly_task(user, session, weekly_task): + # seting the time and making the weekly task + date_time = datetime.strptime(f"2021-01-28 {weekly_task.the_time}", "%Y-%m-%d %H:%M") + the_time = date_time.time() + made, _ = make_or_change_weekly_task(user, session, + mode="add", weekly_task_id=0, title=weekly_task.title, days=weekly_task.days, + content=weekly_task.content, is_important=weekly_task.is_important, + the_time=the_time) + assert made + + # Checks if the weekly task exists in the db + weekly_task_from_db = session.query(WeeklyTask).filter_by(title=weekly_task.title).first() + assert weekly_task_from_db + # geting the id of the weekly task to remove it + weekly_task_id = weekly_task_from_db.id + removed = remove_weekly_task(weekly_task_id, session) + assert removed + # Checks if the weekly task exists in the db after removal + weekly_task_from_db = session.query(WeeklyTask).filter_by(title=weekly_task.title).first() + assert not weekly_task_from_db + + # Trying to remove a weekly task that does not exists + removed = remove_weekly_task(weekly_task_id, session) + assert not removed + + +def test_internal_weekly_tasks_generate_tasks(user, session, weekly_task): + # seting the time and making the weekly task + date_time = datetime.strptime(f"2021-01-28 {weekly_task.the_time}", "%Y-%m-%d %H:%M") + the_time = date_time.time() + made, _ = make_or_change_weekly_task(user, session, + mode="add", weekly_task_id=0, title=weekly_task.title, days=weekly_task.days, + content=weekly_task.content, is_important=weekly_task.is_important, + the_time=the_time) + assert made + + # Activates the function + generate_tasks(session, user) + + tasks = user.tasks + # The number of tasks a user has should be + # the number of days defined in the weekly task + assert len(tasks) == 3 + # The Tasks should be defined according to the weekly task + for task in tasks: + assert weekly_task.title == task.title + assert weekly_task.content == task.content + assert weekly_task.is_important == task.is_important + time_string = task.date_time.strftime("%H:%M") + assert weekly_task.the_time == time_string + day = task.date_time.strftime("%a") + assert day in weekly_task.days + + # another activation at the same day + # shouldn't affect the db + # Only after a week new tasks should be added + generate_tasks(session, user) + tasks = user.tasks + assert len(tasks) == 3 \ No newline at end of file diff --git a/tests/weekly_tasks_fixture.py b/tests/weekly_tasks_fixture.py new file mode 100644 index 00000000..44b434f7 --- /dev/null +++ b/tests/weekly_tasks_fixture.py @@ -0,0 +1,27 @@ +import pytest + +from app.database.models import WeeklyTask + + +@pytest.fixture +def weekly_task(): + return WeeklyTask( + title="Test Task 1", + days="Sun, Mon, Sat", + content="my content", + is_important=True, + the_time="11:00" + ) + + +@pytest.fixture +def input_weekly_task(): + return { + 'title': 'Test Task 1', + 'sun': True, + 'mon': True, + 'sat': True, + 'content': 'my content', + 'is_important': True, + 'the_time': '11:00' + } \ No newline at end of file