From 0590ac9aa11ae7b6b495ec5e1f9f43e3dab70c3e Mon Sep 17 00:00:00 2001 From: bereck-work Date: Sat, 22 Nov 2025 08:32:58 +0000 Subject: [PATCH] (Chore): Added unit tests for cli.go --- internal/cli/cli_test.go | 90 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 internal/cli/cli_test.go diff --git a/internal/cli/cli_test.go b/internal/cli/cli_test.go new file mode 100644 index 0000000..e86fb80 --- /dev/null +++ b/internal/cli/cli_test.go @@ -0,0 +1,90 @@ +package cli + +import ( + "testing" + + "zipprine/internal/models" +) + +func TestParseArchiveType(t *testing.T) { + tests := []struct { + name string + input string + expected models.ArchiveType + }{ + {"ZIP lowercase", "zip", models.ZIP}, + {"ZIP uppercase", "ZIP", models.ZIP}, + {"TAR", "tar", models.TAR}, + {"TAR.GZ", "tar.gz", models.TARGZ}, + {"TARGZ", "targz", models.TARGZ}, + {"TGZ", "tgz", models.TARGZ}, + {"GZIP", "gzip", models.GZIP}, + {"GZ", "gz", models.GZIP}, + {"RAR", "rar", models.RAR}, + {"RAR uppercase", "RAR", models.RAR}, + {"AUTO", "auto", models.AUTO}, + {"Unknown defaults to ZIP", "unknown", models.ZIP}, + {"Empty defaults to ZIP", "", models.ZIP}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := parseArchiveType(tt.input) + if result != tt.expected { + t.Errorf("parseArchiveType(%q) = %v; want %v", tt.input, result, tt.expected) + } + }) + } +} + +func TestParseArchiveTypeCaseInsensitive(t *testing.T) { + // Test that parsing is case-insensitive + inputs := []string{"zip", "ZIP", "Zip", "ZiP"} + for _, input := range inputs { + result := parseArchiveType(input) + if result != models.ZIP { + t.Errorf("parseArchiveType(%q) = %v; want %v", input, result, models.ZIP) + } + } +} + +func TestParseArchiveTypeAllFormats(t *testing.T) { + // Ensure all supported formats are handled + formats := map[string]models.ArchiveType{ + "zip": models.ZIP, + "tar": models.TAR, + "tar.gz": models.TARGZ, + "gzip": models.GZIP, + "rar": models.RAR, + "auto": models.AUTO, + } + + for input, expected := range formats { + result := parseArchiveType(input) + if result != expected { + t.Errorf("parseArchiveType(%q) = %v; want %v", input, result, expected) + } + } +} + +func TestParseArchiveTypeTarGzVariants(t *testing.T) { + // Test all variants of TAR.GZ + variants := []string{"tar.gz", "targz", "tgz"} + for _, variant := range variants { + result := parseArchiveType(variant) + if result != models.TARGZ { + t.Errorf("parseArchiveType(%q) = %v; want %v", variant, result, models.TARGZ) + } + } +} + +func TestParseArchiveTypeGzipVariants(t *testing.T) { + // Test all variants of GZIP + variants := []string{"gzip", "gz"} + for _, variant := range variants { + result := parseArchiveType(variant) + if result != models.GZIP { + t.Errorf("parseArchiveType(%q) = %v; want %v", variant, result, models.GZIP) + } + } +}