MCPcopy Index your code
hub / github.com/coder/coder / TestPremiumSuperSet

Function TestPremiumSuperSet

codersdk/deployment_test.go:1028–1056  ·  view source on GitHub ↗

TestPremiumSuperSet tests that the "premium" feature set is a superset of the "enterprise" feature set.

(t *testing.T)

Source from the content-addressed store, hash-verified

1026// TestPremiumSuperSet tests that the "premium" feature set is a superset of the
1027// "enterprise" feature set.
1028func TestPremiumSuperSet(t *testing.T) {
1029 t.Parallel()
1030
1031 enterprise := codersdk.FeatureSetEnterprise
1032 premium := codersdk.FeatureSetPremium
1033
1034 // Premium > Enterprise
1035 require.Greater(t, len(premium.Features()), len(enterprise.Features()), "premium should have more features than enterprise")
1036
1037 // Premium ⊃ Enterprise
1038 require.Subset(t, premium.Features(), enterprise.Features(), "premium should be a superset of enterprise. If this fails, update the premium feature set to include all enterprise features.")
1039
1040 // Premium = All Features EXCEPT limit-based features.
1041 // TODO: In future release, also exclude addon features (f.IsAddonFeature()).
1042 expectedPremiumFeatures := []codersdk.FeatureName{}
1043 for _, feature := range codersdk.FeatureNames {
1044 if feature.UsesLimit() {
1045 continue
1046 }
1047 expectedPremiumFeatures = append(expectedPremiumFeatures, feature)
1048 }
1049 require.NotEmpty(t, expectedPremiumFeatures, "expectedPremiumFeatures should not be empty")
1050 require.ElementsMatch(t, premium.Features(), expectedPremiumFeatures, "premium should contain all features except usage limit features")
1051
1052 // This check exists because if you misuse the slices.Delete, you can end up
1053 // with zero'd values.
1054 require.NotContains(t, enterprise.Features(), "", "enterprise should not contain empty string")
1055 require.NotContains(t, premium.Features(), "", "premium should not contain empty string")
1056}
1057
1058func TestNotificationsCanBeDisabled(t *testing.T) {
1059 t.Parallel()

Callers

nothing calls this directly

Calls 3

UsesLimitMethod · 0.80
NotEmptyMethod · 0.80
FeaturesMethod · 0.45

Tested by

no test coverage detected