Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
9f12429
adding func to create new event
Jan 25, 2021
83a3f7d
fix linit (except the start of endpoint)
Jan 25, 2021
5e3035b
more fix of linit
Jan 25, 2021
11f89d5
and more linit
Jan 26, 2021
d97d751
delete long line
Jan 26, 2021
1d54aa2
add test for bad new event
Jan 26, 2021
5ec2490
linit fix
Jan 26, 2021
b96f5db
add tests for exception
Jan 26, 2021
fe6eff0
linit
Jan 26, 2021
010bb8b
change check_validation to check_date_validation
Jan 27, 2021
6d876a9
Merge branch 'develop' into develop
Michael-B-D Jan 27, 2021
0591114
linit
Jan 27, 2021
6ce4ad8
Merge branch 'develop' of https://github.com/PythonFreeCourse/calenda…
Jan 27, 2021
86720df
Merge branch 'develop' of https://github.com/Michael-B-D/calendar int…
Jan 27, 2021
538450d
linit
Jan 27, 2021
425462a
add more tests
Jan 27, 2021
54f7eb7
use return early in event.py
Jan 29, 2021
19923eb
delete line
Jan 29, 2021
fb4a125
Merge branch 'develop' of https://github.com/PythonFreeCourse/calenda…
Jan 29, 2021
f498b0f
/
Jan 29, 2021
6438198
pull
Jan 29, 2021
7020d75
delete whitespace
Jan 29, 2021
0b46709
add else
Feb 1, 2021
1e8b415
Merge branch 'develop' of https://github.com/PythonFreeCourse/calenda…
Feb 1, 2021
8bc524a
add logger
Feb 1, 2021
624fb40
lint
Feb 1, 2021
986d056
/
Feb 1, 2021
3f10db9
line
Feb 1, 2021
4f03231
Merge branch 'develop' of https://github.com/PythonFreeCourse/calenda…
Feb 2, 2021
8b41b4d
update
Feb 2, 2021
dfbb0e0
.
Feb 3, 2021
8b9e415
.
Feb 3, 2021
9a2d80d
linit
Feb 3, 2021
8c3f9ed
try to fix linit
Feb 5, 2021
80ce83d
try agein
Feb 5, 2021
8f6dff3
linit
Feb 5, 2021
c5da8e8
remove vc_link from tests
Feb 5, 2021
07b423c
change func is_date_before name
Feb 5, 2021
0b9fd43
.
Feb 5, 2021
b490663
.
Feb 5, 2021
a565433
moving test to test_event
Feb 6, 2021
f3dd91a
linit
Feb 6, 2021
522d68b
add venv to gitignore
Feb 8, 2021
c07fcdc
remove venv
Feb 8, 2021
c0c4033
Merge branch 'develop' of https://github.com/PythonFreeCourse/calenda…
Feb 8, 2021
c9c08bc
LINIT
Feb 8, 2021
b455f73
/
Feb 8, 2021
593d612
/
Feb 8, 2021
860a8e1
add claint in test app
Feb 8, 2021
2606920
/
Feb 8, 2021
b28d1ac
/
Feb 8, 2021
5f222ad
.
Feb 8, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ venv.bak/
.vscode/
Scripts/*
pyvenv.cfg
calender-venv/

# Spyder project settings
.spyderproject
Expand Down
29 changes: 29 additions & 0 deletions app/routers/event.py
Original file line number Diff line number Diff line change
Expand Up @@ -260,3 +260,32 @@ def delete_event(event_id: int,
# if the deletion is successful
return RedirectResponse(
url="/calendar", status_code=status.HTTP_200_OK)


def is_date_before(start_time: datetime, end_time: datetime) -> bool:
"""Check if the start_date is smaller then the end_time"""
try:
return start_time < end_time
except TypeError:
return False


def add_new_event(values: dict, db: Session) -> Optional[Event]:
"""Get User values and the DB Session insert the values
to the DB and refresh it exception in case that the keys
in the dict is not match to the fields in the DB
return the Event Class item"""

if not is_date_before(values['start'], values['end']):
return None
try:
new_event = create_model(db, Event, **values)
create_model(
db, UserEvent,
user_id=values['owner_id'],
event_id=new_event.id
)
return new_event
except (AssertionError, AttributeError, TypeError) as e:
logger.exception(e)
return None
65 changes: 62 additions & 3 deletions tests/test_event.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
from datetime import datetime
from datetime import datetime, timedelta


import pytest
from fastapi import HTTPException
from fastapi.testclient import TestClient
from starlette import status
from sqlalchemy.orm import Session


from app.main import app
from app.database.models import Event
from app.database.database import get_db
from app.routers.event import (_delete_event, by_id, delete_event,
check_change_dates_allowed, update_event,
_update_event)
update_event, check_change_dates_allowed,
add_new_event, _update_event,
is_date_before)


CORRECT_EVENT_FORM_DATA = {
'title': 'test title',
Expand Down Expand Up @@ -219,3 +227,54 @@ def test_successful_deletion(event_test_client, session, event):
def test_deleting_an_event_does_not_exist(event_test_client, event):
response = event_test_client.delete("/event/2")
assert response.status_code == status.HTTP_404_NOT_FOUND


class TestApp:

client = TestClient(app)
date_test_data = [datetime.today() - timedelta(1), datetime.today()]
event_test_data = {
'title': "Test Title",
"location": "Fake City",
"start": date_test_data[0],
"end": date_test_data[1],
"content": "Any Words",
"owner_id": 123}

@staticmethod
def test_get_db():
assert isinstance(next(get_db()), Session)

@staticmethod
def test_session_db():
assert get_db() is not None

@staticmethod
def check_is_date_before():
start = TestApp.date_test_data[0]
end = TestApp.date_test_data[1]
assert is_date_before(start, end)

@staticmethod
def test_bad_check_validation():
assert not is_date_before(
TestApp.date_test_data[0],
'bad value'
)

@staticmethod
def test_add_event(session: Session):
assert add_new_event(TestApp.event_test_data, session) is not None

@staticmethod
def test_add_bad_event(session: Session):
bad_event_test_data = TestApp.event_test_data
bad_event_test_data['no_colume'] = 'some data'
assert add_new_event(bad_event_test_data, session) is None

@staticmethod
def test_add_bad_times_to_event(session: Session):
bad_event_test_data = TestApp.event_test_data
bad_event_test_data['start'] = TestApp.date_test_data[1]
bad_event_test_data['end'] = TestApp.date_test_data[0]
assert add_new_event(bad_event_test_data, session) is None