From b84a431854f666ebbd7be511829c10d087d7d0c7 Mon Sep 17 00:00:00 2001
From: florianspk <florianspk@gmail.com>
Date: Mon, 22 Jan 2024 09:33:07 +0000
Subject: [PATCH] =?UTF-8?q?Storage=20Class=20don=C2=B4t=20use=20global.sto?=
 =?UTF-8?q?rageClass=20(#601)=20(#602)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

### Description of the change

The code change ensures proper usage of gitea.persistence.storageClass, improving configuration accuracy and code readability.

### Applicable issues

  - fixes #601

Reviewed-on: https://gitea.com/gitea/helm-chart/pulls/602
Reviewed-by: pat-s <pat-s@noreply.gitea.com>
Co-authored-by: florianspk <florianspk@gmail.com>
Co-committed-by: florianspk <florianspk@gmail.com>
---
 templates/_helpers.tpl                        |  2 +-
 templates/gitea/pvc.yaml                      |  4 +-
 .../storage-class-configuration.yaml          | 39 +++++++++++++++++++
 3 files changed, 41 insertions(+), 4 deletions(-)
 create mode 100644 unittests/deployment/storage-class-configuration.yaml

diff --git a/templates/_helpers.tpl b/templates/_helpers.tpl
index 727401c..dc76158 100644
--- a/templates/_helpers.tpl
+++ b/templates/_helpers.tpl
@@ -94,7 +94,7 @@ imagePullSecrets:
 Storage Class
 */}}
 {{- define "gitea.persistence.storageClass" -}}
-{{- $storageClass := .Values.global.storageClass | default .Values.persistence.storageClass }}
+{{- $storageClass := .Values.persistence.storageClass | default .Values.global.storageClass }}
 {{- if $storageClass }}
 storageClassName: {{ $storageClass | quote }}
 {{- end }}
diff --git a/templates/gitea/pvc.yaml b/templates/gitea/pvc.yaml
index 995bd10..d1b2669 100644
--- a/templates/gitea/pvc.yaml
+++ b/templates/gitea/pvc.yaml
@@ -14,9 +14,7 @@ spec:
     {{- .Values.persistence.accessModes | toYaml | nindent 4 }}
   {{- end }}
   volumeMode: Filesystem
-  {{- if .Values.persistence.storageClass }}
-  storageClassName: {{ .Values.persistence.storageClass }}
-  {{- end }}
+  {{- include "gitea.persistence.storageClass" . | nindent 2 }}
   {{- with .Values.persistence.volumeName }}
   volumeName: {{ . }}
   {{- end }}
diff --git a/unittests/deployment/storage-class-configuration.yaml b/unittests/deployment/storage-class-configuration.yaml
new file mode 100644
index 0000000..abad587
--- /dev/null
+++ b/unittests/deployment/storage-class-configuration.yaml
@@ -0,0 +1,39 @@
+# File: tests/gitea-storageclass-tests.yaml
+
+suite: storage class configuration tests
+
+release:
+  name: gitea-storageclass-tests
+  namespace: testing
+
+templates:
+  - templates/gitea/pvc.yaml
+
+tests:
+  - it: should set storageClassName when persistence.storageClass is defined
+    template: templates/gitea/pvc.yaml
+    set:
+      persistence.storageClass: "my-storage-class"
+    asserts:
+      - equal:
+          path: "spec.storageClassName"
+          value: "my-storage-class"
+
+  - it: should set global.storageClass when persistence.storageClass is not defined
+    template: templates/gitea/pvc.yaml
+    set:
+      global.storageClass: "default-storage-class"
+    asserts:
+      - equal:
+          path: spec.storageClassName
+          value: "default-storage-class"
+
+  - it: should set storageClassName when persistence.storageClass is defined and global.storageClass is defined
+    template: templates/gitea/pvc.yaml
+    set:
+      global.storageClass: "default-storage-class"
+      persistence.storageClass: "my-storage-class"
+    asserts:
+      - equal:
+          path: spec.storageClassName
+          value: "my-storage-class"