fix(ui): fix the logic for deciding when to show @alertmanager labels in the footer, add a test

This commit is contained in:
Łukasz Mierzwa
2018-09-02 17:49:43 +01:00
parent ba6ed7f9ff
commit 2bb0f2ffb0
2 changed files with 31 additions and 3 deletions

View File

@@ -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);
}

View File

@@ -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);