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

Function Test_Experiments

coderd/experiments_test.go:15–136  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

13)
14
15func Test_Experiments(t *testing.T) {
16 t.Parallel()
17 t.Run("empty", func(t *testing.T) {
18 t.Parallel()
19 cfg := coderdtest.DeploymentValues(t)
20 client := coderdtest.New(t, &coderdtest.Options{
21 DeploymentValues: cfg,
22 })
23 _ = coderdtest.CreateFirstUser(t, client)
24
25 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
26 defer cancel()
27
28 experiments, err := client.Experiments(ctx)
29 require.NoError(t, err)
30 require.NotNil(t, experiments)
31 require.Empty(t, experiments)
32 require.False(t, experiments.Enabled("foo"))
33 })
34
35 t.Run("multiple features", func(t *testing.T) {
36 t.Parallel()
37 cfg := coderdtest.DeploymentValues(t)
38 cfg.Experiments = []string{"foo", "BAR"}
39 client := coderdtest.New(t, &coderdtest.Options{
40 DeploymentValues: cfg,
41 })
42 _ = coderdtest.CreateFirstUser(t, client)
43
44 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
45 defer cancel()
46
47 experiments, err := client.Experiments(ctx)
48 require.NoError(t, err)
49 require.NotNil(t, experiments)
50 // Should be lower-cased.
51 require.ElementsMatch(t, []codersdk.Experiment{"foo", "bar"}, experiments)
52 require.True(t, experiments.Enabled("foo"))
53 require.True(t, experiments.Enabled("bar"))
54 require.False(t, experiments.Enabled("baz"))
55 })
56
57 t.Run("wildcard", func(t *testing.T) {
58 t.Parallel()
59 cfg := coderdtest.DeploymentValues(t)
60 cfg.Experiments = []string{"*"}
61 client := coderdtest.New(t, &coderdtest.Options{
62 DeploymentValues: cfg,
63 })
64 _ = coderdtest.CreateFirstUser(t, client)
65
66 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
67 defer cancel()
68
69 experiments, err := client.Experiments(ctx)
70 require.NoError(t, err)
71 require.NotNil(t, experiments)
72 require.ElementsMatch(t, codersdk.ExperimentsSafe, experiments)

Callers

nothing calls this directly

Calls 9

DeploymentValuesFunction · 0.92
NewFunction · 0.92
CreateFirstUserFunction · 0.92
SafeExperimentsMethod · 0.80
RunMethod · 0.65
EnabledMethod · 0.65
ExperimentsMethod · 0.45
EmptyMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected