diff --git a/tests/test_script_generator.py b/tests/test_script_generator.py index a9bd712..4479283 100644 --- a/tests/test_script_generator.py +++ b/tests/test_script_generator.py @@ -1,6 +1,6 @@ -"""Unit tests for script_generator.py — SCRPT-01, SCRPT-04, SCRPT-05.""" +"""Unit tests for script_generator.py — SCRPT-01, SCRPT-02, SCRPT-03, SCRPT-04, SCRPT-05.""" import pytest -from imptune.generators.script_generator import render_install +from imptune.generators.script_generator import render_detect, render_install, render_uninstall SAMPLE_ARGS = dict( @@ -92,3 +92,29 @@ def test_render_install_booleans(): result_false = render_install(**{**SAMPLE_ARGS, "color_mode": False, "collate": False}) assert "$false" in result_false + + +def test_render_uninstall(): + """SCRPT-02: render_uninstall produces correct removal order with SilentlyContinue.""" + result = render_uninstall("Test Printer", "HP Driver", "IP_10.0.0.1") + # All three Remove-* commands must be present + assert 'Remove-Printer -Name "Test Printer"' in result + assert 'Remove-PrinterDriver -Name "HP Driver"' in result + assert 'Remove-PrinterPort -Name "IP_10.0.0.1"' in result + # All must have -ErrorAction SilentlyContinue + assert result.count("-ErrorAction SilentlyContinue") >= 3 + # Order: Remove-Printer BEFORE Remove-PrinterDriver (driver removal fails if printer still active) + printer_pos = result.find("Remove-Printer -Name") + driver_pos = result.find("Remove-PrinterDriver -Name") + port_pos = result.find("Remove-PrinterPort -Name") + assert printer_pos < driver_pos, "Remove-Printer must appear before Remove-PrinterDriver" + assert driver_pos < port_pos, "Remove-PrinterDriver must appear before Remove-PrinterPort" + + +def test_render_detect(): + """SCRPT-03: render_detect follows Intune detection contract (Write-Output + exit 0/1).""" + result = render_detect("Test Printer") + assert 'Get-Printer -Name "Test Printer"' in result + assert "Write-Output" in result + assert "exit 0" in result + assert "exit 1" in result