suite: init container data test
templates:
  - common.yaml
tests:
  - it: should generate correct init container
    set:
      initType: install
      render: true
      persistence:
        shared-vol:
          enabled: true
          type: emptyDir
          mountPath: /some/path
          targetSelector:
            workload-name:
              container-name2: {}
      image:
        repository: nginx
        tag: 1.19.0
        pullPolicy: IfNotPresent
      initImage:
        repository: bash
        tag: latest
        pullPolicy: IfNotPresent
      workload:
        workload-name:
          enabled: true
          primary: true
          type: Deployment
          podSpec:
            containers:
              container-name1:
                enabled: true
                primary: true
                imageSelector: image
                probes:
                  liveness:
                    enabled: false
                  readiness:
                    enabled: false
                  startup:
                    enabled: false
            initContainers:
              container-name1:
                enabled: "{{ .Values.render }}"
                type: init
                imageSelector: initImage
              container-name3:
                enabled: true
                type: upgrade
                imageSelector: initImage
              container-name2:
                enabled: true
                type: "{{ .Values.initType }}"
                imageSelector: initImage
                probes:
                  liveness:
                    enabled: true
                  readiness:
                    enabled: true
                  startup:
                    enabled: true
                command:
                  - /bin/sh
                  - -c
                  - |
                    echo "Using image {{ .Values.initImage.repository }}"
    asserts:
      - documentIndex: &deploymentDoc 0
        isKind:
          of: Deployment
      - documentIndex: *deploymentDoc
        isAPIVersion:
          of: apps/v1
      - documentIndex: *deploymentDoc
        isSubset:
          path: spec.template.spec.initContainers[0]
          content:
            name: release-name-common-test-install-container-name2
            image: bash:latest
            command:
              - /bin/sh
              - -c
              - |
                echo "Using image bash"
            volumeMounts:
              - name: shared-vol
                mountPath: /some/path
                readOnly: false
      - documentIndex: *deploymentDoc
        isNull:
          path: spec.template.spec.initContainers[0].livenessProbe
      - documentIndex: *deploymentDoc
        isNull:
          path: spec.template.spec.initContainers[0].readinessProbe
      - documentIndex: *deploymentDoc
        isNull:
          path: spec.template.spec.initContainers[0].startupProbe
      - documentIndex: *deploymentDoc
        isSubset:
          path: spec.template.spec.initContainers[1]
          content:
            name: release-name-common-test-init-container-name1
      - documentIndex: *deploymentDoc
        isNull:
          path: spec.template.spec.initContainers[1].command
      - documentIndex: *deploymentDoc
        isNull:
          path: spec.template.spec.initContainers[1].volumeMounts
      - documentIndex: *deploymentDoc
        isNull:
          path: spec.template.spec.initContainers[2]

  - it: should NOT generate render init container
    set:
      render: false
      image:
        repository: nginx
        tag: 1.19.0
        pullPolicy: IfNotPresent
      workload:
        workload-name:
          enabled: true
          primary: true
          type: Deployment
          podSpec:
            containers:
              container-name1:
                enabled: true
                primary: true
                imageSelector: image
                probes:
                  liveness:
                    enabled: false
                  readiness:
                    enabled: false
                  startup:
                    enabled: false
            initContainers:
              container-name1:
                enabled: "{{ .Values.render }}"
                type: init
                imageSelector: image
    asserts:
      - documentIndex: &deploymentDoc 0
        isKind:
          of: Deployment
      - documentIndex: *deploymentDoc
        isAPIVersion:
          of: apps/v1
      - documentIndex: *deploymentDoc
        isNull:
          path: spec.template.spec.initContainers
