diff --git a/app/tests/test_profile.py b/app/tests/test_profile.py new file mode 100644 index 0000000..4ba78d3 --- /dev/null +++ b/app/tests/test_profile.py @@ -0,0 +1,86 @@ +"""Tests for profile management module.""" + +import pytest +from pathlib import Path +import tempfile +import os + + +class TestProfileManagement: + """Test cases for profile management.""" + + def test_init_project(self, temp_dir): + """Test project initialization.""" + from env_pro.core.profile import init_project, get_profiles_dir + + profiles_dir = init_project(temp_dir) + + assert profiles_dir.exists() + assert (profiles_dir / "default").exists() + assert (profiles_dir / "default" / ".env").exists() + assert (profiles_dir / ".active").exists() + + def test_list_profiles_empty(self, temp_dir): + """Test listing profiles when none exist.""" + from env_pro.core.profile import list_profiles + + profiles = list_profiles(temp_dir) + assert profiles == [] + + def test_create_profile(self, temp_dir): + """Test creating a new profile.""" + from env_pro.core.profile import create_profile, list_profiles + + create_profile("dev", temp_dir) + profiles = list_profiles(temp_dir) + + assert "dev" in profiles + assert (temp_dir / ".env-profiles" / "dev" / ".env").exists() + + def test_delete_profile(self, temp_dir): + """Test deleting a profile.""" + from env_pro.core.profile import create_profile, delete_profile, list_profiles + + create_profile("test", temp_dir) + delete_profile("test", temp_dir) + profiles = list_profiles(temp_dir) + + assert "test" not in profiles + + def test_set_active_profile(self, temp_dir): + """Test setting active profile.""" + from env_pro.core.profile import create_profile, set_active_profile, get_active_profile + + create_profile("staging", temp_dir) + set_active_profile("staging", temp_dir) + + active = get_active_profile(temp_dir) + assert active == "staging" + + def test_get_profile_vars(self, project_dir): + """Test getting variables from a profile.""" + from env_pro.core.profile import get_profile_vars + + vars = get_profile_vars("default", project_dir) + + assert "DATABASE_URL" in vars + assert vars["DATABASE_URL"] == "postgresql://localhost:5432/db" + assert vars["DEBUG"] == "true" + + def test_set_profile_var(self, project_dir): + """Test setting a variable in a profile.""" + from env_pro.core.profile import set_profile_var, get_profile_vars + + set_profile_var("default", "NEW_VAR", "new-value", project_dir) + + vars = get_profile_vars("default", project_dir) + assert vars["NEW_VAR"] == "new-value" + + def test_delete_profile_var(self, project_dir): + """Test deleting a variable from a profile.""" + from env_pro.core.profile import delete_profile_var, get_profile_vars + + delete_profile_var("default", "DEBUG", project_dir) + + vars = get_profile_vars("default", project_dir) + assert "DEBUG" not in vars