From 7f14f1576934945803e6c0ac92dd11b0227f6bc9 Mon Sep 17 00:00:00 2001
From: Danis Kirasirov <dbgbbu@gmail.com>
Date: Wed, 29 Nov 2023 15:29:47 +0300
Subject: [PATCH] add unittests for SetURLWithTemplate()

---
 pkg/files/file_test.go | 57 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 pkg/files/file_test.go

diff --git a/pkg/files/file_test.go b/pkg/files/file_test.go
new file mode 100644
index 00000000..7c74c5df
--- /dev/null
+++ b/pkg/files/file_test.go
@@ -0,0 +1,57 @@
+package files
+
+import (
+	"testing"
+	"text/template"
+
+	"github.com/stretchr/testify/require"
+)
+
+func TestFile_SetURLWithTemplate(t *testing.T) {
+	tests := []struct {
+		name     string
+		file     *File
+		template *template.Template
+		wantErr  bool
+		wantURL  string
+	}{
+		{
+			name:     "template is nil",
+			file:     &File{
+				URL:      "https://cloud.com/",
+			},
+			template: nil,
+			wantErr:  false,
+			wantURL: "https://cloud.com/",
+		},
+		{
+			name:     "template is bad",
+			file:     &File{},
+			template: template.Must(template.New("url").Parse("{{.NonExistentField}}")),
+			wantErr:  true,
+		},
+		{
+			name:     "success",
+			file:     &File{
+				Size:     1024,
+				MimeType: "image/png",
+				Key:      "file-key",
+			},
+			template: template.Must(template.New("url").Parse("https://cloud-proxy.com/{{.Key}}?size={{.Size}}#{{.MimeType}}")),
+			wantErr:  false,
+			wantURL: "https://cloud-proxy.com/file-key?size=1024#image/png",
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			err := tt.file.SetURLWithTemplate(tt.template)
+			if tt.wantErr {
+				require.Error(t, err)	
+			} else {
+				require.NoError(t, err)
+				require.Equal(t, tt.wantURL, tt.file.URL)
+			}
+		})
+	}
+}
-- 
GitLab