(t *testing.T)
| 1925 | } |
| 1926 | |
| 1927 | func TestUserThemeMode(t *testing.T) { |
| 1928 | t.Parallel() |
| 1929 | |
| 1930 | adminClient := coderdtest.New(t, nil) |
| 1931 | firstUser := coderdtest.CreateFirstUser(t, adminClient) |
| 1932 | |
| 1933 | t.Run("defaults to empty", func(t *testing.T) { |
| 1934 | t.Parallel() |
| 1935 | |
| 1936 | client, _ := coderdtest.CreateAnotherUser(t, adminClient, firstUser.OrganizationID) |
| 1937 | |
| 1938 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort) |
| 1939 | defer cancel() |
| 1940 | |
| 1941 | initial, err := client.GetUserAppearanceSettings(ctx, codersdk.Me) |
| 1942 | require.NoError(t, err) |
| 1943 | // A fresh user has never written any theme_* key. The GET handler |
| 1944 | // should return empty strings rather than error out. |
| 1945 | require.Equal(t, codersdk.ThemeModeUnset, initial.ThemeMode) |
| 1946 | require.Equal(t, "", initial.ThemeLight) |
| 1947 | require.Equal(t, "", initial.ThemeDark) |
| 1948 | }) |
| 1949 | |
| 1950 | t.Run("sync mode roundtrip", func(t *testing.T) { |
| 1951 | t.Parallel() |
| 1952 | |
| 1953 | client, _ := coderdtest.CreateAnotherUser(t, adminClient, firstUser.OrganizationID) |
| 1954 | |
| 1955 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort) |
| 1956 | defer cancel() |
| 1957 | |
| 1958 | updated, err := client.UpdateUserAppearanceSettings(ctx, codersdk.Me, codersdk.UpdateUserAppearanceSettingsRequest{ |
| 1959 | ThemePreference: "dark-tritan", |
| 1960 | ThemeMode: codersdk.ThemeModeSync, |
| 1961 | ThemeLight: "light-tritan", |
| 1962 | ThemeDark: "dark-tritan", |
| 1963 | TerminalFont: codersdk.TerminalFontGeistMono, |
| 1964 | }) |
| 1965 | require.NoError(t, err) |
| 1966 | require.Equal(t, codersdk.ThemeModeSync, updated.ThemeMode) |
| 1967 | require.Equal(t, "light-tritan", updated.ThemeLight) |
| 1968 | require.Equal(t, "dark-tritan", updated.ThemeDark) |
| 1969 | |
| 1970 | // Fetched values should match. |
| 1971 | fetched, err := client.GetUserAppearanceSettings(ctx, codersdk.Me) |
| 1972 | require.NoError(t, err) |
| 1973 | require.Equal(t, codersdk.ThemeModeSync, fetched.ThemeMode) |
| 1974 | require.Equal(t, "light-tritan", fetched.ThemeLight) |
| 1975 | require.Equal(t, "dark-tritan", fetched.ThemeDark) |
| 1976 | }) |
| 1977 | |
| 1978 | t.Run("sync mode accepts any concrete theme per slot", func(t *testing.T) { |
| 1979 | t.Parallel() |
| 1980 | |
| 1981 | client, _ := coderdtest.CreateAnotherUser(t, adminClient, firstUser.OrganizationID) |
| 1982 | |
| 1983 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort) |
| 1984 | defer cancel() |
nothing calls this directly
no test coverage detected