diff --git a/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.test.tsx b/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.test.tsx
index f6b530d54c8..a63f5bcb004 100644
--- a/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.test.tsx
+++ b/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.test.tsx
@@ -1,6 +1,7 @@
import { render, screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
+import { PluginLoadingStrategy } from '@grafana/data';
import { config } from '@grafana/runtime';
import { contextSrv } from 'app/core/core';
@@ -23,6 +24,27 @@ describe('AdvisorRedirectNotice', () => {
afterEach(() => {
jest.clearAllMocks();
config.featureToggles.grafanaAdvisor = originalFeatureToggleValue;
+ config.apps['grafana-advisor-app'] = {
+ id: 'grafana-advisor-app',
+ path: '/a/grafana-advisor-app',
+ version: '1.0.0',
+ preload: false,
+ angular: { detected: false, hideDeprecation: false },
+ loadingStrategy: PluginLoadingStrategy.fetch,
+ dependencies: {
+ grafanaDependency: '*',
+ grafanaVersion: '*',
+ plugins: [],
+ extensions: { exposedComponents: [] },
+ },
+ extensions: {
+ addedLinks: [],
+ addedComponents: [],
+ exposedComponents: [],
+ extensionPoints: [],
+ addedFunctions: [],
+ },
+ };
});
it('should not render when user is not admin', async () => {
@@ -36,6 +58,13 @@ describe('AdvisorRedirectNotice', () => {
render();
expect(screen.queryByRole('status')).not.toBeInTheDocument();
});
+
+ it('should not render when app is not installed', async () => {
+ delete config.apps['grafana-advisor-app'];
+ render();
+ expect(screen.queryByRole('status')).not.toBeInTheDocument();
+ });
+
it('should render notice with correct content', async () => {
render();
diff --git a/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.tsx b/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.tsx
index b83c864d26c..28b9dbfbe19 100644
--- a/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.tsx
+++ b/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.tsx
@@ -26,8 +26,9 @@ const userStorage = new UserStorage('advisor-redirect-notice');
export function AdvisorRedirectNotice() {
const styles = useStyles2(getStyles);
const hasAdminRights = contextSrv.hasRole('Admin') || contextSrv.isGrafanaAdmin;
- const canUseAdvisor = hasAdminRights && config.featureToggles.grafanaAdvisor;
const [showNotice, setShowNotice] = useState(false);
+ const canUseAdvisor = hasAdminRights && config.featureToggles.grafanaAdvisor && !!config.apps['grafana-advisor-app'];
+
useEffect(() => {
if (canUseAdvisor) {
userStorage.getItem('showNotice').then((showNotice) => {