Skip to content

Commit

Permalink
chore: show error in wallboard, too, when server connection is lost
Browse files Browse the repository at this point in the history
  • Loading branch information
SteKoe committed Dec 21, 2022
1 parent d1eaf81 commit 8ed9505
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 13 deletions.
4 changes: 2 additions & 2 deletions spring-boot-admin-server-ui/src/main/frontend/test-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ export const render = (testComponent, options) => {
en: terms,
},
legacy: false,
silentFallbackWarn: true,
silentTranslationWarn: true,
fallbackWarn: false,
missingWarn: false,
}),
NotificationcenterPlugin,
SbaModalPlugin,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,19 @@

<template>
<section class="wallboard section">
<p v-if="!applicationsInitialized" class="is-muted is-loading">
Loading applications...
</p>
<sba-alert
v-if="error"
:error="error"
:title="t('applications.server_connection_failed')"
class="my-0 fixed w-full"
severity="WARN"
/>

<p
v-if="!applicationsInitialized"
class="is-muted is-loading"
v-text="t('applications.loading_applications')"
></p>
<hex-mesh
v-if="applicationsInitialized"
:class-for-item="classForApplication"
Expand Down Expand Up @@ -51,21 +61,20 @@
</template>

<script>
import { useI18n } from 'vue-i18n';
import { HealthStatus } from '@/HealthStatus';
import { useApplicationStore } from '@/composables/useApplicationStore';
import hexMesh from '@/views/wallboard/hex-mesh';
export default {
components: { hexMesh },
props: {
error: {
type: Error,
default: null,
},
},
setup() {
const { applications, applicationsInitialized } = useApplicationStore();
return { applications, applicationsInitialized };
const { t } = useI18n();
const { applications, applicationsInitialized, error } =
useApplicationStore();
return { applications, applicationsInitialized, error, t };
},
methods: {
classForApplication(application) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import { screen, waitFor } from '@testing-library/vue';
import { ref } from 'vue';

import { useApplicationStore } from '@/composables/useApplicationStore';
import Application from '@/services/application';
import Instance from '@/services/instance';
import { render } from '@/test-utils';
import Wallboard from '@/views/wallboard/index.vue';

jest.mock('@/composables/useApplicationStore', () => ({
useApplicationStore: jest.fn(),
}));

describe('Wallboard', () => {
let applicationsInitialized;
let applications;
let error;

beforeEach(async () => {
applicationsInitialized = ref(false);
applications = ref([]);
error = ref(null);

useApplicationStore.mockReturnValue({
applicationsInitialized,
applications,
error,
});

await render(Wallboard);
});

it('shows message when applications list is loaded', async () => {
screen.findByText('applications.loading_applications');
});

it('shows application', async () => {
applicationsInitialized.value = true;
applications.value = [
new Application({
name: 'Test Application',
statusTimestamp: Date.now(),
instances: [new Instance({ id: '4711' })],
}),
];
await waitFor(() => {
expect(screen.getByText('Test Application')).toBeVisible();
});
});

it('shows error, when connection is lost', async () => {
applicationsInitialized.value = true;
applications.value = [];
error.value = new Error('Connection lost');
await waitFor(() => {
expect(
screen.getByText('applications.server_connection_failed')
).toBeVisible();
});
});
});

0 comments on commit 8ed9505

Please sign in to comment.