Fixing theme tag issue and adding more testing (#161910)

## Summary

Fixing calculated theme tags. An issue found was in the bootstrap
renderer when User Profile's Theme was set to 'Light' and Adv. Setting's
Theme was set to 'Dark'.

In my original PR, I had originally had the UserSettings > darkMode be a
string ('', 'light', 'dark'), but changed it to a boolean | undefined
and the conditional no longer worked.

This should fix a number of sporadic darkmode issues
This commit is contained in:
Kurt 2023-07-14 08:03:51 -04:00 committed by GitHub
parent 3a48f88766
commit e5bcc87202
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 73 additions and 4 deletions

View file

@ -92,7 +92,7 @@ describe('bootstrapRenderer', () => {
expect(uiSettingsClient.get).toHaveBeenCalledWith('theme:darkMode');
});
it('calls getThemeTag with the values from the UiSettingsClient when the UserSettingsService is not provided', async () => {
it('calls getThemeTag with the values from the UiSettingsClient (true/dark) when the UserSettingsService is not provided', async () => {
uiSettingsClient.get.mockResolvedValue(true);
const request = httpServerMock.createKibanaRequest();
@ -109,7 +109,24 @@ describe('bootstrapRenderer', () => {
});
});
it('calls getThemeTag with values from the UserSettingsService when provided', async () => {
it('calls getThemeTag with the values from the UiSettingsClient (false/light) when the UserSettingsService is not provided', async () => {
uiSettingsClient.get.mockResolvedValue(false);
const request = httpServerMock.createKibanaRequest();
await renderer({
request,
uiSettingsClient,
});
expect(getThemeTagMock).toHaveBeenCalledTimes(1);
expect(getThemeTagMock).toHaveBeenCalledWith({
themeVersion: 'v8',
darkMode: false,
});
});
it('calls getThemeTag with values (true/dark) from the UserSettingsService when provided', async () => {
userSettingsService.getUserSettingDarkMode.mockReturnValueOnce(true);
renderer = bootstrapRendererFactory({
@ -135,7 +152,33 @@ describe('bootstrapRenderer', () => {
});
});
it('calls getThemeTag with values from the UiSettingsClient when values from UserSettingsService are `undefined`', async () => {
it('calls getThemeTag with values (false/light) from the UserSettingsService when provided', async () => {
userSettingsService.getUserSettingDarkMode.mockReturnValueOnce(false);
renderer = bootstrapRendererFactory({
auth,
packageInfo,
uiPlugins,
serverBasePath: '/base-path',
userSettingsService,
});
uiSettingsClient.get.mockResolvedValue(true);
const request = httpServerMock.createKibanaRequest();
await renderer({
request,
uiSettingsClient,
});
expect(getThemeTagMock).toHaveBeenCalledTimes(1);
expect(getThemeTagMock).toHaveBeenCalledWith({
themeVersion: 'v8',
darkMode: false,
});
});
it('calls getThemeTag with values from the UiSettingsClient when values (false/light) from UserSettingsService are `undefined`', async () => {
userSettingsService.getUserSettingDarkMode.mockReturnValueOnce(undefined);
renderer = bootstrapRendererFactory({
@ -160,6 +203,32 @@ describe('bootstrapRenderer', () => {
darkMode: false,
});
});
it('calls getThemeTag with values from the UiSettingsClient when values (true/dark) from UserSettingsService are `undefined`', async () => {
userSettingsService.getUserSettingDarkMode.mockReturnValueOnce(undefined);
renderer = bootstrapRendererFactory({
auth,
packageInfo,
uiPlugins,
serverBasePath: '/base-path',
userSettingsService,
});
uiSettingsClient.get.mockResolvedValue(true);
const request = httpServerMock.createKibanaRequest();
await renderer({
request,
uiSettingsClient,
});
expect(getThemeTagMock).toHaveBeenCalledTimes(1);
expect(getThemeTagMock).toHaveBeenCalledWith({
themeVersion: 'v8',
darkMode: true,
});
});
});
describe('when the auth status is `unknown`', () => {

View file

@ -63,7 +63,7 @@ export const bootstrapRendererFactory: BootstrapRendererFactory = ({
if (authenticated) {
const userSettingDarkMode = await userSettingsService?.getUserSettingDarkMode(request);
if (userSettingDarkMode) {
if (userSettingDarkMode !== undefined) {
darkMode = userSettingDarkMode;
} else {
darkMode = await uiSettingsClient.get('theme:darkMode');