mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 07:31:07 -05:00
162 lines
5.4 KiB
Python
162 lines
5.4 KiB
Python
import pytest
|
|
from playwright.sync_api import expect, Page
|
|
|
|
|
|
def test_reviews_list_page(page: Page):
|
|
# Navigate to reviews page
|
|
page.goto("http://localhost:8000/reviews/")
|
|
|
|
# Check reviews list elements
|
|
expect(page.get_by_role("heading", name="Latest Reviews")).to_be_visible()
|
|
expect(page.get_by_role("searchbox", name="Search reviews")).to_be_visible()
|
|
|
|
# Check filter options
|
|
expect(page.get_by_role("combobox", name="Type")).to_be_visible()
|
|
expect(page.get_by_role("combobox", name="Rating")).to_be_visible()
|
|
expect(page.get_by_role("combobox", name="Sort By")).to_be_visible()
|
|
|
|
|
|
def test_review_search(page: Page):
|
|
# Navigate to reviews page
|
|
page.goto("http://localhost:8000/reviews/")
|
|
|
|
# Search for reviews
|
|
search_box = page.get_by_role("searchbox", name="Search reviews")
|
|
search_box.fill("great experience")
|
|
search_box.press("Enter")
|
|
|
|
# Verify search results
|
|
expect(page.get_by_text("great experience", exact=False)).to_be_visible()
|
|
|
|
|
|
def test_review_filters(page: Page):
|
|
# Navigate to reviews page
|
|
page.goto("http://localhost:8000/reviews/")
|
|
|
|
# Select type filter
|
|
page.get_by_role("combobox", name="Type").select_option("Parks")
|
|
|
|
# Select rating filter
|
|
page.get_by_role("combobox", name="Rating").select_option("5 Stars")
|
|
|
|
# Select sort order
|
|
page.get_by_role("combobox", name="Sort By").select_option("Most Recent")
|
|
|
|
# Verify filtered results
|
|
expect(page.get_by_text("Park Review")).to_be_visible()
|
|
expect(page.locator(".five-star-rating")).to_be_visible()
|
|
|
|
|
|
def test_review_detail_page(page: Page):
|
|
# Navigate to a specific review
|
|
page.goto("http://localhost:8000/reviews/1/")
|
|
|
|
# Check review details
|
|
expect(page.get_by_role("heading", name="Review")).to_be_visible()
|
|
expect(page.locator(".review-rating")).to_be_visible()
|
|
expect(page.locator(".review-date")).to_be_visible()
|
|
expect(page.locator(".review-author")).to_be_visible()
|
|
expect(page.locator(".review-content")).to_be_visible()
|
|
|
|
|
|
def test_review_voting(page: Page):
|
|
# First login
|
|
page.goto("http://localhost:8000/accounts/login/")
|
|
page.get_by_label("Username").fill("testuser")
|
|
page.get_by_label("Password").fill("testpass123")
|
|
page.get_by_role("button", name="Sign In").click()
|
|
|
|
# Navigate to review
|
|
page.goto("http://localhost:8000/reviews/1/")
|
|
|
|
# Click helpful button
|
|
page.get_by_role("button", name="Helpful").click()
|
|
|
|
# Verify vote registered
|
|
expect(page.get_by_text("You found this review helpful")).to_be_visible()
|
|
expect(page.locator(".helpful-count")).to_contain_text("1")
|
|
|
|
|
|
def test_review_comments(page: Page):
|
|
# First login
|
|
page.goto("http://localhost:8000/accounts/login/")
|
|
page.get_by_label("Username").fill("testuser")
|
|
page.get_by_label("Password").fill("testpass123")
|
|
page.get_by_role("button", name="Sign In").click()
|
|
|
|
# Navigate to review
|
|
page.goto("http://localhost:8000/reviews/1/")
|
|
|
|
# Add comment
|
|
page.get_by_label("Comment").fill("Great review! Very helpful.")
|
|
page.get_by_role("button", name="Post Comment").click()
|
|
|
|
# Verify comment appears
|
|
expect(page.get_by_text("Great review! Very helpful.")).to_be_visible()
|
|
|
|
|
|
def test_review_moderation(page: Page):
|
|
# First login as moderator
|
|
page.goto("http://localhost:8000/accounts/login/")
|
|
page.get_by_label("Username").fill("moderator")
|
|
page.get_by_label("Password").fill("modpass123")
|
|
page.get_by_role("button", name="Sign In").click()
|
|
|
|
# Navigate to review
|
|
page.goto("http://localhost:8000/reviews/1/")
|
|
|
|
# Check moderation options
|
|
expect(page.get_by_role("button", name="Edit Review")).to_be_visible()
|
|
expect(page.get_by_role("button", name="Delete Review")).to_be_visible()
|
|
expect(page.get_by_role("button", name="Flag Review")).to_be_visible()
|
|
|
|
|
|
def test_review_reporting(page: Page):
|
|
# First login
|
|
page.goto("http://localhost:8000/accounts/login/")
|
|
page.get_by_label("Username").fill("testuser")
|
|
page.get_by_label("Password").fill("testpass123")
|
|
page.get_by_role("button", name="Sign In").click()
|
|
|
|
# Navigate to review
|
|
page.goto("http://localhost:8000/reviews/1/")
|
|
|
|
# Click report button
|
|
page.get_by_role("button", name="Report Review").click()
|
|
|
|
# Fill report form
|
|
page.get_by_label("Reason").select_option("inappropriate")
|
|
page.get_by_label("Details").fill("This review contains inappropriate content")
|
|
|
|
# Submit report
|
|
page.get_by_role("button", name="Submit Report").click()
|
|
|
|
# Verify report confirmation
|
|
expect(page.get_by_text("Review reported successfully")).to_be_visible()
|
|
|
|
|
|
def test_review_editing(page: Page):
|
|
# First login as review author
|
|
page.goto("http://localhost:8000/accounts/login/")
|
|
page.get_by_label("Username").fill("testuser")
|
|
page.get_by_label("Password").fill("testpass123")
|
|
page.get_by_role("button", name="Sign In").click()
|
|
|
|
# Navigate to own review
|
|
page.goto("http://localhost:8000/reviews/1/")
|
|
|
|
# Click edit button
|
|
page.get_by_role("button", name="Edit Review").click()
|
|
|
|
# Modify review
|
|
page.get_by_label("Title").fill("Updated Review Title")
|
|
page.get_by_label("Review").fill("Updated review content")
|
|
|
|
# Save changes
|
|
page.get_by_role("button", name="Save Changes").click()
|
|
|
|
# Verify updates
|
|
expect(page.get_by_text("Updated Review Title")).to_be_visible()
|
|
expect(page.get_by_text("Updated review content")).to_be_visible()
|
|
expect(page.get_by_text("(edited)")).to_be_visible()
|