Skip to content

Commit 0b9fb5b

Browse files
add unit test for feature gate enabled
Signed-off-by: Rashmi Gottipati <rgottipa@redhat.com>
1 parent 97beb98 commit 0b9fb5b

File tree

1 file changed

+41
-2
lines changed

1 file changed

+41
-2
lines changed

internal/operator-controller/catalogmetadata/filter/successors_test.go

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package filter
22

33
import (
4+
"fmt"
45
"slices"
56
"testing"
67

@@ -16,6 +17,7 @@ import (
1617
ocv1 "github.com/operator-framework/operator-controller/api/v1"
1718
"github.com/operator-framework/operator-controller/internal/operator-controller/bundleutil"
1819
"github.com/operator-framework/operator-controller/internal/operator-controller/catalogmetadata/compare"
20+
"github.com/operator-framework/operator-controller/internal/operator-controller/features"
1921
"github.com/operator-framework/operator-controller/internal/shared/util/filter"
2022
)
2123

@@ -242,8 +244,7 @@ func TestLegacySuccessor(t *testing.T) {
242244
}
243245

244246
// TestSuccessorsOf_WithReleaseVersionPriority_FeatureGateDisabled verifies higher releases
245-
// are NOT successors when ReleaseVersionPriority gate is disabled (default).
246-
// TODO: Feature gate enabled behavior must be tested in E2E tests.
247+
// are NOT successors when ReleaseVersionPriority gate is disabled (testing the default behavior).
247248
func TestSuccessorsOf_WithReleaseVersionPriority_FeatureGateDisabled(t *testing.T) {
248249
channel := declcfg.Channel{
249250
Entries: []declcfg.ChannelEntry{
@@ -273,3 +274,41 @@ func TestSuccessorsOf_WithReleaseVersionPriority_FeatureGateDisabled(t *testing.
273274
// Higher release should NOT match without feature gate
274275
assert.False(t, predicate(higherRelease))
275276
}
277+
278+
// TestSuccessorsOf_WithReleaseVersionPriority_FeatureGateEnabled verifies higher releases
279+
// as valid successors when ReleaseVersionPriority gate is enabled.
280+
func TestSuccessorsOf_WithReleaseVersionPriority_FeatureGateEnabled(t *testing.T) {
281+
// Enable the feature gate for this test
282+
require.NoError(t, features.OperatorControllerFeatureGate.Set(fmt.Sprintf("%s=true", features.ReleaseVersionPriority)))
283+
t.Cleanup(func() {
284+
require.NoError(t, features.OperatorControllerFeatureGate.Set(fmt.Sprintf("%s=false", features.ReleaseVersionPriority)))
285+
})
286+
287+
channel := declcfg.Channel{
288+
Entries: []declcfg.ChannelEntry{
289+
{Name: "test-package.v1.0.0+1"},
290+
{
291+
Name: "test-package.v2.0.0",
292+
Replaces: "test-package.v1.0.0+1",
293+
},
294+
},
295+
}
296+
installedBundle := ocv1.BundleMetadata{
297+
Name: "test-package.v1.0.0+1",
298+
Version: "1.0.0+1",
299+
}
300+
301+
higherRelease := declcfg.Bundle{
302+
Name: "test-package.v1.0.0+2",
303+
Package: "test-package",
304+
Properties: []property.Property{
305+
property.MustBuildPackage("test-package", "1.0.0+2"),
306+
},
307+
}
308+
309+
predicate, err := SuccessorsOf(installedBundle, channel)
310+
require.NoError(t, err)
311+
312+
// Higher release should match when feature gate is enabled
313+
assert.True(t, predicate(higherRelease))
314+
}

0 commit comments

Comments
 (0)