48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
from flask import url_for
|
|
from urllib.parse import quote
|
|
|
|
from tests.factories import UserFactory
|
|
|
|
|
|
PROTECTED_URL = "/portfolios"
|
|
|
|
|
|
def test_request_page_with_complete_profile(client, user_session):
|
|
user = UserFactory.create()
|
|
user_session(user)
|
|
response = client.get(PROTECTED_URL, follow_redirects=False)
|
|
assert response.status_code == 200
|
|
|
|
|
|
def test_redirect_when_profile_missing_fields(client, user_session):
|
|
user = UserFactory.create(date_latest_training=None)
|
|
user_session(user)
|
|
response = client.get(PROTECTED_URL, follow_redirects=False)
|
|
assert response.status_code == 302
|
|
assert "/user?next={}".format(quote(PROTECTED_URL, safe="")) in response.location
|
|
|
|
|
|
def test_unprotected_route_with_incomplete_profile(client, user_session):
|
|
user = UserFactory.create(date_latest_training=None)
|
|
user_session(user)
|
|
response = client.get("/about", follow_redirects=False)
|
|
assert response.status_code == 200
|
|
|
|
|
|
def test_completing_user_profile(client, user_session):
|
|
user = UserFactory.create(phone_number=None)
|
|
user_session(user)
|
|
response = client.get(PROTECTED_URL, follow_redirects=True)
|
|
assert b"You must complete your profile" in response.data
|
|
|
|
updated_data = {**user.to_dictionary(), "phone_number": "5558675309"}
|
|
updated_data["date_latest_training"] = updated_data[
|
|
"date_latest_training"
|
|
].strftime("%m/%d/%Y")
|
|
response = client.post(url_for("users.update_user"), data=updated_data)
|
|
assert response.status_code == 200
|
|
|
|
response = client.get(PROTECTED_URL, follow_redirects=False)
|
|
assert response.status_code == 200
|
|
assert b"You must complete your profile" not in response.data
|