mirror of https://github.com/grafana/grafana
CloudWatch: Fix logs insights deeplink (#59906)
* CloudWatch: Add arns to log insights button * start test * convert to function component * add tests Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>pull/60241/head
parent
239888f229
commit
db145774d3
@ -0,0 +1,18 @@ |
||||
import { DataQueryRequest } from '@grafana/data'; |
||||
|
||||
import { CloudWatchQuery } from '../types'; |
||||
|
||||
import { TimeRangeMock } from './timeRange'; |
||||
|
||||
export const RequestMock: DataQueryRequest<CloudWatchQuery> = { |
||||
range: TimeRangeMock, |
||||
rangeRaw: { from: TimeRangeMock.from, to: TimeRangeMock.to }, |
||||
targets: [], |
||||
requestId: '', |
||||
interval: '', |
||||
intervalMs: 0, |
||||
scopedVars: {}, |
||||
timezone: '', |
||||
app: '', |
||||
startTime: 0, |
||||
}; |
||||
@ -0,0 +1,87 @@ |
||||
import { act, render, screen, waitFor } from '@testing-library/react'; |
||||
import React from 'react'; |
||||
|
||||
import { LoadingState } from '@grafana/data'; |
||||
|
||||
import { setupMockedDataSource } from '../__mocks__/CloudWatchDataSource'; |
||||
import { RequestMock } from '../__mocks__/Request'; |
||||
import { validLogsQuery } from '../__mocks__/queries'; |
||||
import { CloudWatchLogsQuery } from '../types'; |
||||
|
||||
import { CloudWatchLink } from './CloudWatchLink'; |
||||
|
||||
describe('CloudWatchLink', () => { |
||||
it('generates a link with log group names', async () => { |
||||
const ds = setupMockedDataSource(); |
||||
|
||||
const { rerender } = render( |
||||
<CloudWatchLink query={validLogsQuery} datasource={ds.datasource} panelData={undefined} /> |
||||
); |
||||
|
||||
await waitFor(() => { |
||||
expect(screen.getByText('CloudWatch Logs Insights').closest('a')).toHaveAttribute('href', ''); |
||||
}); |
||||
|
||||
await act(async () => { |
||||
rerender( |
||||
<CloudWatchLink |
||||
query={validLogsQuery} |
||||
datasource={ds.datasource} |
||||
panelData={{ |
||||
timeRange: RequestMock.range, |
||||
request: RequestMock, |
||||
state: LoadingState.Done, |
||||
series: [], |
||||
}} |
||||
/> |
||||
); |
||||
}); |
||||
|
||||
await waitFor(() => { |
||||
expect(screen.getByText('CloudWatch Logs Insights').closest('a')).toHaveAttribute( |
||||
'href', |
||||
"https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logs-insights:queryDetail=~(end~'2016-12-31T16*3a00*3a00.000Z~start~'2016-12-31T15*3a00*3a00.000Z~timeType~'ABSOLUTE~tz~'UTC~editorString~'fields*20*40timestamp*2c*20*40message*20*7c*20sort*20*40timestamp*20desc*20*7c*20limit*2025~isLiveTail~false~source~(~'group-A~'group-B))" |
||||
); |
||||
}); |
||||
}); |
||||
|
||||
it('generates a link with log group names', async () => { |
||||
const ds = setupMockedDataSource(); |
||||
const query: CloudWatchLogsQuery = { |
||||
...validLogsQuery, |
||||
logGroupNames: undefined, |
||||
logGroups: [ |
||||
{ value: 'arn:aws:logs:us-east-1:111111111111:log-group:/aws/lambda/test1', text: '/aws/lambda/test1' }, |
||||
{ value: 'arn:aws:logs:us-east-1:111111111111:log-group:/aws/lambda/test2', text: '/aws/lambda/test2' }, |
||||
], |
||||
}; |
||||
|
||||
const { rerender } = render(<CloudWatchLink query={query} datasource={ds.datasource} panelData={undefined} />); |
||||
|
||||
await waitFor(() => { |
||||
expect(screen.getByText('CloudWatch Logs Insights').closest('a')).toHaveAttribute('href', ''); |
||||
}); |
||||
|
||||
await act(async () => { |
||||
rerender( |
||||
<CloudWatchLink |
||||
query={query} |
||||
datasource={ds.datasource} |
||||
panelData={{ |
||||
timeRange: RequestMock.range, |
||||
request: RequestMock, |
||||
state: LoadingState.Done, |
||||
series: [], |
||||
}} |
||||
/> |
||||
); |
||||
}); |
||||
|
||||
await waitFor(() => { |
||||
expect(screen.getByText('CloudWatch Logs Insights').closest('a')).toHaveAttribute( |
||||
'href', |
||||
"https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logs-insights:queryDetail=~(end~'2016-12-31T16*3a00*3a00.000Z~start~'2016-12-31T15*3a00*3a00.000Z~timeType~'ABSOLUTE~tz~'UTC~editorString~'fields*20*40timestamp*2c*20*40message*20*7c*20sort*20*40timestamp*20desc*20*7c*20limit*2025~isLiveTail~false~source~(~'arn*3aaws*3alogs*3aus-east-1*3a111111111111*3alog-group*3a*2faws*2flambda*2ftest1~'arn*3aaws*3alogs*3aus-east-1*3a111111111111*3alog-group*3a*2faws*2flambda*2ftest2))" |
||||
); |
||||
}); |
||||
}); |
||||
}); |
||||
Loading…
Reference in new issue