mirror of
https://github.com/prymitive/karma
synced 2026-05-07 03:26:52 +00:00
fix(ui): fix the logic for deciding when to show @alertmanager labels in the footer, add a test
This commit is contained in:
@@ -32,6 +32,15 @@ LoadButton.propTypes = {
|
||||
action: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
const AllAlertsAreUsingSameAlertmanagers = alerts => {
|
||||
const usedAMs = alerts.map(alert =>
|
||||
alert.alertmanager.map(am => am.name).sort()
|
||||
);
|
||||
return usedAMs.every(
|
||||
listOfAMs => JSON.stringify(listOfAMs) === JSON.stringify(usedAMs[0])
|
||||
);
|
||||
};
|
||||
|
||||
const AlertGroup = observer(
|
||||
class AlertGroup extends Component {
|
||||
static propTypes = {
|
||||
@@ -137,9 +146,7 @@ const AlertGroup = observer(
|
||||
// alertmanagers (and there's > 1 alert to show, there's no footer for 1)
|
||||
showAlertmanagersInFooter =
|
||||
group.alerts.length > 1 &&
|
||||
Object.values(group.alertmanagerCount).every(
|
||||
elem => elem === Object.values(group.alertmanagerCount)[0]
|
||||
);
|
||||
AllAlertsAreUsingSameAlertmanagers(group.alerts);
|
||||
if (showAlertmanagersInFooter) {
|
||||
footerAlertmanagers = group.alerts[0].alertmanager.map(am => am.name);
|
||||
}
|
||||
|
||||
@@ -65,6 +65,27 @@ describe("<AlertGroup />", () => {
|
||||
expect(tree.find("GroupFooter").html()).toMatch(/@alertmanager: default/);
|
||||
});
|
||||
|
||||
it("doesn't render alertmanager labels in footer when they are unique", () => {
|
||||
MockAlerts(5);
|
||||
for (let i = 0; i < group.alerts.length; i++) {
|
||||
group.alerts[i].alertmanager[0].name = `fakeAlertmanager${i}`;
|
||||
}
|
||||
group.alertmanagerCount = {
|
||||
fakeAlertmanager0: 1,
|
||||
fakeAlertmanager1: 1,
|
||||
fakeAlertmanager2: 1,
|
||||
fakeAlertmanager3: 1,
|
||||
fakeAlertmanager4: 1
|
||||
};
|
||||
const tree = MountedAlertGroup(jest.fn(), true);
|
||||
|
||||
const alerts = tree.find("ul.list-group");
|
||||
expect(alerts.html()).toMatch(/@alertmanager:/);
|
||||
|
||||
const footer = tree.find("GroupFooter");
|
||||
expect(footer.html()).not.toMatch(/@alertmanager:/);
|
||||
});
|
||||
|
||||
it("only renders titlebar when collapsed", () => {
|
||||
MockAlerts(10);
|
||||
const tree = MountedAlertGroup(jest.fn(), false);
|
||||
|
||||
Reference in New Issue
Block a user