Skip to content

Commit

Permalink
Add unit test for state_check.go
Browse files Browse the repository at this point in the history
  • Loading branch information
nesmabadr committed Sep 4, 2024
1 parent 0b90859 commit 31dbd5d
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 7 deletions.
12 changes: 6 additions & 6 deletions internal/manifest/statecheck/state_check.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (
)

type ManagerStateCheck struct {
statefulSetChecker StatefulSetStateChecker
deploymentStateChecker DeploymentStateChecker
StatefulSetChecker StatefulSetStateChecker
DeploymentStateChecker DeploymentStateChecker
}

type DeploymentStateChecker interface {
Expand All @@ -39,8 +39,8 @@ type Manager struct {
func NewManagerStateCheck(statefulSetChecker StatefulSetStateChecker,
deploymentChecker DeploymentStateChecker) *ManagerStateCheck {
return &ManagerStateCheck{
statefulSetChecker: statefulSetChecker,
deploymentStateChecker: deploymentChecker,
StatefulSetChecker: statefulSetChecker,
DeploymentStateChecker: deploymentChecker,
}
}

Expand All @@ -55,9 +55,9 @@ func (m *ManagerStateCheck) GetState(ctx context.Context,

switch mgr.Kind {
case StatefulSetKind:
return m.statefulSetChecker.GetState(ctx, clnt, mgr.StatefulSet)
return m.StatefulSetChecker.GetState(ctx, clnt, mgr.StatefulSet)
case DeploymentKind:
return m.deploymentStateChecker.GetState(mgr.Deployment)
return m.DeploymentStateChecker.GetState(mgr.Deployment)
}

return shared.StateReady, nil
Expand Down
91 changes: 91 additions & 0 deletions internal/manifest/statecheck/state_check_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package statecheck_test

import (
"context"
"github.com/kyma-project/lifecycle-manager/api/shared"
"github.com/kyma-project/lifecycle-manager/internal/manifest/statecheck"
"github.com/stretchr/testify/require"
apiappsv1 "k8s.io/api/apps/v1"
apimetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
machineryruntime "k8s.io/apimachinery/pkg/runtime"
"k8s.io/cli-runtime/pkg/resource"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"testing"
)

func TestManagerStateCheck_GetState(t *testing.T) {
tests := []struct {
name string
resources []*resource.Info
isDeployment bool
}{
{
name: "Test Deployment State Checker",
resources: []*resource.Info{
{
Object: &apiappsv1.Deployment{
ObjectMeta: apimetav1.ObjectMeta{Name: "some-deploy"},
},
},
},
isDeployment: true,
},
{
name: "Test StatefulSet State Checker",
resources: []*resource.Info{
{
Object: &apiappsv1.StatefulSet{
ObjectMeta: apimetav1.ObjectMeta{Name: "some-statefulset"},
},
},
},
isDeployment: false,
},
}
for _, testCase := range tests {
t.Run(testCase.name, func(t *testing.T) {
scheme := machineryruntime.NewScheme()
_ = apiappsv1.AddToScheme(scheme)
clnt := fake.NewClientBuilder().WithScheme(scheme).Build()

statefulsetChecker := &StatefulSetStateCheckerStub{}
deploymentChecker := &DeploymentStateCheckerStub{}
m := &statecheck.ManagerStateCheck{
StatefulSetChecker: statefulsetChecker,
DeploymentStateChecker: deploymentChecker,
}
got, err := m.GetState(context.Background(), clnt, testCase.resources)
require.NoError(t, err)
if testCase.isDeployment {
require.True(t, deploymentChecker.called)
require.False(t, statefulsetChecker.called)
require.Equal(t, shared.StateProcessing, got)
} else {
require.True(t, statefulsetChecker.called)
require.False(t, deploymentChecker.called)
require.Equal(t, shared.StateReady, got)
}
})
}
}

// Test Stubs.
type DeploymentStateCheckerStub struct {
called bool
}

func (d *DeploymentStateCheckerStub) GetState(_ *apiappsv1.Deployment) (shared.State, error) {
d.called = true
return shared.StateProcessing, nil
}

type StatefulSetStateCheckerStub struct {
called bool
}

func (s *StatefulSetStateCheckerStub) GetState(_ context.Context, _ client.Client,
_ *apiappsv1.StatefulSet) (shared.State, error) {
s.called = true
return shared.StateReady, nil
}
2 changes: 1 addition & 1 deletion unit-test-coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ packages:
internal/descriptor/cache: 93
internal/descriptor/provider: 66
internal/event: 100
internal/manifest/statecheck: 45
internal/manifest/statecheck: 66
internal/manifest/filemutex: 100
internal/istio: 63
internal/pkg/resources: 91
Expand Down

0 comments on commit 31dbd5d

Please sign in to comment.