mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-11-03 18:53:17 -05:00 
			
		
		
		
	* unify format * pass variables * remove namespace * rename * group-card init * shuffle + icons * remove console.logs * token CRUD * update changelog * add profile link * consolidate mealplan to profile dashboard * update docs * add query parameter to search page * update test routes * update python depts * basic token tests Co-authored-by: hay-kot <hay-kot@pm.me>
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import json
 | 
						|
 | 
						|
import pytest
 | 
						|
from fastapi.testclient import TestClient
 | 
						|
from mealie.schema.settings import SiteSettings
 | 
						|
from mealie.schema.theme import SiteTheme
 | 
						|
from tests.app_routes import AppRoutes
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture(scope="function")
 | 
						|
def default_settings():
 | 
						|
    return SiteSettings().dict(by_alias=True)
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture(scope="session")
 | 
						|
def default_theme():
 | 
						|
    return SiteTheme(id=1).dict()
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture(scope="session")
 | 
						|
def new_theme():
 | 
						|
    return {
 | 
						|
        "id": 3,
 | 
						|
        "name": "myTestTheme",
 | 
						|
        "colors": {
 | 
						|
            "primary": "#E58325",
 | 
						|
            "accent": "#00457A",
 | 
						|
            "secondary": "#973542",
 | 
						|
            "success": "#43A047",
 | 
						|
            "info": "#4990BA",
 | 
						|
            "warning": "#FF4081",
 | 
						|
            "error": "#EF5350",
 | 
						|
        },
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
def test_default_settings(api_client: TestClient, api_routes: AppRoutes, default_settings):
 | 
						|
    response = api_client.get(api_routes.site_settings)
 | 
						|
 | 
						|
    assert response.status_code == 200
 | 
						|
 | 
						|
    assert json.loads(response.content) == default_settings
 | 
						|
 | 
						|
 | 
						|
def test_update_settings(api_client: TestClient, api_routes: AppRoutes, default_settings, token):
 | 
						|
    default_settings["language"] = "fr"
 | 
						|
    default_settings["showRecent"] = False
 | 
						|
 | 
						|
    response = api_client.put(api_routes.site_settings, json=default_settings, headers=token)
 | 
						|
 | 
						|
    assert response.status_code == 200
 | 
						|
 | 
						|
    response = api_client.get(api_routes.site_settings)
 | 
						|
    assert json.loads(response.content) == default_settings
 | 
						|
 | 
						|
 | 
						|
def test_default_theme(api_client: TestClient, api_routes: AppRoutes, default_theme):
 | 
						|
    response = api_client.get(api_routes.themes_id(1))
 | 
						|
    assert response.status_code == 200
 | 
						|
    assert json.loads(response.content) == default_theme
 | 
						|
 | 
						|
 | 
						|
def test_create_theme(api_client: TestClient, api_routes: AppRoutes, new_theme, token):
 | 
						|
 | 
						|
    response = api_client.post(api_routes.themes_create, json=new_theme, headers=token)
 | 
						|
    assert response.status_code == 201
 | 
						|
 | 
						|
    response = api_client.get(api_routes.themes_id(new_theme.get("id")), headers=token)
 | 
						|
    assert response.status_code == 200
 | 
						|
    assert json.loads(response.content) == new_theme
 | 
						|
 | 
						|
 | 
						|
def test_read_all_themes(api_client: TestClient, api_routes: AppRoutes, default_theme, new_theme):
 | 
						|
    response = api_client.get(api_routes.themes)
 | 
						|
    assert response.status_code == 200
 | 
						|
    response_dict = json.loads(response.content)
 | 
						|
    assert default_theme in response_dict
 | 
						|
    assert new_theme in response_dict
 | 
						|
 | 
						|
 | 
						|
def test_read_theme(api_client: TestClient, api_routes: AppRoutes, default_theme, new_theme):
 | 
						|
    for theme in [default_theme, new_theme]:
 | 
						|
        response = api_client.get(api_routes.themes_id(theme.get("id")))
 | 
						|
        assert response.status_code == 200
 | 
						|
        assert json.loads(response.content) == theme
 | 
						|
 | 
						|
 | 
						|
def test_update_theme(api_client: TestClient, api_routes: AppRoutes, token, default_theme, new_theme):
 | 
						|
    theme_colors = {
 | 
						|
        "primary": "#E12345",
 | 
						|
        "accent": "#012345",
 | 
						|
        "secondary": "#973542",
 | 
						|
        "success": "#5AB1BB",
 | 
						|
        "info": "#4990BA",
 | 
						|
        "warning": "#FF4081",
 | 
						|
        "error": "#EF4432",
 | 
						|
    }
 | 
						|
 | 
						|
    new_theme["colors"] = theme_colors
 | 
						|
    response = api_client.put(api_routes.themes_id(new_theme.get("id")), json=new_theme, headers=token)
 | 
						|
    assert response.status_code == 200
 | 
						|
    response = api_client.get(api_routes.themes_id(new_theme.get("id")))
 | 
						|
    assert json.loads(response.content) == new_theme
 | 
						|
 | 
						|
 | 
						|
def test_delete_theme(api_client: TestClient, api_routes: AppRoutes, default_theme, new_theme, token):
 | 
						|
    for theme in [default_theme, new_theme]:
 | 
						|
        response = api_client.delete(api_routes.themes_id(theme.get("id")), headers=token)
 | 
						|
 | 
						|
        assert response.status_code == 200
 |