diff --git a/monolith/tests/test_get_random_story.py b/monolith/tests/test_get_random_story.py deleted file mode 100644 index c13c98d..0000000 --- a/monolith/tests/test_get_random_story.py +++ /dev/null @@ -1,161 +0,0 @@ -import datetime as dt - -from monolith.database import Story - - -# one recent story, two not so recent -def test_get_random_recent_story_1(client, database, templates, story_actions): - example = Story() - example.text = 'recent story' - example.likes = 0 - example.author_id = 1 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'old story (months/years ago)' - example.likes = 0 - example.author_id = 1 - example.date = dt.datetime(2019, 9, 5) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'not recent story (yesterday)' - example.date = dt.datetime.now() - dt.timedelta(days=1) - example.likes = 0 - example.author_id = 2 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - database.session.commit() - - # story found - reply = story_actions.get_random_recent_story() - assert reply.status_code == 200 - - template_context = templates[-1] - assert template_context['story'].id == 1 - assert template_context['message'] == '' - - -# two recent stories to pick from, two not so recent -def test_get_random_recent_story_2(client, database, templates, story_actions): - example = Story() - example.text = 'recent story 1' - example.likes = 0 - example.author_id = 1 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'very not recent story (months/years ago)' - example.likes = 0 - example.author_id = 1 - example.date = dt.datetime(2019, 9, 5) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'recent story 2' - example.likes = 0 - example.author_id = 1 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'not recent story (yesterday)' - example.date = dt.datetime.now() - dt.timedelta(days=1) - example.likes = 0 - example.author_id = 2 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - database.session.commit() - - # story found - reply = story_actions.get_random_recent_story() - assert reply.status_code == 200 - - template_context = templates[-1] - id = template_context['story'].id - assert id == 1 or id == 3 - assert template_context['message'] == '' - - -# no recent story, get a random one -def test_get_random_story(client, database, templates, story_actions): - example = Story() - example.text = 'very not recent story (months/years ago)' - example.likes = 0 - example.author_id = 1 - example.date = dt.datetime(2019, 9, 5) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'not recent story (yesterday)' - example.date = dt.datetime.now() - dt.timedelta(days=1) - example.likes = 0 - example.author_id = 2 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'drafted story' - example.date = dt.datetime.now() - dt.timedelta(days=1) - example.likes = 0 - example.author_id = 1 - example.is_draft = True - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'deleted story' - example.date = dt.datetime.now() - dt.timedelta(days=1) - example.likes = 0 - example.author_id = 1 - example.is_draft = False - example.deleted = True - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - database.session.commit() - - # story found - reply = story_actions.get_random_recent_story() - assert reply.status_code == 200 - - template_context = templates[-1] - id = template_context['story'].id - message = template_context['message'] - assert id == 1 or id == 2 - assert message == 'no stories today. Here is a random one:' - - -def test_no_stories(client, templates, story_actions): - # story not found - reply = story_actions.get_random_recent_story() - assert reply.status_code == 404 - - template_context = templates[-1] - assert template_context['message'] == 'no stories!' diff --git a/monolith/tests/test_get_story.py b/monolith/tests/test_get_story.py deleted file mode 100644 index d76c93f..0000000 --- a/monolith/tests/test_get_story.py +++ /dev/null @@ -1,121 +0,0 @@ -from monolith.database import Story, Reaction - - -def test_get_story(client, auth, database, templates, story_actions): - example = Story() - example.text = 'Trial story of example admin user :)' - example.likes = 42 - example.author_id = 1 - example.dice_set = ['dice1', 'dice2'] - - database.session.add(example) - database.session.commit() - - auth.login() - - # story found - reply = story_actions.get_story(1) - template_capture = templates[-1] - assert reply.status_code == 200 - assert template_capture['story'].id == 1 - # assert template_capture['message'] == '' - - # story not found - reply = story_actions.get_story(0) - assert reply.status_code == 404 - - # invalid input - reply = story_actions.get_story('ciao') - assert reply.status_code == 404 - - # deleted story - reply = story_actions.delete_story(1) - assert reply.status_code == 200 - reply = story_actions.get_story(1) - assert reply.status_code == 410 - - -def test_unauthorized_draft(client, auth, database, templates, story_actions): - # add a draft - auth.login() - reply = story_actions.roll_dice() - assert reply.status_code == 200 - new_id = templates[-1]['story_id'] - auth.logout() - - # try to edit a draft of another user - auth.login('test1', 'test1123') - reply = story_actions.get_story(new_id) - assert reply.status_code == 403 - - -def test_story_with_unmarked_like(client, auth, database, templates, - story_actions): - # example story and unmarked reaction - s = Story() - s.text = 'Trial story of example admin user :)' - s.likes = 42 - s.dislikes = 0 - s.author_id = 1 - s.dice_set = ['dice1', 'dice2'] - s.is_draft = False - s.deleted = False - - database.session.add(s) - - r = Reaction() - r.reactor_id = 1 - r.author = s - r.reaction_val = 1 - r.marked = False - - database.session.add(r) - - database.session.commit() - - # get the story - auth.login() - reply = story_actions.get_story(1) - template_capture = templates[-1] - assert reply.status_code == 200 - # check that the unmarked like is counted - assert template_capture['story'].likes == 43 - assert template_capture['story'].dislikes == 0 - - database.session.commit() - - -def test_story_with_unmarked_dislike(client, auth, database, templates, - story_actions): - # example story and unmarked reaction - s = Story() - s.text = 'Trial story of example admin user :)' - s.likes = 42 - s.dislikes = 0 - s.author_id = 1 - s.dice_set = ['dice1', 'dice2'] - s.is_draft = False - s.deleted = False - - database.session.add(s) - - r = Reaction() - r.reactor_id = 1 - r.author = s - r.reaction_val = -1 - r.marked = False - - database.session.add(r) - - database.session.commit() - - # get the story - auth.login() - reply = story_actions.get_story(1) - template_capture = templates[-1] - assert reply.status_code == 200 - assert template_capture['story'].likes == 42 - # check that the unmarked dislike is counted - assert template_capture['story'].dislikes == 1 - - database.session.commit() diff --git a/monolith/tests/test_getuser.py b/monolith/tests/test_getuser.py deleted file mode 100644 index ee52a00..0000000 --- a/monolith/tests/test_getuser.py +++ /dev/null @@ -1,40 +0,0 @@ -from monolith.database import Story - - -def test_getuser(client, auth, database, templates): - reply = auth.login() - assert reply.status_code == 302 - - reply = client.get('/users/2') - assert reply.status_code == 200 - - user = templates[-1]['user'] - stories = templates[-1]['stories'] - assert user == 'test1' - assert stories == [] - - example = Story() - example.text = 'First story of test1 user :)' - example.author_id = 2 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - database.session.commit() - - reply = client.get('/users/2') - assert reply.status_code == 200 - - user = templates[-1]['user'] - stories = templates[-1]['stories'] - assert user == 'test1' - assert len(stories) == 1 - assert stories[0].id == example.id - - -def test_getuser_fail(client, auth, database): - reply = auth.login() - assert reply.status_code == 302 - - reply = client.get('/users/utenteNonEsistente') - assert reply.status_code == 404 diff --git a/monolith/tests/test_mywall.py b/monolith/tests/test_mywall.py index 1d63980..71f539d 100644 --- a/monolith/tests/test_mywall.py +++ b/monolith/tests/test_mywall.py @@ -1,5 +1,4 @@ -# tests myWall functionality -from monolith.database import Story +from monolith.database import Story, User def test_check_mywall(client, auth, database, templates): @@ -14,7 +13,6 @@ def test_check_mywall(client, auth, database, templates): assert stories == [] example = Story() - # gets story_id=1 as user_id or as the first? example.text = 'Trial story of example admin user :)' example.likes = 42 example.dislikes = 0 @@ -30,7 +28,6 @@ def test_check_mywall(client, auth, database, templates): assert stories[0].id == example.id example2 = Story() - # gets story_id=1 as user_id or as the first? example2.text = 'New story of example admin user :)' example2.likes = 42 example2.dislikes = 0 @@ -86,3 +83,136 @@ def test_statistics(client, auth, database, templates): # Active user, it has been published at least one story in the last 7 days assert stats['active'] + +def test_getusers(client, database, auth, templates): + reply = auth.login('Admin', 'admin') + assert reply.status_code == 302 + + reply = client.get('/users') + template_capture = templates[-1]['result'] + users = [(r[0], r[1]) for r in template_capture] + assert users == [('Admin', None), + ('test1', None), + ('test2', None), + ('test3', None)] + + example = Story() + example.text = 'First story of admin user :)' + example.author_id = 1 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + database.session.commit() + + reply = client.get('/users') + template_capture = templates[-1]['result'] + users = [(r[0], r[1]) for r in template_capture] + assert users == [('Admin', 'First story of admin user :)'), + ('test1', None), + ('test2', None), + ('test3', None)] + + client.get('/logout') + + client.post('/signup', data={'email': 'prova@prova.com', + 'username': 'prova', + 'password': 'prova123'}) + reply = client.get('/users') + template_capture = templates[-1]['result'] + users = [(r[0], r[1]) for r in template_capture] + assert users == [('Admin', 'First story of admin user :)'), + ('test1', None), + ('test2', None), + ('test3', None), + ('prova', None)] + + example = Story() + example.text = 'First story of prova user :)' + example.author_id = 5 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + database.session.commit() + + reply = client.get('/users') + template_capture = templates[-1]['result'] + users = [(r[0], r[1]) for r in template_capture] + assert users == [('Admin', 'First story of admin user :)'), + ('test1', None), + ('test2', None), + ('test3', None), + ('prova', 'First story of prova user :)')] + + example = Story() + example.text = 'Second story of admin user :)' + example.author_id = 1 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + database.session.commit() + + reply = client.get('/users') + template_capture = templates[-1]['result'] + users = [(r[0], r[1]) for r in template_capture] + assert users == [('Admin', 'Second story of admin user :)'), + ('test1', None), + ('test2', None), + ('test3', None), + ('prova', 'First story of prova user :)')] + + +def test_telegram_register(app, client, database): + reply = client.post('/bot/register', + data={'username': 'Admin', 'chat_id': 42}) + assert reply.status_code == 200 + assert database.session.query(User).get(1).telegram_chat_id == 42 + + reply = client.post('/bot/register', + data={'username': 'test', 'chat_id': 42}) + assert reply.status_code == 404 + + reply = client.post('/bot/register', data={'username': 'test'}) + assert reply.status_code == 400 + reply = client.post('/bot/register', data={'chat_id': 42}) + assert reply.status_code == 400 + +def test_getuser(client, auth, database, templates): + reply = auth.login() + assert reply.status_code == 302 + + reply = client.get('/users/2') + assert reply.status_code == 200 + + user = templates[-1]['user'] + stories = templates[-1]['stories'] + assert user == 'test1' + assert stories == [] + + example = Story() + example.text = 'First story of test1 user :)' + example.author_id = 2 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + database.session.commit() + + reply = client.get('/users/2') + assert reply.status_code == 200 + + user = templates[-1]['user'] + stories = templates[-1]['stories'] + assert user == 'test1' + assert len(stories) == 1 + assert stories[0].id == example.id + + +def test_getuser_fail(client, auth, database): + reply = auth.login() + assert reply.status_code == 302 + + reply = client.get('/users/utenteNonEsistente') + assert reply.status_code == 404 diff --git a/monolith/tests/test_ranged_list.py b/monolith/tests/test_ranged_list.py deleted file mode 100644 index 6c49fe6..0000000 --- a/monolith/tests/test_ranged_list.py +++ /dev/null @@ -1,154 +0,0 @@ -import datetime as dt - -from monolith.database import Story - -import pytest - - -@pytest.fixture -def init_database(database): - example = Story() - example.text = 'test' - example.likes = 42 - example.author_id = 1 - example.date = dt.datetime(year=2018, month=12, day=1) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'test' - example.likes = 42 - example.author_id = 1 - example.date = dt.datetime(year=2019, month=1, day=1) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'test' - example.likes = 42 - example.author_id = 1 - example.date = dt.datetime(year=2019, month=3, day=12) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'test' - example.likes = 42 - example.author_id = 1 - example.date = dt.datetime(year=2017, month=10, day=1) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'test' - example.likes = 42 - example.author_id = 1 - example.date = dt.datetime(year=2018, month=12, day=7) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - database.session.commit() - - -def test_all_stories(client, templates, init_database, story_actions): - reply = story_actions.get_all_stories() - assert reply.status_code == 200 - - stories = templates[-1]['stories'] - message = templates[-1]['message'] - assert stories.count() == 5 - assert message == '' - -def test_no_stories(client, templates): - reply = client.get('/stories') - assert reply.status_code == 200 - - stories = templates[-1]['stories'] - message = templates[-1]['message'] - assert stories.count() == 0 - assert message == 'no stories' - - -def test_ranged_stories(client, templates, init_database, story_actions): - # invalid query params - reply = client.get('/stories?test=ciao') - - # valid query params, invalid values (1) - reply = story_actions.get_all_stories(date_range=('2018-12-1', '2019-x-1')) - assert reply.status_code == 200 - - message = templates[-1]['message'] - assert message == 'INVALID date in query parameters: use yyyy-mm-dd' - - # valid query params, invalid values (2) - reply = story_actions.get_all_stories(date_range=('x-12-1', '2019-10-1')) - assert reply.status_code == 200 - - message = templates[-1]['message'] - assert message == 'INVALID date in query parameters: use yyyy-mm-dd' - - # valid query params, invalid values (3) - reply = client.get('/stories?from=x-12-1&to=2019-10-x') - assert reply.status_code == 200 - - message = templates[-1]['message'] - assert message == 'INVALID date in query parameters: use yyyy-mm-dd' - - # found something in exact range - reply = story_actions.get_all_stories(date_range=('2018-12-1', '2019-1-1')) - assert reply.status_code == 200 - - message = templates[-1]['message'] - stories = templates[-1]['stories'] - assert message == '' - assert stories.count() == 3 - for story in stories: - assert story.id == 1 or story.id == 2 or story.id == 5 - - # found something in "not exact" range - reply = story_actions.get_all_stories(date_range=('2017-5-1', '2018-1-1')) - assert reply.status_code == 200 - - message = templates[-1]['message'] - stories = templates[-1]['stories'] - assert message == '' - assert stories.count() == 1 - assert stories[0].id == 4 - - # from date == to_date - reply = story_actions.get_all_stories(date_range=('2019-1-1', '2019-1-1')) - assert reply.status_code == 200 - - message = templates[-1]['message'] - stories = templates[-1]['stories'] - assert message == '' - assert stories.count() == 1 - assert stories[0].id == 2 - - # from date < to_date - reply = story_actions.get_all_stories(date_range=('2019-1-1', '2018-1-1')) - assert reply.status_code == 200 - - message = templates[-1]['message'] - stories = templates[-1]['stories'] - assert message == 'Wrong date parameters (from-date greater than ' \ - 'to-date or viceversa)!' - assert stories == [] - # nothing found - reply = story_actions.get_all_stories(date_range=('2015-12-1', '2017-1-1')) - assert reply.status_code == 200 - - message = templates[-1]['message'] - stories = templates[-1]['stories'] - assert message == 'no stories with the given dates' - assert stories.count() == 0 diff --git a/monolith/tests/test_search_list.py b/monolith/tests/test_search_list.py deleted file mode 100644 index 24895c5..0000000 --- a/monolith/tests/test_search_list.py +++ /dev/null @@ -1,93 +0,0 @@ -import datetime as dt - -from monolith.database import Story - -import pytest - - -@pytest.fixture -def init_database(database): - example = Story() - example.text = 'lorem ipsum dolor sit amet' - example.likes = 42 - example.author_id = 1 - example.date = dt.datetime(year=2018, month=12, day=1) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'bird drink coffee baloon' - example.likes = 42 - example.author_id = 1 - example.date = dt.datetime(year=2019, month=1, day=1) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'lorem Coffee dolor sit amet' - example.likes = 42 - example.author_id = 1 - example.date = dt.datetime(year=2019, month=3, day=12) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - example = Story() - example.text = 'bird cofFee baloon amet' - example.likes = 42 - example.author_id = 1 - example.date = dt.datetime(year=2017, month=10, day=1) - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - - database.session.commit() - - -def test_all_stories(client, templates, init_database): - reply = client.get('/stories') - assert reply.status_code == 200 - - stories = templates[-1]['stories'] - message = templates[-1]['message'] - assert stories.count() == 4 - assert message == '' - - -def test_query_story(client, templates, init_database): - # valid query params, no matches - reply = client.get('/stories?q=foo') - assert reply.status_code == 200 - - stories = templates[-1]['stories'] - assert not stories.all() - - # valid query params, single word - reply = client.get('/stories?q=dolor') - assert reply.status_code == 200 - stories = templates[-1]['stories'].all() - assert len(stories) == 2 - for s in stories: - assert 'dolor' in s.text - - # valid query params, multiple word - reply = client.get('/stories?q=lorem dolor') - assert reply.status_code == 200 - stories = templates[-1]['stories'].all() - assert len(stories) == 2 - for s in stories: - assert 'lorem' in s.text or 'dolor' in s.text - - # valid query params, case insensitive - reply = client.get('/stories?q=CoFFeE') - assert reply.status_code == 200 - stories = templates[-1]['stories'].all() - assert len(stories) == 3 - for s in stories: - assert 'coffee' in s.text.lower() diff --git a/monolith/tests/test_search_story.py b/monolith/tests/test_search_story.py new file mode 100644 index 0000000..cf1817b --- /dev/null +++ b/monolith/tests/test_search_story.py @@ -0,0 +1,660 @@ +import datetime as dt +from monolith.database import Story, Reaction +import pytest + + +def test_get_story(client, auth, database, templates, story_actions): + example = Story() + example.text = 'Trial story of example admin user :)' + example.likes = 42 + example.author_id = 1 + example.dice_set = ['dice1', 'dice2'] + + database.session.add(example) + database.session.commit() + + auth.login() + + # story found + reply = story_actions.get_story(1) + template_capture = templates[-1] + assert reply.status_code == 200 + assert template_capture['story'].id == 1 + # assert template_capture['message'] == '' + + # story not found + reply = story_actions.get_story(0) + assert reply.status_code == 404 + + # invalid input + reply = story_actions.get_story('ciao') + assert reply.status_code == 404 + + # deleted story + reply = story_actions.delete_story(1) + assert reply.status_code == 200 + reply = story_actions.get_story(1) + assert reply.status_code == 410 + + +def test_unauthorized_draft(client, auth, database, templates, story_actions): + # add a draft + auth.login() + reply = story_actions.roll_dice() + assert reply.status_code == 200 + new_id = templates[-1]['story_id'] + auth.logout() + + # try to edit a draft of another user + auth.login('test1', 'test1123') + reply = story_actions.get_story(new_id) + assert reply.status_code == 403 + + +def test_story_with_unmarked_like(client, auth, database, templates, + story_actions): + # example story and unmarked reaction + s = Story() + s.text = 'Trial story of example admin user :)' + s.likes = 42 + s.dislikes = 0 + s.author_id = 1 + s.dice_set = ['dice1', 'dice2'] + s.is_draft = False + s.deleted = False + + database.session.add(s) + + r = Reaction() + r.reactor_id = 1 + r.author = s + r.reaction_val = 1 + r.marked = False + + database.session.add(r) + + database.session.commit() + + # get the story + auth.login() + reply = story_actions.get_story(1) + template_capture = templates[-1] + assert reply.status_code == 200 + # check that the unmarked like is counted + assert template_capture['story'].likes == 43 + assert template_capture['story'].dislikes == 0 + + database.session.commit() + + +def test_story_with_unmarked_dislike(client, auth, database, templates, + story_actions): + # example story and unmarked reaction + s = Story() + s.text = 'Trial story of example admin user :)' + s.likes = 42 + s.dislikes = 0 + s.author_id = 1 + s.dice_set = ['dice1', 'dice2'] + s.is_draft = False + s.deleted = False + + database.session.add(s) + + r = Reaction() + r.reactor_id = 1 + r.author = s + r.reaction_val = -1 + r.marked = False + + database.session.add(r) + + database.session.commit() + + # get the story + auth.login() + reply = story_actions.get_story(1) + template_capture = templates[-1] + assert reply.status_code == 200 + assert template_capture['story'].likes == 42 + # check that the unmarked dislike is counted + assert template_capture['story'].dislikes == 1 + + database.session.commit() + +# one recent story, two not so recent +def test_get_random_recent_story_1(client, database, templates, story_actions): + example = Story() + example.text = 'recent story' + example.likes = 0 + example.author_id = 1 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'old story (months/years ago)' + example.likes = 0 + example.author_id = 1 + example.date = dt.datetime(2019, 9, 5) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'not recent story (yesterday)' + example.date = dt.datetime.now() - dt.timedelta(days=1) + example.likes = 0 + example.author_id = 2 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + database.session.commit() + + # story found + reply = story_actions.get_random_recent_story() + assert reply.status_code == 200 + + template_context = templates[-1] + assert template_context['story'].id == 1 + assert template_context['message'] == '' + + +# two recent stories to pick from, two not so recent +def test_get_random_recent_story_2(client, database, templates, story_actions): + example = Story() + example.text = 'recent story 1' + example.likes = 0 + example.author_id = 1 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'very not recent story (months/years ago)' + example.likes = 0 + example.author_id = 1 + example.date = dt.datetime(2019, 9, 5) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'recent story 2' + example.likes = 0 + example.author_id = 1 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'not recent story (yesterday)' + example.date = dt.datetime.now() - dt.timedelta(days=1) + example.likes = 0 + example.author_id = 2 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + database.session.commit() + + # story found + reply = story_actions.get_random_recent_story() + assert reply.status_code == 200 + + template_context = templates[-1] + id = template_context['story'].id + assert id == 1 or id == 3 + assert template_context['message'] == '' + + +# no recent story, get a random one +def test_get_random_story(client, database, templates, story_actions): + example = Story() + example.text = 'very not recent story (months/years ago)' + example.likes = 0 + example.author_id = 1 + example.date = dt.datetime(2019, 9, 5) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'not recent story (yesterday)' + example.date = dt.datetime.now() - dt.timedelta(days=1) + example.likes = 0 + example.author_id = 2 + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'drafted story' + example.date = dt.datetime.now() - dt.timedelta(days=1) + example.likes = 0 + example.author_id = 1 + example.is_draft = True + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'deleted story' + example.date = dt.datetime.now() - dt.timedelta(days=1) + example.likes = 0 + example.author_id = 1 + example.is_draft = False + example.deleted = True + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + database.session.commit() + + # story found + reply = story_actions.get_random_recent_story() + assert reply.status_code == 200 + + template_context = templates[-1] + id = template_context['story'].id + message = template_context['message'] + assert id == 1 or id == 2 + assert message == 'no stories today. Here is a random one:' + + +def test_no_stories(client, templates, story_actions): + # story not found + reply = story_actions.get_random_recent_story() + assert reply.status_code == 404 + + template_context = templates[-1] + assert template_context['message'] == 'no stories!' + + +def test_get_by_interest(client, auth, database, templates, story_actions): + auth.login() + + example1 = Story() + example1.theme = 'halloween' + example1.text = 'Halloween story of test1 user :)' + example1.author_id = 2 + example1.is_draft = False + example1.deleted = False + example1.dice_set = ['a', 'b', 'c'] + database.session.add(example1) + database.session.commit() + + example2 = Story() + example2.theme = 'xmas' + example2.text = 'Xmas story of test2 user :)' + example2.author_id = 3 + example2.is_draft = False + example2.deleted = False + example2.dice_set = ['a', 'b', 'c'] + database.session.add(example2) + database.session.commit() + + example3 = Story() + example3.theme = 'xmas' + example3.theme = 'Old xmas story of test3 user :)' + example3.date = dt.datetime.now() - dt.timedelta(days=6) + example3.author_id = 4 + example3.is_draft = False + example3.deleted = False + example3.dice_set = ['a', 'b', 'c'] + database.session.add(example3) + database.session.commit() + + reply = story_actions.get_all_stories(theme='xmas') + assert reply.status_code == 200 + assert templates[-1]['stories'].all() == [example2] + +@pytest.fixture +def init_database(database): + example = Story() + example.text = 'test' + example.likes = 42 + example.author_id = 1 + example.date = dt.datetime(year=2018, month=12, day=1) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'test' + example.likes = 42 + example.author_id = 1 + example.date = dt.datetime(year=2019, month=1, day=1) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'test' + example.likes = 42 + example.author_id = 1 + example.date = dt.datetime(year=2019, month=3, day=12) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'test' + example.likes = 42 + example.author_id = 1 + example.date = dt.datetime(year=2017, month=10, day=1) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'test' + example.likes = 42 + example.author_id = 1 + example.date = dt.datetime(year=2018, month=12, day=7) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + database.session.commit() + + +def test_all_stories(client, templates, init_database, story_actions): + reply = story_actions.get_all_stories() + assert reply.status_code == 200 + + stories = templates[-1]['stories'] + message = templates[-1]['message'] + assert stories.count() == 5 + assert message == '' + +def test_no_stories(client, templates): + reply = client.get('/stories') + assert reply.status_code == 200 + + stories = templates[-1]['stories'] + message = templates[-1]['message'] + assert stories.count() == 0 + assert message == 'no stories' + + +def test_ranged_stories(client, templates, init_database, story_actions): + # invalid query params + reply = client.get('/stories?test=ciao') + + # valid query params, invalid values (1) + reply = story_actions.get_all_stories(date_range=('2018-12-1', '2019-x-1')) + assert reply.status_code == 200 + + message = templates[-1]['message'] + assert message == 'INVALID date in query parameters: use yyyy-mm-dd' + + # valid query params, invalid values (2) + reply = story_actions.get_all_stories(date_range=('x-12-1', '2019-10-1')) + assert reply.status_code == 200 + + message = templates[-1]['message'] + assert message == 'INVALID date in query parameters: use yyyy-mm-dd' + + # valid query params, invalid values (3) + reply = client.get('/stories?from=x-12-1&to=2019-10-x') + assert reply.status_code == 200 + + message = templates[-1]['message'] + assert message == 'INVALID date in query parameters: use yyyy-mm-dd' + + # found something in exact range + reply = story_actions.get_all_stories(date_range=('2018-12-1', '2019-1-1')) + assert reply.status_code == 200 + + message = templates[-1]['message'] + stories = templates[-1]['stories'] + assert message == '' + assert stories.count() == 3 + for story in stories: + assert story.id == 1 or story.id == 2 or story.id == 5 + + # found something in "not exact" range + reply = story_actions.get_all_stories(date_range=('2017-5-1', '2018-1-1')) + assert reply.status_code == 200 + + message = templates[-1]['message'] + stories = templates[-1]['stories'] + assert message == '' + assert stories.count() == 1 + assert stories[0].id == 4 + + # from date == to_date + reply = story_actions.get_all_stories(date_range=('2019-1-1', '2019-1-1')) + assert reply.status_code == 200 + + message = templates[-1]['message'] + stories = templates[-1]['stories'] + assert message == '' + assert stories.count() == 1 + assert stories[0].id == 2 + + # from date < to_date + reply = story_actions.get_all_stories(date_range=('2019-1-1', '2018-1-1')) + assert reply.status_code == 200 + + message = templates[-1]['message'] + stories = templates[-1]['stories'] + assert message == 'Wrong date parameters (from-date greater than ' \ + 'to-date or viceversa)!' + assert stories == [] + # nothing found + reply = story_actions.get_all_stories(date_range=('2015-12-1', '2017-1-1')) + assert reply.status_code == 200 + + message = templates[-1]['message'] + stories = templates[-1]['stories'] + assert message == 'no stories with the given dates' + assert stories.count() == 0 + +def test_viewStory(client, auth, templates, story_actions): + auth.login() + + # Create new story + reply = story_actions.roll_dice() + assert reply.status_code == 200 + roll = templates[-1]['dice'] + new_id = templates[-1]['story_id'] + + reply = story_actions.add_story_text(new_id, roll) + assert reply.status_code == 302 + + # retrieve the trial story + reply = story_actions.get_story(new_id) + assert reply.status_code == 200 + + # retrieve non-existing story + reply = story_actions.get_story(0) + assert reply.status_code == 404 + + +def test_like(client, auth, database, templates, story_actions): + auth.login() + + # Invalid story + reply = story_actions.post_like_reaction(1) + assert reply.status_code == 404 + + reply = story_actions.roll_dice() + assert reply.status_code == 200 + roll = templates[-1]['dice'] + new_id = templates[-1]['story_id'] + + reply = story_actions.add_story_text(new_id, roll) + assert reply.status_code == 302 + + # First like + reply = story_actions.post_like_reaction(new_id) + assert reply.status_code == 200 + r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() + s = Story.query.get(new_id) + assert r is not None + assert r.reaction_val == 1 + assert s.likes == 1 and s.dislikes == 0 + + # duplicated like + reply = story_actions.post_like_reaction(new_id) + assert reply.status_code == 400 + database.session.refresh(r) + database.session.refresh(s) + assert r is not None + assert r.reaction_val == 1 + assert s.likes == 1 and s.dislikes == 0 + + auth.logout() + auth.login('test1', 'test1123') + + # Second like + reply = story_actions.post_like_reaction(new_id) + assert reply.status_code == 200 + r = Reaction.query.filter_by(reactor_id=2, story_id=new_id).one() + s = Story.query.get(new_id) + assert r is not None + assert r.reaction_val == 1 + assert s.likes == 2 and s.dislikes == 0 + + +def test_dislike(client, auth, database, templates, story_actions): + auth.login() + + # Invalid story + reply = story_actions.post_dislike_reaction(1) + assert reply.status_code == 404 + + reply = story_actions.roll_dice() + assert reply.status_code == 200 + roll = templates[-1]['dice'] + new_id = templates[-1]['story_id'] + reply = story_actions.add_story_text(new_id, roll) + assert reply.status_code == 302 + + # First like + reply = story_actions.post_dislike_reaction(new_id) + assert reply.status_code == 200 + r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() + s = Story.query.get(new_id) + assert r is not None + assert r.reaction_val == -1 + assert s.likes == 0 and s.dislikes == 1 + + # duplicated like + reply = story_actions.post_dislike_reaction(new_id) + assert reply.status_code == 400 + database.session.refresh(r) + database.session.refresh(s) + assert r is not None + assert r.reaction_val == -1 + assert s.likes == 0 and s.dislikes == 1 + + auth.logout() + auth.login('test1', 'test1123') + # Second like + reply = story_actions.post_dislike_reaction(new_id) + assert reply.status_code == 200 + r = Reaction.query.filter_by(reactor_id=2, story_id=new_id).one() + s = Story.query.get(new_id) + assert r is not None + assert r.reaction_val == -1 + assert s.likes == 0 and s.dislikes == 2 + +def test_reaction_change(client, auth, database, templates, story_actions): + auth.login() + + reply = story_actions.roll_dice() + assert reply.status_code == 200 + roll = templates[-1]['dice'] + new_id = templates[-1]['story_id'] + + reply = story_actions.add_story_text(new_id, roll) + assert reply.status_code == 302 + + # First like + reply = story_actions.post_like_reaction(1) + assert reply.status_code == 200 + r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() + s = Story.query.get(new_id) + assert r is not None + assert r.reaction_val == 1 + assert s.likes == 1 and s.dislikes == 0 + + auth.logout() + auth.login() + + # Change with dislike + reply = story_actions.post_dislike_reaction(new_id) + assert reply.status_code == 200 + r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() + s = Story.query.get(new_id) + assert r is not None + assert r.reaction_val == -1 + assert s.likes == 0 and s.dislikes == 1 + + # Change with like + reply = story_actions.post_like_reaction(new_id) + assert reply.status_code == 200 + r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() + s = Story.query.get(new_id) + assert r is not None + assert r.reaction_val == 1 + assert s.likes == 1 and s.dislikes == 0 + + +def test_react_to_deleted_story(client, auth, database, templates, + story_actions): + auth.login() + + # add valid story + reply = story_actions.roll_dice() + assert reply.status_code == 200 + roll = templates[-1]['dice'] + new_id = templates[-1]['story_id'] + + reply = story_actions.add_story_text(new_id, roll) + assert reply.status_code == 302 + + reply = story_actions.delete_story(new_id) + assert reply.status_code == 200 + + # like it + reply = story_actions.post_like_reaction(new_id) + assert reply.status_code == 410 + + # dislike it + reply = story_actions.post_dislike_reaction(new_id) + assert reply.status_code == 410 + + +def test_react_to_draft(client, auth, database, templates, story_actions): + auth.login() + + # add draft + reply = story_actions.roll_dice() + assert reply.status_code == 200 + new_id = templates[-1]['story_id'] + + # like it + reply = story_actions.post_like_reaction(new_id) + assert reply.status_code == 403 + + # dislike it + reply = story_actions.post_dislike_reaction(new_id) + assert reply.status_code == 403 diff --git a/monolith/tests/test_stories.py b/monolith/tests/test_stories.py index a048669..4d0ba72 100644 --- a/monolith/tests/test_stories.py +++ b/monolith/tests/test_stories.py @@ -2,6 +2,9 @@ from sqlalchemy import desc +import datetime as dt +import pytest + def test_new_story_selection(client, auth): auth.login() @@ -288,3 +291,93 @@ def test_delete_story_of_another_user(client, auth, database, templates, # delete story of another user reply = story_actions.delete_story(new_id) assert reply.status_code == 403 + + +@pytest.fixture +def init_database(database): + example = Story() + example.text = 'lorem ipsum dolor sit amet' + example.likes = 42 + example.author_id = 1 + example.date = dt.datetime(year=2018, month=12, day=1) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'bird drink coffee baloon' + example.likes = 42 + example.author_id = 1 + example.date = dt.datetime(year=2019, month=1, day=1) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'lorem Coffee dolor sit amet' + example.likes = 42 + example.author_id = 1 + example.date = dt.datetime(year=2019, month=3, day=12) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + example = Story() + example.text = 'bird cofFee baloon amet' + example.likes = 42 + example.author_id = 1 + example.date = dt.datetime(year=2017, month=10, day=1) + example.is_draft = False + example.deleted = False + example.dice_set = ['a', 'b', 'c'] + database.session.add(example) + + database.session.commit() + + +def test_all_stories(client, templates, init_database): + reply = client.get('/stories') + assert reply.status_code == 200 + + stories = templates[-1]['stories'] + message = templates[-1]['message'] + assert stories.count() == 4 + assert message == '' + + +def test_query_story(client, templates, init_database): + # valid query params, no matches + reply = client.get('/stories?q=foo') + assert reply.status_code == 200 + + stories = templates[-1]['stories'] + assert not stories.all() + + # valid query params, single word + reply = client.get('/stories?q=dolor') + assert reply.status_code == 200 + stories = templates[-1]['stories'].all() + assert len(stories) == 2 + for s in stories: + assert 'dolor' in s.text + + # valid query params, multiple word + reply = client.get('/stories?q=lorem dolor') + assert reply.status_code == 200 + stories = templates[-1]['stories'].all() + assert len(stories) == 2 + for s in stories: + assert 'lorem' in s.text or 'dolor' in s.text + + # valid query params, case insensitive + reply = client.get('/stories?q=CoFFeE') + assert reply.status_code == 200 + stories = templates[-1]['stories'].all() + assert len(stories) == 3 + for s in stories: + assert 'coffee' in s.text.lower() + + diff --git a/monolith/tests/test_story_by_interest.py b/monolith/tests/test_story_by_interest.py deleted file mode 100644 index dc00180..0000000 --- a/monolith/tests/test_story_by_interest.py +++ /dev/null @@ -1,42 +0,0 @@ -import datetime as dt - -from monolith.database import Story - - -def test_get_by_interest(client, auth, database, templates, story_actions): - auth.login() - - example1 = Story() - example1.theme = 'halloween' - example1.text = 'Halloween story of test1 user :)' - example1.author_id = 2 - example1.is_draft = False - example1.deleted = False - example1.dice_set = ['a', 'b', 'c'] - database.session.add(example1) - database.session.commit() - - example2 = Story() - example2.theme = 'xmas' - example2.text = 'Xmas story of test2 user :)' - example2.author_id = 3 - example2.is_draft = False - example2.deleted = False - example2.dice_set = ['a', 'b', 'c'] - database.session.add(example2) - database.session.commit() - - example3 = Story() - example3.theme = 'xmas' - example3.theme = 'Old xmas story of test3 user :)' - example3.date = dt.datetime.now() - dt.timedelta(days=6) - example3.author_id = 4 - example3.is_draft = False - example3.deleted = False - example3.dice_set = ['a', 'b', 'c'] - database.session.add(example3) - database.session.commit() - - reply = story_actions.get_all_stories(theme='xmas') - assert reply.status_code == 200 - assert templates[-1]['stories'].all() == [example2] diff --git a/monolith/tests/test_unitReactions.py b/monolith/tests/test_unitReactions.py deleted file mode 100644 index c1e1157..0000000 --- a/monolith/tests/test_unitReactions.py +++ /dev/null @@ -1,195 +0,0 @@ -from monolith.database import Reaction, Story - - -def test_viewStory(client, auth, templates, story_actions): - auth.login() - - # Create new story - reply = story_actions.roll_dice() - assert reply.status_code == 200 - roll = templates[-1]['dice'] - new_id = templates[-1]['story_id'] - - reply = story_actions.add_story_text(new_id, roll) - assert reply.status_code == 302 - - # retrieve the trial story - reply = story_actions.get_story(new_id) - assert reply.status_code == 200 - - # retrieve non-existing story - reply = story_actions.get_story(0) - assert reply.status_code == 404 - - -def test_like(client, auth, database, templates, story_actions): - auth.login() - - # Invalid story - reply = story_actions.post_like_reaction(1) - assert reply.status_code == 404 - - reply = story_actions.roll_dice() - assert reply.status_code == 200 - roll = templates[-1]['dice'] - new_id = templates[-1]['story_id'] - - reply = story_actions.add_story_text(new_id, roll) - assert reply.status_code == 302 - - # First like - reply = story_actions.post_like_reaction(new_id) - assert reply.status_code == 200 - r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() - s = Story.query.get(new_id) - assert r is not None - assert r.reaction_val == 1 - assert s.likes == 1 and s.dislikes == 0 - - # duplicated like - reply = story_actions.post_like_reaction(new_id) - assert reply.status_code == 400 - database.session.refresh(r) - database.session.refresh(s) - assert r is not None - assert r.reaction_val == 1 - assert s.likes == 1 and s.dislikes == 0 - - auth.logout() - auth.login('test1', 'test1123') - - # Second like - reply = story_actions.post_like_reaction(new_id) - assert reply.status_code == 200 - r = Reaction.query.filter_by(reactor_id=2, story_id=new_id).one() - s = Story.query.get(new_id) - assert r is not None - assert r.reaction_val == 1 - assert s.likes == 2 and s.dislikes == 0 - - -def test_dislike(client, auth, database, templates, story_actions): - auth.login() - - # Invalid story - reply = story_actions.post_dislike_reaction(1) - assert reply.status_code == 404 - - reply = story_actions.roll_dice() - assert reply.status_code == 200 - roll = templates[-1]['dice'] - new_id = templates[-1]['story_id'] - reply = story_actions.add_story_text(new_id, roll) - assert reply.status_code == 302 - - # First like - reply = story_actions.post_dislike_reaction(new_id) - assert reply.status_code == 200 - r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() - s = Story.query.get(new_id) - assert r is not None - assert r.reaction_val == -1 - assert s.likes == 0 and s.dislikes == 1 - - # duplicated like - reply = story_actions.post_dislike_reaction(new_id) - assert reply.status_code == 400 - database.session.refresh(r) - database.session.refresh(s) - assert r is not None - assert r.reaction_val == -1 - assert s.likes == 0 and s.dislikes == 1 - - auth.logout() - auth.login('test1', 'test1123') - # Second like - reply = story_actions.post_dislike_reaction(new_id) - assert reply.status_code == 200 - r = Reaction.query.filter_by(reactor_id=2, story_id=new_id).one() - s = Story.query.get(new_id) - assert r is not None - assert r.reaction_val == -1 - assert s.likes == 0 and s.dislikes == 2 - -def test_reaction_change(client, auth, database, templates, story_actions): - auth.login() - - reply = story_actions.roll_dice() - assert reply.status_code == 200 - roll = templates[-1]['dice'] - new_id = templates[-1]['story_id'] - - reply = story_actions.add_story_text(new_id, roll) - assert reply.status_code == 302 - - # First like - reply = story_actions.post_like_reaction(1) - assert reply.status_code == 200 - r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() - s = Story.query.get(new_id) - assert r is not None - assert r.reaction_val == 1 - assert s.likes == 1 and s.dislikes == 0 - - auth.logout() - auth.login() - - # Change with dislike - reply = story_actions.post_dislike_reaction(new_id) - assert reply.status_code == 200 - r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() - s = Story.query.get(new_id) - assert r is not None - assert r.reaction_val == -1 - assert s.likes == 0 and s.dislikes == 1 - - # Change with like - reply = story_actions.post_like_reaction(new_id) - assert reply.status_code == 200 - r = Reaction.query.filter_by(reactor_id=1, story_id=new_id).one() - s = Story.query.get(new_id) - assert r is not None - assert r.reaction_val == 1 - assert s.likes == 1 and s.dislikes == 0 - - -def test_react_to_deleted_story(client, auth, database, templates, - story_actions): - auth.login() - - # add valid story - reply = story_actions.roll_dice() - assert reply.status_code == 200 - roll = templates[-1]['dice'] - new_id = templates[-1]['story_id'] - - reply = story_actions.add_story_text(new_id, roll) - assert reply.status_code == 302 - - reply = story_actions.delete_story(new_id) - assert reply.status_code == 200 - - # like it - reply = story_actions.post_like_reaction(new_id) - assert reply.status_code == 410 - - # dislike it - reply = story_actions.post_dislike_reaction(new_id) - assert reply.status_code == 410 - - -def test_react_to_draft(client, auth, database, templates, story_actions): - auth.login() - - # add draft - reply = story_actions.roll_dice() - assert reply.status_code == 200 - new_id = templates[-1]['story_id'] - - # like it - reply = story_actions.post_like_reaction(new_id) - assert reply.status_code == 403 - - # dislike it - reply = story_actions.post_dislike_reaction(new_id) - assert reply.status_code == 403 diff --git a/monolith/tests/test_users.py b/monolith/tests/test_users.py deleted file mode 100644 index e6af3fb..0000000 --- a/monolith/tests/test_users.py +++ /dev/null @@ -1,97 +0,0 @@ -from monolith.database import Story, User - - -def test_getusers(client, database, auth, templates): - reply = auth.login('Admin', 'admin') - assert reply.status_code == 302 - - reply = client.get('/users') - template_capture = templates[-1]['result'] - users = [(r[0], r[1]) for r in template_capture] - assert users == [('Admin', None), - ('test1', None), - ('test2', None), - ('test3', None)] - - example = Story() - example.text = 'First story of admin user :)' - example.author_id = 1 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - database.session.commit() - - reply = client.get('/users') - template_capture = templates[-1]['result'] - users = [(r[0], r[1]) for r in template_capture] - assert users == [('Admin', 'First story of admin user :)'), - ('test1', None), - ('test2', None), - ('test3', None)] - - client.get('/logout') - - client.post('/signup', data={'email': 'prova@prova.com', - 'username': 'prova', - 'password': 'prova123'}) - reply = client.get('/users') - template_capture = templates[-1]['result'] - users = [(r[0], r[1]) for r in template_capture] - assert users == [('Admin', 'First story of admin user :)'), - ('test1', None), - ('test2', None), - ('test3', None), - ('prova', None)] - - example = Story() - example.text = 'First story of prova user :)' - example.author_id = 5 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - database.session.commit() - - reply = client.get('/users') - template_capture = templates[-1]['result'] - users = [(r[0], r[1]) for r in template_capture] - assert users == [('Admin', 'First story of admin user :)'), - ('test1', None), - ('test2', None), - ('test3', None), - ('prova', 'First story of prova user :)')] - - example = Story() - example.text = 'Second story of admin user :)' - example.author_id = 1 - example.is_draft = False - example.deleted = False - example.dice_set = ['a', 'b', 'c'] - database.session.add(example) - database.session.commit() - - reply = client.get('/users') - template_capture = templates[-1]['result'] - users = [(r[0], r[1]) for r in template_capture] - assert users == [('Admin', 'Second story of admin user :)'), - ('test1', None), - ('test2', None), - ('test3', None), - ('prova', 'First story of prova user :)')] - - -def test_telegram_register(app, client, database): - reply = client.post('/bot/register', - data={'username': 'Admin', 'chat_id': 42}) - assert reply.status_code == 200 - assert database.session.query(User).get(1).telegram_chat_id == 42 - - reply = client.post('/bot/register', - data={'username': 'test', 'chat_id': 42}) - assert reply.status_code == 404 - - reply = client.post('/bot/register', data={'username': 'test'}) - assert reply.status_code == 400 - reply = client.post('/bot/register', data={'chat_id': 42}) - assert reply.status_code == 400