42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
|
from app import app
|
||
|
from flask.testing import FlaskClient
|
||
|
import pytest
|
||
|
import os
|
||
|
|
||
|
|
||
|
@pytest.fixture(scope="module")
|
||
|
def test_client() -> FlaskClient:
|
||
|
""" Test that required environment variables are set
|
||
|
ahead of runtime
|
||
|
"""
|
||
|
os.environ['CONFIG_TYPE'] = 'config.TestingConfig'
|
||
|
|
||
|
with app.test_client() as testing_client:
|
||
|
with app.app_context():
|
||
|
yield testing_client
|
||
|
|
||
|
|
||
|
def test_homepage(test_client: FlaskClient):
|
||
|
""" Tests that the main homepage loads correctly
|
||
|
once the '/' endpoint is hit
|
||
|
"""
|
||
|
response = test_client.get('/')
|
||
|
assert response.status_code == 302
|
||
|
|
||
|
response = test_client.get('/products')
|
||
|
assert response.status_code == 308
|
||
|
|
||
|
|
||
|
def test_products(test_client: FlaskClient):
|
||
|
""" Tests that a product page is displayed when
|
||
|
hitting one of the product endpoints
|
||
|
"""
|
||
|
response = test_client.get('/products/2')
|
||
|
assert response.status_code == 200
|
||
|
|
||
|
response = test_client.get('/products/50')
|
||
|
assert response.status_code == 302
|
||
|
|
||
|
response = test_client.get('/products/Books')
|
||
|
assert response.status_code == 200
|