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
