mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-12 12:40:08 +08:00
66 lines
2.4 KiB
JavaScript
66 lines
2.4 KiB
JavaScript
import {mount} from 'enzyme';
|
|
import {ComponentRegistry, React} from 'nylas-exports';
|
|
import {Notification} from 'nylas-component-kit';
|
|
|
|
import NotifWrapper from '../lib/notif-wrapper';
|
|
|
|
const stubNotif = (priority) => {
|
|
return class extends React.Component {
|
|
static displayName = `NotifPriority${priority}`;
|
|
static containerRequired = false;
|
|
render() { return <Notification priority={`${priority}`} title={`Priority ${priority}`} /> }
|
|
}
|
|
};
|
|
|
|
const checkHighestPriority = (expectedPriority, wrapper) => {
|
|
const visibleElems = wrapper.find(".highest-priority")
|
|
expect(visibleElems.isEmpty()).toEqual(false);
|
|
const titleElem = visibleElems.first().find('.title');
|
|
expect(titleElem.isEmpty()).toEqual(false);
|
|
expect(titleElem.text().trim()).toEqual(`Priority ${expectedPriority}`);
|
|
// Make sure there's only one highest-priority elem
|
|
expect(visibleElems.get(1)).toEqual(undefined);
|
|
}
|
|
|
|
describe("NotifPriority", function notifPriorityTests() {
|
|
beforeEach(() => {
|
|
this.wrapper = mount(<NotifWrapper />)
|
|
this.trigger = () => {
|
|
ComponentRegistry.trigger();
|
|
this.wrapper.get(0).update();
|
|
}
|
|
})
|
|
describe("When there is only one notification", () => {
|
|
beforeEach(() => {
|
|
ComponentRegistry._clear();
|
|
ComponentRegistry.register(stubNotif(5), {role: 'RootSidebar:Notifications'})
|
|
this.trigger();
|
|
})
|
|
it("should mark it as highest-priority", () => {
|
|
checkHighestPriority(5, this.wrapper);
|
|
})
|
|
})
|
|
describe("when there are multiple notifications", () => {
|
|
beforeEach(() => {
|
|
this.components = [stubNotif(5), stubNotif(7), stubNotif(3), stubNotif(2)]
|
|
ComponentRegistry._clear();
|
|
this.components.forEach((item) => {
|
|
ComponentRegistry.register(item, {role: 'RootSidebar:Notifications'})
|
|
})
|
|
this.trigger();
|
|
})
|
|
it("should mark the proper one as highest-priority", () => {
|
|
checkHighestPriority(7, this.wrapper);
|
|
})
|
|
it("properly updates when a highest-priority notification is removed", () => {
|
|
ComponentRegistry.unregister(this.components[1])
|
|
this.trigger();
|
|
checkHighestPriority(5, this.wrapper);
|
|
})
|
|
it("properly updates when a higher priority notifcation is added", () => {
|
|
ComponentRegistry.register(stubNotif(10), {role: 'RootSidebar:Notifications'});
|
|
this.trigger();
|
|
checkHighestPriority(10, this.wrapper);
|
|
})
|
|
})
|
|
});
|