grafana/public/app/features/alerting/unified/hooks/useCombinedRuleNamespaces.test.ts
Josh Hunt 3c6e0e8ef8
Chore: ESlint import order (#44959)
* Add and configure eslint-plugin-import

* Fix the lint:ts npm command

* Autofix + prettier all the files

* Manually fix remaining files

* Move jquery code in jest-setup to external file to safely reorder imports

* Resolve issue caused by circular dependencies within Prometheus

* Update .betterer.results

* Fix missing // @ts-ignore

* ignore iconBundle.ts

* Fix missing // @ts-ignore
2022-04-22 14:33:13 +01:00

59 lines
1.6 KiB
TypeScript

import { CombinedRuleGroup, CombinedRuleNamespace } from 'app/types/unified-alerting';
import { sortRulesByName, flattenGrafanaManagedRules } from './useCombinedRuleNamespaces';
describe('flattenGrafanaManagedRules', () => {
it('should properly transform grafana managed namespaces', () => {
// the rules from both ungrouped groups should go in the default group
const ungroupedGroup1 = {
name: 'my-rule',
rules: [{ name: 'my-rule' }],
} as CombinedRuleGroup;
const ungroupedGroup2 = {
name: 'another-rule',
rules: [{ name: 'another-rule' }],
} as CombinedRuleGroup;
// the rules from both these groups should go in their own group name
const group1 = {
name: 'group1',
rules: [{ name: 'rule-1' }, { name: 'rule-2' }],
} as CombinedRuleGroup;
const group2 = {
name: 'group2',
rules: [{ name: 'rule-1' }, { name: 'rule-2' }],
} as CombinedRuleGroup;
const namespace1 = {
rulesSource: 'grafana',
name: 'ns1',
groups: [ungroupedGroup1, ungroupedGroup2, group1, group2],
};
const namespace2 = {
rulesSource: 'grafana',
name: 'ns2',
groups: [ungroupedGroup1],
};
const input = [namespace1, namespace2] as CombinedRuleNamespace[];
const [ns1, ns2] = flattenGrafanaManagedRules(input);
expect(ns1.groups).toEqual([
{
name: 'default',
rules: sortRulesByName([...ungroupedGroup1.rules, ...ungroupedGroup2.rules, ...group1.rules, ...group2.rules]),
},
]);
expect(ns2.groups).toEqual([
{
name: 'default',
rules: ungroupedGroup1.rules,
},
]);
});
});