summaryrefslogtreecommitdiff
path: root/tests/test_installation.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_installation.py')
-rw-r--r--tests/test_installation.py150
1 files changed, 0 insertions, 150 deletions
diff --git a/tests/test_installation.py b/tests/test_installation.py
deleted file mode 100644
index 2b3690e..0000000
--- a/tests/test_installation.py
+++ /dev/null
@@ -1,150 +0,0 @@
-"""
-Tests for the installation service.
-"""
-
-import os
-import tempfile
-import zipfile
-from pathlib import Path
-from unittest.mock import Mock, patch
-
-import pytest
-from pyfakefs.fake_filesystem_unittest import TestCase
-
-from lsfg_vk.installation import InstallationService
-from lsfg_vk.constants import LIB_FILENAME, JSON_FILENAME, ZIP_FILENAME
-
-
-class TestInstallationService(TestCase):
- """Test cases for InstallationService using pyfakefs"""
-
- def setUp(self):
- """Set up fake filesystem"""
- self.setUpPyfakefs()
- self.mock_logger = Mock()
-
- # Create a test home directory
- self.test_home = Path("/home/testuser")
- self.fs.create_dir(self.test_home)
-
- # Patch Path.home() to return our test home
- with patch('lsfg_vk.base_service.Path.home', return_value=self.test_home):
- self.service = InstallationService(logger=self.mock_logger)
-
- def test_check_installation_no_files(self):
- """Test installation check when no files are installed"""
- result = self.service.check_installation()
-
- assert result["installed"] is False
- assert result["lib_exists"] is False
- assert result["json_exists"] is False
- assert result["script_exists"] is False
- assert result["error"] is None
-
- def test_check_installation_all_files_exist(self):
- """Test installation check when all files exist"""
- # Create the files
- self.service.lib_file.parent.mkdir(parents=True, exist_ok=True)
- self.service.lib_file.touch()
-
- self.service.json_file.parent.mkdir(parents=True, exist_ok=True)
- self.service.json_file.touch()
-
- self.service.lsfg_script_path.touch()
-
- result = self.service.check_installation()
-
- assert result["installed"] is True
- assert result["lib_exists"] is True
- assert result["json_exists"] is True
- assert result["script_exists"] is True
- assert result["error"] is None
-
- def test_create_zip_for_testing(self):
- """Helper to create a test zip file"""
- # Create temp directory for zip contents
- zip_content_dir = Path("/tmp/zip_content")
- self.fs.create_dir(zip_content_dir)
-
- # Create test files
- lib_file = zip_content_dir / LIB_FILENAME
- json_file = zip_content_dir / JSON_FILENAME
-
- lib_file.write_text("fake library content")
- json_file.write_text('{"layer": {"name": "VK_LAYER_LS_frame_generation"}}')
-
- # Create zip file
- zip_path = Path("/tmp/test.zip")
- with zipfile.ZipFile(zip_path, 'w') as zip_file:
- zip_file.write(lib_file, LIB_FILENAME)
- zip_file.write(json_file, JSON_FILENAME)
-
- return zip_path
-
- @patch('lsfg_vk.installation.Path.home')
- def test_install_success(self, mock_home):
- """Test successful installation"""
- mock_home.return_value = self.test_home
-
- # Create the plugin directory and zip file
- plugin_dir = Path("/plugin")
- bin_dir = plugin_dir / "bin"
- self.fs.create_dir(bin_dir)
-
- # Create a test zip file
- zip_path = self.test_create_zip_for_testing()
- zip_dest = bin_dir / ZIP_FILENAME
-
- # Copy our test zip to the expected location
- with open(zip_path, 'rb') as src, open(zip_dest, 'wb') as dst:
- dst.write(src.read())
-
- # Mock the plugin directory detection
- with patch('lsfg_vk.installation.Path.__file__', f"{plugin_dir}/lsfg_vk/installation.py"):
- result = self.service.install()
-
- assert result["success"] is True
- assert "successfully" in result["message"]
- assert result["error"] is None
-
- # Check that files were created
- assert self.service.lib_file.exists()
- assert self.service.json_file.exists()
- assert self.service.lsfg_script_path.exists()
-
- def test_uninstall_no_files(self):
- """Test uninstall when no files exist"""
- result = self.service.uninstall()
-
- assert result["success"] is True
- assert "No lsfg-vk files found" in result["message"]
- assert result["removed_files"] is None
-
- def test_uninstall_with_files(self):
- """Test uninstall when files exist"""
- # Create the files
- self.service.lib_file.parent.mkdir(parents=True, exist_ok=True)
- self.service.lib_file.touch()
-
- self.service.json_file.parent.mkdir(parents=True, exist_ok=True)
- self.service.json_file.touch()
-
- self.service.lsfg_script_path.touch()
-
- result = self.service.uninstall()
-
- assert result["success"] is True
- assert "uninstalled successfully" in result["message"]
- assert len(result["removed_files"]) == 3
-
- # Check that files were removed
- assert not self.service.lib_file.exists()
- assert not self.service.json_file.exists()
- assert not self.service.lsfg_script_path.exists()
-
-
-def test_installation_service_with_mock_logger():
- """Test that InstallationService accepts a mock logger"""
- mock_logger = Mock()
- service = InstallationService(logger=mock_logger)
- assert service.log == mock_logger