v-tree-vue
Version:
A light-weight library for management of hierachical content. Most solutions I found did not offer the depth of flexibility I needed with the tree. I decided to solve my problem and also give back to the Vue community. Feel free to log issues, I will jump
48 lines (38 loc) • 1.61 kB
text/typescript
import { TreeViewItem } from "../contracts/types";
import { eventHub, eventManager } from "./explorerEventPublisher";
const itemCheckeckedCallBack = (items: TreeViewItem[]) => {};
const callBacks = {
itemCheckeckedCallBack,
}
describe("eventPublisher", () => {
it("should notify subscribers of all items checked of a type", () => {
const expectedCheckedItem: TreeViewItem = {
id: '1',
name: 'Test',
type: '.doc',
};
const subscriberCallBack = jest.spyOn(callBacks, "itemCheckeckedCallBack");
eventManager.subscribeToItemChecked('.doc', callBacks.itemCheckeckedCallBack);
eventHub.onItemChecked(expectedCheckedItem)
expect(subscriberCallBack).toBeCalledWith([expectedCheckedItem]);
});
it("onItemChecked() should add item to selectedItems collection", () => {
const expectedSelectedItem: TreeViewItem = {
id: '1',
name: 'Test',
type: 'test'
}
eventHub.onItemChecked(expectedSelectedItem);
expect(eventHub.selectedItems.pop()).toBe(expectedSelectedItem);
});
it("onItemUnchecked() should remove item from selectedItems collection", () => {
const expectedSelectedItem: TreeViewItem = {
id: '1',
name: 'Test',
type: 'test'
}
eventHub.selectedItems.push(expectedSelectedItem);
eventHub.onItemUnChecked(expectedSelectedItem);
expect(eventHub.selectedItems.indexOf(expectedSelectedItem)).toBe(-1);
});
});