recipe-graph/test/test_insert_sites.py

101 lines
2.8 KiB
Python
Raw Permalink Normal View History

2022-10-15 13:17:23 -04:00
import json
import os
2023-05-16 17:24:06 -04:00
from recipe_graph import insert_sites, db
2022-10-15 12:51:08 -04:00
from sqlalchemy import select
2023-05-16 17:24:06 -04:00
import sqlalchemy
2022-10-15 14:27:40 -04:00
import logging
2022-10-15 12:51:08 -04:00
import pytest
2023-05-16 17:24:06 -04:00
from test_db import engine, init_db
2022-10-15 13:17:23 -04:00
@pytest.fixture
2023-05-16 17:24:06 -04:00
def json_data() -> list[dict[str, any]]:
2022-10-15 13:17:23 -04:00
return [{"key": "value"}, {"test": "value1", "test2": "value2"}]
2023-05-16 17:24:06 -04:00
@pytest.fixture
def db_initialized(engine) -> sqlalchemy.engine.Engine:
init_db(engine)
return engine
@pytest.fixture
def mock_sites() -> list[dict[str, any]]:
return [
{
"name": "example-site",
"ingredient_class": "example-item-name",
"name_class": "example-content",
"base_url": "https://www.example.com/recipe/",
},
{
"name": "test-site",
"ingredient_class": "test-item-name",
"name_class": "test-content",
"base_url": "https://www.test.com/recipe/",
},
]
2022-10-15 13:17:23 -04:00
@pytest.fixture
def json_file(json_data: list[dict]) -> str:
f_path = "test.json"
2023-05-16 17:24:06 -04:00
with open(f_path, "w") as f:
2022-10-15 13:17:23 -04:00
json.dump(json_data, f)
yield f_path
if os.path.exists(f_path):
os.remove(f_path)
2023-05-16 17:24:06 -04:00
2022-10-15 13:17:23 -04:00
def test_load_file(json_file: str, json_data):
test_data = insert_sites.load_file(json_file)
2022-10-15 14:27:40 -04:00
assert test_data == json_data
2023-05-16 17:24:06 -04:00
2022-10-15 14:27:40 -04:00
def test_setup_argparser():
file_name = "test"
args = insert_sites.setup_argparser([file_name])
assert len(vars(args)) == 2
assert args.file == file_name
assert args.verbose == False
args = insert_sites.setup_argparser([file_name, "-v"])
assert args.file == file_name
assert args.verbose == True
args = insert_sites.setup_argparser([file_name, "--verbose"])
assert args.file == file_name
assert args.verbose == True
2023-05-16 17:24:06 -04:00
2022-10-15 14:27:40 -04:00
def test_setup_logging():
args = insert_sites.setup_argparser(["test"])
logger = insert_sites.setup_logging(args)
assert logger.level == logging.WARNING
args = insert_sites.setup_argparser(["test", "-v"])
2023-05-16 17:24:06 -04:00
logger = insert_sites.setup_logging(args)
2022-10-15 14:27:40 -04:00
assert logger.level == logging.INFO
args = insert_sites.setup_argparser(["test", "--verbose"])
2023-05-16 17:24:06 -04:00
logger = insert_sites.setup_logging(args)
2022-10-15 14:27:40 -04:00
assert logger.level == logging.INFO
2023-05-16 17:24:06 -04:00
def test_add_sites(mock_sites, db_initialized):
db_session = db.get_session()
insert_sites.add_sites(db_session, mock_sites)
results = []
with db_session.begin() as session:
results = session.execute(select(db.RecipeSite)).all()
assert len(results) > 0
assert len(results) == 2
print(db.RecipeSite(name="a"))
for i, (site,) in enumerate(results):
site.name == mock_sites[i]["name"]
site.ingredient_class == mock_sites[i]["ingredient_class"]
site.name_class == mock_sites[i]["name_class"]
site.base_url == mock_sites[i]["base_url"]