Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions charts/common/_unittests/definition-blocks/Chart.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
dependencies:
- name: common
repository: file://../../
version: 0.0.1-canary.1
digest: sha256:12b970b6e48c7736357e45d4e677347c77128460f05768c0405fb5665459e88e
generated: "2025-02-19T01:19:34.140868045Z"
8 changes: 8 additions & 0 deletions charts/common/_unittests/definition-blocks/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v2
name: definition-blocks-test
version: 0.1.0

dependencies:
- name: common
repository: "file://../../"
version: ">=0.0.0-0"
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
dynamicComponents: false

components:
- testComponent

componentLayering:
testComponent:
- defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{- include "common.render" . -}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- $ := . -}}
{{- $_ := set $ "__common" (dict "fcallResult" nil) -}}

{{/* Test case: Deep merge with null handling */}}
{{- $map1 := dict "a" 1 "b" (dict "x" 1 "y" 2) -}}
{{- $map2 := dict "b" (dict "x" nil "z" 3) "c" "new" -}}

{{- $_ := list $ $map1 $map2 | include "common.utils.deepMerge" -}}
{{- $merged := $.__common.fcallResult -}}
{{- $merged = set $merged "b" (omit $merged.b "x") -}}

apiVersion: v1
kind: ConfigMap
metadata:
name: deepmerge-test
data:
result: "{{ eq (toJson $merged) (toJson (dict "a" 1 "b" (dict "y" 2 "z" 3) "c" "new")) }}"
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{- $ := . -}}
{{- $_ := set $ "__common" (dict "fcallResult" nil) -}}

{{/* Test case: Map to list conversion with index key and defaults */}}
{{- $base := dict "spec" (dict "containers" (dict "main" (dict "image" "nginx") "sidecar" (dict "image" "proxy"))) -}}
{{- $paths := list (dict "path" "spec.containers" "indexKey" "name" "defaultFor" (list "id")) -}}

{{- $_ := list $ $base $paths | include "common.utils.transformMapToList" -}}
{{- $result := $base.spec.containers -}}
{{- $expected := list
(dict "name" "main" "id" "main" "image" "nginx")
(dict "name" "sidecar" "id" "sidecar" "image" "proxy") -}}

apiVersion: v1
kind: ConfigMap
metadata:
name: transformmaptolist-test
data:
result: {{ eq (toJson (sortAlpha $result)) (toJson (sortAlpha $expected)) | quote }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
suite: "Deep Merge Function Tests"

templates:
- "templates/test-deepmerge.yaml"

tests:
- it: "Should output 'true' if the result matches expected"
asserts:
- equal:
path: data.result
value: "true"
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
suite: "Transform Map to List Function Tests"

templates:
- "templates/test-transformmaptolist.yaml"

tests:
- it: "Should output 'true' if the result matches expected"
asserts:
- equal:
path: data.result
value: "true"
4 changes: 4 additions & 0 deletions charts/common/_unittests/definition-blocks/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
defaults: {}

testComponent:
__enabled: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
dependencies:
- name: common
repository: file://../../..
version: 0.0.1-canary.1
digest: sha256:7c13dc03b796f547ab8140426d7ac70d5735ad380e0faf0e4bd23d918caac00d
generated: "2025-02-19T00:51:26.628880646Z"
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v2
name: dynamic-components-test
version: 0.1.0

dependencies:
- name: common
repository: "file://../../.."
version: ">=0.0.0-0"
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dynamicComponents: true
componentsKey: dynamicComponents

componentLayering: |
{
"component-a": ["defaultLayer", "dynamicComponents[component-a]"],
"component-b": ["defaultLayer", "dynamicComponents[component-b]"],
"component-c": ["defaultLayer", "dynamicComponents[component-c]"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{- include "common.render" $ }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
suite: "Dynamic Components Tests"

templates:
- "templates/render.yaml"

tests:
- it: "Should render only enabled components"
asserts:
- hasDocuments:
count: 2

- it: "Should render component-a with correct configuration"
documentIndex: 0
asserts:
- isKind:
of: Deployment
- equal:
path: spec.replicas
value: 4
- matchRegex:
path: metadata.name
pattern: component-a

- it: "Should render component-c with correct configuration"
documentIndex: 1
asserts:
- isKind:
of: Deployment
- equal:
path: spec.replicas
value: 3
- matchRegex:
path: metadata.name
pattern: component-c
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
defaultLayer:
__enabled: true
workload:
__enabled: true
kind: Deployment
spec:
template:
spec:
containers:
main:
name: main
image: nginx:latest

defaultLayer:
workload:
__enabled: true
kind: Deployment
spec:
selector:
matchLabels:
app: test-workload
template:
metadata:
labels:
app: test-workload
spec:
containers:
main:
name: main
image: nginx:latest

dynamicComponents:
component-a:
__enabled: true
workload:
__enabled: true
metadata:
name: component-a
spec:
replicas: 4

component-b:
__enabled: false
workload:
__enabled: true
metadata:
name: component-b
spec:
replicas: 2

component-c:
__enabled: true
workload:
__enabled: true
metadata:
name: component-c
spec:
replicas: 3
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
dependencies:
- name: common
repository: file://../../..
version: 0.0.1-canary.1
digest: sha256:7c13dc03b796f547ab8140426d7ac70d5735ad380e0faf0e4bd23d918caac00d
generated: "2025-02-19T00:51:23.431583819Z"
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v2
name: multiple-components-test
version: 0.1.0

dependencies:
- name: common
repository: "file://../../.."
version: ">=0.0.0-0"
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
dynamicComponents: false

components:
- component1
- component2

componentLayering:
component1:
- defaultLayer
- component1Overrides
component2:
- defaultLayer
- component2Overrides

nameOverride: ""
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{- include "common.render" $ }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
suite: "Multiple Components Tests"

templates:
- "templates/render.yaml"

tests:
- it: "Should render both components as Deployments"
asserts:
- isKind:
of: Deployment
- hasDocuments:
count: 2

- it: "Should render component1 with correct replicas"
documentIndex: 0
asserts:
- equal:
path: spec.replicas
value: 3

- it: "Should render component2 with correct replicas"
documentIndex: 1
asserts:
- equal:
path: spec.replicas
value: 2
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
defaultLayer:
workload:
__enabled: true
kind: Deployment
spec:
selector:
matchLabels:
app: test-workload
template:
metadata:
labels:
app: test-workload
spec:
containers:
main:
name: main
image: nginx:latest

component1:
__enabled: true
workload:
__enabled: true
spec:
replicas: 3

component2:
__enabled: true
workload:
__enabled: true
spec:
replicas: 2

component1Overrides: {}
component2Overrides: {}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{- include "common.render" . -}}
{{- include "common.render" $ }}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,20 @@ myComponent:
__enabled: true
workload:
__enabled: true
kind: Deployment
spec:
image: "alpine:3.17"
selector:
matchLabels:
app: test-workload
template:
metadata:
labels:
app: test-workload
spec:
containers:
main:
name: main
image: "alpine:3.17"
replicas: 2

myComponentDefaults: {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
dependencies:
- name: common
repository: file://../../..
version: 0.0.1-canary.1
digest: sha256:7c13dc03b796f547ab8140426d7ac70d5735ad380e0faf0e4bd23d918caac00d
generated: "2025-02-19T00:53:21.587202472Z"
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v2
name: all-resource-kinds-test
version: 0.1.0

dependencies:
- name: common
repository: "file://../../.."
version: ">=0.0.0-0"
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dynamicComponents: false

components:
- testComponent

componentLayering:
testComponent:
- defaults
- testComponent
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{- include "common.render" $ }}
Loading