2024-10-07 22:44:53 +00:00
|
|
|
package files
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Helper function to create error messages dynamically
|
|
|
|
func errorMsg(extension, expectedType string, expectedMatch bool) string {
|
|
|
|
matchStatus := "to match"
|
|
|
|
if !expectedMatch {
|
|
|
|
matchStatus = "to not match"
|
|
|
|
}
|
|
|
|
return fmt.Sprintf("Expected %s %s type '%s'", extension, matchStatus, expectedType)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestIsMatchingType(t *testing.T) {
|
|
|
|
// Test cases where IsMatchingType should return true
|
|
|
|
trueTestCases := []struct {
|
|
|
|
extension string
|
|
|
|
expectedType string
|
|
|
|
}{
|
2024-12-17 00:01:55 +00:00
|
|
|
{".pdf", "doc"},
|
2024-10-07 22:44:53 +00:00
|
|
|
{".doc", "doc"},
|
|
|
|
{".docx", "doc"},
|
|
|
|
{".json", "text"},
|
|
|
|
{".sh", "text"},
|
|
|
|
{".zip", "archive"},
|
|
|
|
{".rar", "archive"},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range trueTestCases {
|
|
|
|
assert.True(t, IsMatchingType(tc.extension, tc.expectedType), errorMsg(tc.extension, tc.expectedType, true))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Test cases where IsMatchingType should return false
|
|
|
|
falseTestCases := []struct {
|
|
|
|
extension string
|
|
|
|
expectedType string
|
|
|
|
}{
|
|
|
|
{".mp4", "doc"},
|
|
|
|
{".mp4", "text"},
|
|
|
|
{".mp4", "archive"},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range falseTestCases {
|
|
|
|
assert.False(t, IsMatchingType(tc.extension, tc.expectedType), errorMsg(tc.extension, tc.expectedType, false))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestUpdateSize(t *testing.T) {
|
|
|
|
// Helper function for size error messages
|
|
|
|
sizeErrorMsg := func(input string, expected, actual int) string {
|
|
|
|
return fmt.Sprintf("Expected size for input '%s' to be %d, got %d", input, expected, actual)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Test cases for updateSize
|
|
|
|
testCases := []struct {
|
|
|
|
input string
|
|
|
|
expected int
|
|
|
|
}{
|
|
|
|
{"150", 150},
|
|
|
|
{"invalid", 100},
|
|
|
|
{"", 100},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range testCases {
|
|
|
|
actual := updateSize(tc.input)
|
|
|
|
assert.Equal(t, tc.expected, actual, sizeErrorMsg(tc.input, tc.expected, actual))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestIsDoc(t *testing.T) {
|
|
|
|
// Test cases where IsMatchingType should return true for document types
|
|
|
|
docTrueTestCases := []struct {
|
|
|
|
extension string
|
|
|
|
expectedType string
|
|
|
|
}{
|
|
|
|
{".doc", "doc"},
|
|
|
|
{".pdf", "doc"},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range docTrueTestCases {
|
|
|
|
assert.True(t, IsMatchingType(tc.extension, tc.expectedType), errorMsg(tc.extension, tc.expectedType, true))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Test case where IsMatchingType should return false for document types
|
|
|
|
docFalseTestCases := []struct {
|
|
|
|
extension string
|
|
|
|
expectedType string
|
|
|
|
}{
|
|
|
|
{".mp4", "doc"},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range docFalseTestCases {
|
|
|
|
assert.False(t, IsMatchingType(tc.extension, tc.expectedType), errorMsg(tc.extension, tc.expectedType, false))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestIsText(t *testing.T) {
|
|
|
|
// Test cases where IsMatchingType should return true for text types
|
|
|
|
textTrueTestCases := []struct {
|
|
|
|
extension string
|
|
|
|
expectedType string
|
|
|
|
}{
|
|
|
|
{".json", "text"},
|
|
|
|
{".sh", "text"},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range textTrueTestCases {
|
|
|
|
assert.True(t, IsMatchingType(tc.extension, tc.expectedType), errorMsg(tc.extension, tc.expectedType, true))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Test case where IsMatchingType should return false for text types
|
|
|
|
textFalseTestCases := []struct {
|
|
|
|
extension string
|
|
|
|
expectedType string
|
|
|
|
}{
|
|
|
|
{".mp4", "text"},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range textFalseTestCases {
|
|
|
|
assert.False(t, IsMatchingType(tc.extension, tc.expectedType), errorMsg(tc.extension, tc.expectedType, false))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestIsArchive(t *testing.T) {
|
|
|
|
// Test cases where IsMatchingType should return true for archive types
|
|
|
|
archiveTrueTestCases := []struct {
|
|
|
|
extension string
|
|
|
|
expectedType string
|
|
|
|
}{
|
|
|
|
{".zip", "archive"},
|
|
|
|
{".rar", "archive"},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range archiveTrueTestCases {
|
|
|
|
assert.True(t, IsMatchingType(tc.extension, tc.expectedType), errorMsg(tc.extension, tc.expectedType, true))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Test case where IsMatchingType should return false for archive types
|
|
|
|
archiveFalseTestCases := []struct {
|
|
|
|
extension string
|
|
|
|
expectedType string
|
|
|
|
}{
|
|
|
|
{".mp4", "archive"},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range archiveFalseTestCases {
|
|
|
|
assert.False(t, IsMatchingType(tc.extension, tc.expectedType), errorMsg(tc.extension, tc.expectedType, false))
|
|
|
|
}
|
|
|
|
}
|