1
0
Fork 0
mirror of https://github.com/mealie-recipes/mealie.git synced 2025-08-06 05:55:23 +02:00

prs-fleshgolem-2070: feat: sqlalchemy 2.0 (#2096)

* upgrade sqlalchemy to 2.0

* rewrite all db models to sqla 2.0 mapping api

* fix some importing and typing weirdness

* fix types of a lot of nullable columns

* remove get_ref methods

* fix issues found by tests

* rewrite all queries in repository_recipe to 2.0 style

* rewrite all repository queries to 2.0 api

* rewrite all remaining queries to 2.0 api

* remove now-unneeded __allow_unmapped__ flag

* remove and fix some unneeded cases of "# type: ignore"

* fix formatting

* bump black version

* run black

* can this please be the last one. okay. just. okay.

* fix repository errors

* remove return

* drop open API validator

---------

Co-authored-by: Sören Busch <fleshgolem@gmx.net>
This commit is contained in:
Hayden 2023-02-06 18:43:12 -09:00 committed by GitHub
parent 91cd00976a
commit 9e77a9f367
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
86 changed files with 1776 additions and 1572 deletions

View file

@ -113,7 +113,6 @@ def test_recipe_repo_get_by_categories_multi(database: AllRepositories, unique_u
by_category = repo.get_by_categories(cast(list[RecipeCategory], created_categories))
assert len(by_category) == 10
for recipe_summary in by_category:
for recipe_category in recipe_summary.recipe_category:
assert recipe_category.id in known_category_ids

View file

@ -25,7 +25,6 @@ def test_camelize_variables():
def test_cast_to():
model = TestModel(long_name="Hello", long_int=1, long_float=1.1)
model2 = model.cast(TestModel2, another_str="World")
@ -37,7 +36,6 @@ def test_cast_to():
def test_map_to():
model = TestModel(long_name="Model1", long_int=100, long_float=1.5)
model2 = TestModel2(long_name="Model2", long_int=1, long_float=1.1, another_str="World")

View file

@ -60,7 +60,6 @@ def test_get_scheduled_webhooks_filter_query(database: AllRepositories, unique_u
assert result.enabled
for expected_item in expected:
if result.name == expected_item.name: # Names are uniquely generated so we can use this to compare
assert result.enabled == expected_item.enabled
break

View file

@ -256,7 +256,6 @@ ingredients_test_cases = (
@pytest.mark.parametrize("ingredients", ingredients_test_cases, ids=(x.test_id for x in ingredients_test_cases))
def test_cleaner_clean_ingredients(ingredients: CleanerCase):
if ingredients.exception:
with pytest.raises(ingredients.exception):
cleaner.clean_ingredients(ingredients.input)

View file

@ -11,7 +11,6 @@ SUBJECTS = {"Mealie Forgot Password", "Invitation to join Mealie", "Test Email"}
class TestEmailSender(ABCEmailSender):
def send(self, email_to: str, subject: str, html: str) -> bool:
# check email_to:
assert email_to == FAKE_ADDRESS

View file

@ -18,7 +18,6 @@ class TestIngredient:
def crf_exists() -> bool:
return shutil.which("crf_test") is not None

View file

@ -1,8 +0,0 @@
from openapi_spec_validator import openapi_v30_spec_validator, validate_spec
from mealie.app import app
def test_validate_open_api_spec():
open_api = app.openapi()
validate_spec(open_api, validator=openapi_v30_spec_validator)

View file

@ -9,9 +9,9 @@ from mealie.pkgs.stats.fs_stats import pretty_size
(0, "0 bytes"),
(1, "1 bytes"),
(1024, "1.0 KB"),
(1024 ** 2, "1.0 MB"),
(1024 ** 2 * 1024, "1.0 GB"),
(1024 ** 2 * 1024 * 1024, "1.0 TB"),
(1024**2, "1.0 MB"),
(1024**2 * 1024, "1.0 GB"),
(1024**2 * 1024 * 1024, "1.0 TB"),
],
)
def test_pretty_size(size: int, expected: str) -> None: