Files
bamort/backend/pdfrender/init_test.go
T
Frank 5f952742c8 add current db layout and data
add handling for mounted export template directory
fixed naming problems and port exposure
2025-12-27 08:27:34 +01:00

106 lines
3.3 KiB
Go

package pdfrender
import (
"os"
"path/filepath"
"testing"
)
func TestInitializeTemplates(t *testing.T) {
// Setup test directories
tmpDir := t.TempDir()
defaultDir := filepath.Join(tmpDir, "default_templates")
targetDir := filepath.Join(tmpDir, "templates")
// Create default templates directory with test files
if err := os.MkdirAll(filepath.Join(defaultDir, "TestTemplate"), 0755); err != nil {
t.Fatalf("Failed to create default template dir: %v", err)
}
testFile := filepath.Join(defaultDir, "TestTemplate", "page1.html")
if err := os.WriteFile(testFile, []byte("test content"), 0644); err != nil {
t.Fatalf("Failed to create test file: %v", err)
}
// Test 1: Copy when target directory doesn't exist
if err := InitializeTemplates(defaultDir, targetDir); err != nil {
t.Errorf("InitializeTemplates failed: %v", err)
}
// Verify file was copied
copiedFile := filepath.Join(targetDir, "TestTemplate", "page1.html")
if _, err := os.Stat(copiedFile); os.IsNotExist(err) {
t.Error("Expected file was not copied")
}
content, err := os.ReadFile(copiedFile)
if err != nil || string(content) != "test content" {
t.Error("Copied file content doesn't match")
}
// Test 2: Don't overwrite when content is identical
if err := InitializeTemplates(defaultDir, targetDir); err != nil {
t.Errorf("InitializeTemplates failed on second run: %v", err)
}
// Verify file still has same content
content, err = os.ReadFile(copiedFile)
if err != nil || string(content) != "test content" {
t.Error("File content should remain unchanged")
}
// Test 3: Update when default template changed
updatedContent := []byte("updated test content")
if err := os.WriteFile(testFile, updatedContent, 0644); err != nil {
t.Fatalf("Failed to update source file: %v", err)
}
if err := InitializeTemplates(defaultDir, targetDir); err != nil {
t.Errorf("InitializeTemplates failed after source update: %v", err)
}
// Verify file was updated
content, err = os.ReadFile(copiedFile)
if err != nil || string(content) != "updated test content" {
t.Error("File should have been updated with new content")
}
// Test 4: Handle missing default directory gracefully
if err := InitializeTemplates("/nonexistent", targetDir); err == nil {
t.Error("Expected error for nonexistent default directory")
}
}
func TestInitializeTemplatesWithMultipleFiles(t *testing.T) {
tmpDir := t.TempDir()
defaultDir := filepath.Join(tmpDir, "default_templates")
targetDir := filepath.Join(tmpDir, "templates")
// Create multiple templates and files
templates := []string{"Template1", "Template2"}
for _, tmpl := range templates {
tmplDir := filepath.Join(defaultDir, tmpl)
if err := os.MkdirAll(tmplDir, 0755); err != nil {
t.Fatalf("Failed to create template dir: %v", err)
}
for i := 1; i <= 3; i++ {
file := filepath.Join(tmplDir, filepath.Base(tmpl)+".html")
if err := os.WriteFile(file, []byte("content "+tmpl), 0644); err != nil {
t.Fatalf("Failed to create file: %v", err)
}
}
}
// Initialize templates
if err := InitializeTemplates(defaultDir, targetDir); err != nil {
t.Fatalf("InitializeTemplates failed: %v", err)
}
// Verify all templates were copied
for _, tmpl := range templates {
tmplDir := filepath.Join(targetDir, tmpl)
if _, err := os.Stat(tmplDir); os.IsNotExist(err) {
t.Errorf("Template directory %s was not copied", tmpl)
}
}
}