From 3387923bffb3432a77fd48e3fa9acbb79cf79946 Mon Sep 17 00:00:00 2001 From: Dimas FM <dimasfaid@gmail.com> Date: Fri, 3 May 2024 22:29:32 +0700 Subject: [PATCH] refactor test cases into one files --- db/comments.db | Bin 24576 -> 24576 bytes db/posts.db | Bin 15060992 -> 15060992 bytes db/users.db | Bin 53248 -> 53248 bytes templates/tailwindUI/post.html.jinja | 2 +- tests/conftest.py | 2 +- tests/functions/delete_comment.py | 8 ++--- tests/test_comment.py | 34 ++++++++++++++++++++ tests/test_create_comment.py | 46 --------------------------- tests/test_create_post.py | 23 -------------- tests/test_delete_comment.py | 37 --------------------- tests/test_delete_post.py | 33 ------------------- tests/test_edit_post.py | 23 -------------- tests/test_post.py | 43 +++++++++++++++++++++++++ tests/utils/__init__.py | 2 ++ tests/utils/delete_comment.py | 9 ++++++ tests/utils/delete_post.py | 2 +- tests/utils/is_post_exist.py | 16 ++++++++++ 17 files changed, 111 insertions(+), 169 deletions(-) create mode 100644 tests/test_comment.py delete mode 100644 tests/test_create_comment.py delete mode 100644 tests/test_create_post.py delete mode 100644 tests/test_delete_comment.py delete mode 100644 tests/test_delete_post.py delete mode 100644 tests/test_edit_post.py create mode 100644 tests/test_post.py create mode 100644 tests/utils/delete_comment.py create mode 100644 tests/utils/is_post_exist.py diff --git a/db/comments.db b/db/comments.db index 3b4680d0878fb201e5136b1f329efd2f2301f6d8..986328e8d39c5d6c219826486584b02fe6c8e2a1 100644 GIT binary patch delta 110 zcmZoTz}Rqrae_4Cp@}lijE6QR%-3fO-ekZcAj8e_jDhbg?>e4nuKS$j96D^fSvRrf zv1+kAV_CFW!J&zT$th%VfvY{MDU+R35QN3p;S>mFnQVXT6aZo|n`~dQ*)fWfar16B GS4jYvIwLdy delta 94 zcmZoTz}Rqrae_4C%84@0j4L-L%-3i1-DJQbAj84BiGlAd?>e4nuKS$j96D^fSvRrf xv1&0}FiUJ!aA;zgY#7<W<m5KFz}24Bc)q`rABe?lysdV#V-zRj=G|_tk^o+y9N7Q> diff --git a/db/posts.db b/db/posts.db index 74a4367cc8052819d04064c3ffda17caf0d31838..6ac96c4c168ec5394dd2238eb687e0b0b553c055 100644 GIT binary patch delta 4455 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 H4H)=8u5C`O delta 5084 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 OQZ~9>ga(6qr~DtobF19| diff --git a/db/users.db b/db/users.db index c37b2335cbf6e8cb96d19b1f0d567dd4003e3a0b..e6d76785f577848bdd591f541e525eeffd4a64ff 100644 GIT binary patch delta 27 jcmZozz}&Ead4e?K%ZW11j4wAP*dAhHuG&2RP$Dk?lnV;S delta 27 jcmZozz}&Ead4e?Ku8A_vjJq}_*dAhH%Gf;rP$Dk?jpqth diff --git a/templates/tailwindUI/post.html.jinja b/templates/tailwindUI/post.html.jinja index 5cd33eb..e49e907 100644 --- a/templates/tailwindUI/post.html.jinja +++ b/templates/tailwindUI/post.html.jinja @@ -79,7 +79,7 @@ <!-- Comments Section --> <div> {% for comment in comments %} - <div class="flex flex-col mx-auto mt-8 mb-4 p-2 max-w-lg"> + <div data-testid="comment-{{ comment[0] }}" class="flex flex-col mx-auto mt-8 mb-4 p-2 max-w-lg"> <div class="flex w-full justify-between"> <div class="mx-2"> <a href="/user/{{ comment[3] }}" class="flex items-center hover:text-rose-500 duration-150 select-none"> diff --git a/tests/conftest.py b/tests/conftest.py index e711c66..6e80a3d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,7 +6,7 @@ from playwright.sync_api import sync_playwright, Browser @pytest.fixture(scope="session") def browser(): with sync_playwright() as p: - browser = p.chromium.launch(headless=USE_HEADLESS) + browser = p.chromium.launch(headless=False) yield browser print('\nClosing Browser') browser.close() diff --git a/tests/functions/delete_comment.py b/tests/functions/delete_comment.py index 0e2b59a..2eb71a2 100644 --- a/tests/functions/delete_comment.py +++ b/tests/functions/delete_comment.py @@ -1,9 +1,9 @@ from playwright.sync_api import Page from tests.utils import URL -def delete_comment(page: Page, post_id: int) -> Page: +def delete_comment(page: Page, post_id: int, comment_id: int) -> Page: page.goto(URL + '/post/' + str(post_id)) - while page.locator("[name=commentDeleteButton]").count() > 0: - page.locator("[name=commentDeleteButton]").first.click() - + comment_section = page.get_by_test_id(f"comment-{str(comment_id)}") + comment_section.locator("[name=commentDeleteButton]").click() + return page \ No newline at end of file diff --git a/tests/test_comment.py b/tests/test_comment.py new file mode 100644 index 0000000..9c2f2da --- /dev/null +++ b/tests/test_comment.py @@ -0,0 +1,34 @@ +# Import the playwright module and the constants file +from playwright.sync_api import expect, Page +import pytest +from tests.utils import URL, UserTest, delete_comment_utils, is_comment_exist +from tests.functions import login, create_comment, new_comment, delete_comment + +@pytest.fixture(autouse=True) +def user (): + user = UserTest("User_A") + yield user + +# Define a function that takes a playwright object as an argument +def test_create_comment(page: Page, user: UserTest) -> None: + page.goto(URL) + + page = login(page, user) + + page, comment_id = create_comment(page, 1) + + expect(page.get_by_test_id(f"comment-{str(comment_id)}")).to_be_visible() + + delete_comment_utils(comment_id) + +def test_delete_comment(page: Page, user: UserTest) -> None: + post_id = 1 + + page.goto(URL) + + page = login(page, user) + page, comment_id = create_comment(page, post_id) + + page = delete_comment(page, post_id, comment_id) + + assert is_comment_exist(comment_id) == False \ No newline at end of file diff --git a/tests/test_create_comment.py b/tests/test_create_comment.py deleted file mode 100644 index 54d6b51..0000000 --- a/tests/test_create_comment.py +++ /dev/null @@ -1,46 +0,0 @@ -# Import the playwright module and the constants file -from playwright.sync_api import Playwright, expect, Page -import pytest, sqlite3 -from tests.utils import USE_HEADLESS, URL, DB_COMMENTS_ROOT, UserTest -from tests.functions import login, create_comment, new_comment - -@pytest.fixture(autouse=True) -def user (): - user = UserTest("User_A") - yield user - -@pytest.fixture(autouse=True) -def delete_comment(): - yield - print('\nDeleting created comment') - connection = sqlite3.connect(DB_COMMENTS_ROOT) - cursor = connection.cursor() - comment_id = get_newest_comment() - cursor.execute('DELETE FROM comments where id = ?', [(comment_id)]) - connection.commit() - -# Define a function that takes a playwright object as an argument -def test_create_comment(page: Page, user: UserTest) -> None: - page.goto(URL) - - page = login(page, user) - - page, comment_id = create_comment(page, 1) - - expect(page.get_by_text(new_comment)).to_be_visible() - -def get_newest_comment(): - connection = sqlite3.connect(DB_COMMENTS_ROOT) - cursor = connection.cursor() - query = ''' - SELECT id FROM comments where id = ( - SELECT max(id) FROM comments - ) - ''' - comment_id = -1 - - for row in cursor.execute(query): - comment_id = row[0] - - connection.close() - return comment_id \ No newline at end of file diff --git a/tests/test_create_post.py b/tests/test_create_post.py deleted file mode 100644 index 808535c..0000000 --- a/tests/test_create_post.py +++ /dev/null @@ -1,23 +0,0 @@ -from playwright.sync_api import Playwright, expect, Page -import pytest -from tests.utils import USE_HEADLESS, URL, UserTest, delete_post -from tests.functions import login, create_post - -@pytest.fixture(autouse=True) -def user (): - user = UserTest("User_A") - yield user - -# Define a function that takes a playwright object as an argument -def test_create_post(page: Page, user: UserTest) -> None: - page.goto(URL) - - page = login(page, user) - - page, post_id = create_post(page) - - response = page.request.get(URL + '/post/' + str(post_id)) - expect(response).to_be_ok() - - delete_post(post_id) - diff --git a/tests/test_delete_comment.py b/tests/test_delete_comment.py deleted file mode 100644 index b97d901..0000000 --- a/tests/test_delete_comment.py +++ /dev/null @@ -1,37 +0,0 @@ -from playwright.sync_api import Playwright, expect, Page - -from tests.utils import URL, DB_COMMENTS_ROOT, USE_HEADLESS, UserTest -from tests.functions import login, create_comment, delete_comment -import pytest, sqlite3 - -post_id = 1 - -@pytest.fixture(autouse=True) -def user(): - user = UserTest("User_A") - yield user - -def test_delete_comment(page: Page, user) -> None: - page.goto(URL) - - page = login(page, user) - page, comment_id = create_comment(page, post_id) - - - page = delete_comment(page, post_id) - - assert is_comment_exist(comment_id) == False - -def is_comment_exist(id): - connection = sqlite3.connect(DB_COMMENTS_ROOT) - cursor = connection.cursor() - query = ''' - SELECT * FROM comments where id = ? - ''' - exist = False - - for row in cursor.execute(query,[(id)]): - exist = True - - connection.close() - return exist \ No newline at end of file diff --git a/tests/test_delete_post.py b/tests/test_delete_post.py deleted file mode 100644 index b0bd239..0000000 --- a/tests/test_delete_post.py +++ /dev/null @@ -1,33 +0,0 @@ -from playwright.sync_api import Playwright, expect, Page -import pytest, sqlite3 -from tests.utils import USE_HEADLESS, URL, DB_POSTS_ROOT, UserTest, delete_post -from tests.functions import login, create_post, delete_post - -@pytest.fixture(autouse=True) -def user (): - user = UserTest("User_A") - yield user - - -def test_delete_post(page: Page, user) -> None: - page.goto(URL) - - page = login(page, user) - page, post_id = create_post(page) - page = delete_post(page, post_id) - - assert is_post_exist(post_id) == False - -def is_post_exist(id): - connection = sqlite3.connect(DB_POSTS_ROOT) - cursor = connection.cursor() - query = ''' - SELECT * FROM posts where id = ? - ''' - exist = False - - for row in cursor.execute(query,[(id)]): - exist = True - - connection.close() - return exist \ No newline at end of file diff --git a/tests/test_edit_post.py b/tests/test_edit_post.py deleted file mode 100644 index 822c464..0000000 --- a/tests/test_edit_post.py +++ /dev/null @@ -1,23 +0,0 @@ -from playwright.sync_api import Playwright, expect, Page - -import pytest -from tests.utils import USE_HEADLESS, URL, DB_POSTS_ROOT, UserTest, delete_post -from tests.functions import login, create_post, edit_post, new_title - -@pytest.fixture(autouse=True) -def user (): - user = UserTest("User_A") - yield user - -def test_edit_post(page: Page, user) -> None: - page.goto(URL) - - page = login(page, user) - page, post_id = create_post(page) - - page = edit_post(page, post_id) - - expect(page).to_have_url(URL + '/post/' + str(post_id)) - expect(page).to_have_title(new_title) - - delete_post(post_id) \ No newline at end of file diff --git a/tests/test_post.py b/tests/test_post.py new file mode 100644 index 0000000..44821f3 --- /dev/null +++ b/tests/test_post.py @@ -0,0 +1,43 @@ +from playwright.sync_api import Page, expect +import pytest +from tests.utils import URL, UserTest, delete_post_utils, is_post_exist +from tests.functions import login, create_post, delete_post, edit_post, new_title + +@pytest.fixture(autouse=True) +def user (): + user = UserTest("User_A") + yield user + +def test_create_post(page: Page, user: UserTest) -> None: + page.goto(URL) + + page = login(page, user) + + page, post_id = create_post(page) + + response = page.request.get(URL + '/post/' + str(post_id)) + expect(response).to_be_ok() + + delete_post_utils(post_id) + +def test_delete_post(page: Page, user) -> None: + page.goto(URL) + + page = login(page, user) + page, post_id = create_post(page) + page = delete_post(page, post_id) + + assert is_post_exist(post_id) == False + +def test_edit_post(page: Page, user) -> None: + page.goto(URL) + + page = login(page, user) + page, post_id = create_post(page) + + page = edit_post(page, post_id) + + expect(page).to_have_url(URL + '/post/' + str(post_id)) + expect(page).to_have_title(new_title) + + delete_post_utils(post_id) \ No newline at end of file diff --git a/tests/utils/__init__.py b/tests/utils/__init__.py index 2403e91..f616f16 100644 --- a/tests/utils/__init__.py +++ b/tests/utils/__init__.py @@ -4,4 +4,6 @@ from .get_newest_comment import * from .get_newest_post import * from .is_comment_exist import * from .is_user_exist import * +from .is_post_exist import * +from .delete_comment import * from .user import * \ No newline at end of file diff --git a/tests/utils/delete_comment.py b/tests/utils/delete_comment.py new file mode 100644 index 0000000..3f8db2e --- /dev/null +++ b/tests/utils/delete_comment.py @@ -0,0 +1,9 @@ +import sqlite3 +from tests.utils import DB_COMMENTS_ROOT, get_newest_comment + +def delete_comment_utils(comment_id): + print('\nDeleting created comment') + connection = sqlite3.connect(DB_COMMENTS_ROOT) + cursor = connection.cursor() + cursor.execute('DELETE FROM comments where id = ?', [(comment_id)]) + connection.commit() \ No newline at end of file diff --git a/tests/utils/delete_post.py b/tests/utils/delete_post.py index a0ebf8a..b915c11 100644 --- a/tests/utils/delete_post.py +++ b/tests/utils/delete_post.py @@ -1,7 +1,7 @@ import sqlite3 from tests.utils import DB_POSTS_ROOT -def delete_post (post_id: int): +def delete_post_utils (post_id: int): print('\nDeleting newest post') connection = sqlite3.connect(DB_POSTS_ROOT) cursor = connection.cursor() diff --git a/tests/utils/is_post_exist.py b/tests/utils/is_post_exist.py new file mode 100644 index 0000000..bd358c0 --- /dev/null +++ b/tests/utils/is_post_exist.py @@ -0,0 +1,16 @@ +import sqlite3 +from tests.utils import DB_POSTS_ROOT + +def is_post_exist(id): + connection = sqlite3.connect(DB_POSTS_ROOT) + cursor = connection.cursor() + query = ''' + SELECT * FROM posts where id = ? + ''' + exist = False + + for row in cursor.execute(query,[(id)]): + exist = True + + connection.close() + return exist \ No newline at end of file -- GitLab