test(04-02): add failing tests for render_uninstall and render_detect

- test_render_uninstall: asserts Remove-Printer/Driver/Port order + SilentlyContinue x3
- test_render_detect: asserts Get-Printer, Write-Output, exit 0, exit 1
This commit is contained in:
2026-04-10 13:34:22 +02:00
parent 8cb420107f
commit 0f213df92c
+28 -2
View File
@@ -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