mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[RAM] Fix rule details page not displaying the rule snooze status properly (#142292)
* Fix rule details not displaying rule snooze status * Unit and E2E tests * Fix test * Fix test Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
2a1df2dd7b
commit
43bbbc6b27
4 changed files with 109 additions and 7 deletions
|
@ -75,7 +75,7 @@ export const resolveRuleRoute = (
|
|||
verifyAccessAndContext(licenseState, async function (context, req, res) {
|
||||
const rulesClient = (await context.alerting).getRulesClient();
|
||||
const { id } = req.params;
|
||||
const rule = await rulesClient.resolve({ id });
|
||||
const rule = await rulesClient.resolve({ id, includeSnoozeData: true });
|
||||
return res.ok({
|
||||
body: rewriteBodyRes(rule),
|
||||
});
|
||||
|
|
|
@ -715,9 +715,11 @@ export class RulesClient {
|
|||
public async resolve<Params extends RuleTypeParams = never>({
|
||||
id,
|
||||
includeLegacyId,
|
||||
includeSnoozeData = false,
|
||||
}: {
|
||||
id: string;
|
||||
includeLegacyId?: boolean;
|
||||
includeSnoozeData?: boolean;
|
||||
}): Promise<ResolvedSanitizedRule<Params>> {
|
||||
const { saved_object: result, ...resolveResponse } =
|
||||
await this.unsecuredSavedObjectsClient.resolve<RawRule>('alert', id);
|
||||
|
@ -750,7 +752,9 @@ export class RulesClient {
|
|||
result.attributes.alertTypeId,
|
||||
result.attributes,
|
||||
result.references,
|
||||
includeLegacyId
|
||||
includeLegacyId,
|
||||
false,
|
||||
includeSnoozeData
|
||||
);
|
||||
|
||||
return {
|
||||
|
|
|
@ -201,6 +201,58 @@ describe('resolve()', () => {
|
|||
`);
|
||||
});
|
||||
|
||||
test('calls saved objects client with id and includeSnoozeData params', async () => {
|
||||
const rulesClient = new RulesClient(rulesClientParams);
|
||||
unsecuredSavedObjectsClient.resolve.mockResolvedValueOnce({
|
||||
saved_object: {
|
||||
id: '1',
|
||||
type: 'alert',
|
||||
attributes: {
|
||||
legacyId: 'some-legacy-id',
|
||||
alertTypeId: '123',
|
||||
schedule: { interval: '10s' },
|
||||
params: {
|
||||
bar: true,
|
||||
},
|
||||
createdAt: new Date().toISOString(),
|
||||
updatedAt: new Date().toISOString(),
|
||||
snoozeSchedule: [
|
||||
{
|
||||
duration: 10000,
|
||||
rRule: {
|
||||
dtstart: new Date().toISOString(),
|
||||
tzid: 'UTC',
|
||||
count: 1,
|
||||
},
|
||||
},
|
||||
],
|
||||
muteAll: false,
|
||||
actions: [
|
||||
{
|
||||
group: 'default',
|
||||
actionRef: 'action_0',
|
||||
params: {
|
||||
foo: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
notifyWhen: 'onActiveAlert',
|
||||
},
|
||||
references: [
|
||||
{
|
||||
name: 'action_0',
|
||||
type: 'action',
|
||||
id: '1',
|
||||
},
|
||||
],
|
||||
},
|
||||
outcome: 'aliasMatch',
|
||||
alias_target_id: '2',
|
||||
});
|
||||
const result = await rulesClient.resolve({ id: '1', includeSnoozeData: true });
|
||||
expect(result.isSnoozedUntil).toBeTruthy();
|
||||
});
|
||||
|
||||
test('should call useSavedObjectReferences.injectReferences if defined for rule type', async () => {
|
||||
const injectReferencesFn = jest.fn().mockReturnValue({
|
||||
bar: true,
|
||||
|
|
|
@ -238,7 +238,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
|
|||
});
|
||||
|
||||
it('should snooze the rule', async () => {
|
||||
const snoozeBadge = await testSubjects.find('rulesListNotifyBadge-unsnoozed');
|
||||
let snoozeBadge = await testSubjects.find('rulesListNotifyBadge-unsnoozed');
|
||||
await snoozeBadge.click();
|
||||
|
||||
const snoozeIndefinite = await testSubjects.find('ruleSnoozeIndefiniteApply');
|
||||
|
@ -247,18 +247,64 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
|
|||
await retry.try(async () => {
|
||||
await testSubjects.existOrFail('rulesListNotifyBadge-snoozedIndefinitely');
|
||||
});
|
||||
});
|
||||
|
||||
it('should unsnooze the rule', async () => {
|
||||
const snoozeBadge = await testSubjects.find('rulesListNotifyBadge-snoozedIndefinitely');
|
||||
// Unsnooze the rule for the next test
|
||||
snoozeBadge = await testSubjects.find('rulesListNotifyBadge-snoozedIndefinitely');
|
||||
await snoozeBadge.click();
|
||||
|
||||
const snoozeCancel = await testSubjects.find('ruleSnoozeCancel');
|
||||
await snoozeCancel.click();
|
||||
await pageObjects.header.waitUntilLoadingHasFinished();
|
||||
});
|
||||
|
||||
it('should snooze the rule for a set duration', async () => {
|
||||
let snoozeBadge = await testSubjects.find('rulesListNotifyBadge-unsnoozed');
|
||||
await snoozeBadge.click();
|
||||
|
||||
const snooze8h = await testSubjects.find('linkSnooze8h');
|
||||
await snooze8h.click();
|
||||
|
||||
await pageObjects.header.waitUntilLoadingHasFinished();
|
||||
|
||||
await retry.try(async () => {
|
||||
await testSubjects.existOrFail('rulesListNotifyBadge-unsnoozed');
|
||||
await testSubjects.existOrFail('rulesListNotifyBadge-snoozed');
|
||||
});
|
||||
|
||||
// Unsnooze the rule for the next test
|
||||
snoozeBadge = await testSubjects.find('rulesListNotifyBadge-snoozed');
|
||||
await snoozeBadge.click();
|
||||
|
||||
const snoozeCancel = await testSubjects.find('ruleSnoozeCancel');
|
||||
await snoozeCancel.click();
|
||||
await pageObjects.header.waitUntilLoadingHasFinished();
|
||||
});
|
||||
|
||||
it('should add snooze schedule', async () => {
|
||||
let snoozeBadge = await testSubjects.find('rulesListNotifyBadge-unsnoozed');
|
||||
await snoozeBadge.click();
|
||||
|
||||
const addScheduleButton = await testSubjects.find('ruleAddSchedule');
|
||||
await addScheduleButton.click();
|
||||
|
||||
const saveScheduleButton = await testSubjects.find('scheduler-saveSchedule');
|
||||
await saveScheduleButton.click();
|
||||
|
||||
await pageObjects.header.waitUntilLoadingHasFinished();
|
||||
|
||||
await retry.try(async () => {
|
||||
await testSubjects.existOrFail('rulesListNotifyBadge-scheduled');
|
||||
});
|
||||
|
||||
// Unsnooze the rule for the next test
|
||||
snoozeBadge = await testSubjects.find('rulesListNotifyBadge-scheduled');
|
||||
await snoozeBadge.click();
|
||||
|
||||
const snoozeCancel = await testSubjects.find('ruleRemoveAllSchedules');
|
||||
await snoozeCancel.click();
|
||||
|
||||
const confirmButton = await testSubjects.find('confirmModalConfirmButton');
|
||||
await confirmButton.click();
|
||||
await pageObjects.header.waitUntilLoadingHasFinished();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue