@netdata/netdata-ui
Version:
netdata UI kit
155 lines (154 loc) • 5.08 kB
JavaScript
var _testUtilities = require("testUtilities");
var _useFocusedState = require("./use-focused-state");
describe("useFocusedState", function () {
it("returns initial focused state as false by default", function () {
var _renderHook = (0, _testUtilities.renderHook)(function () {
return (0, _useFocusedState.useFocusedState)({});
}),
result = _renderHook.result;
var _result$current = result.current,
focused = _result$current[0];
expect(focused).toBe(false);
});
it("returns custom default state", function () {
var _renderHook2 = (0, _testUtilities.renderHook)(function () {
return (0, _useFocusedState.useFocusedState)({
defaultState: true
});
}),
result = _renderHook2.result;
var _result$current2 = result.current,
focused = _result$current2[0];
expect(focused).toBe(true);
});
it("updates focused state on focus", function () {
var _renderHook3 = (0, _testUtilities.renderHook)(function () {
return (0, _useFocusedState.useFocusedState)({});
}),
result = _renderHook3.result;
var _result$current3 = result.current,
handleFocus = _result$current3[1];
(0, _testUtilities.act)(function () {
handleFocus({
type: "focus"
});
});
expect(result.current[0]).toBe(true);
});
it("updates focused state on blur", function () {
var _renderHook4 = (0, _testUtilities.renderHook)(function () {
return (0, _useFocusedState.useFocusedState)({
defaultState: true
});
}),
result = _renderHook4.result;
var _result$current4 = result.current,
handleBlur = _result$current4[2];
(0, _testUtilities.act)(function () {
handleBlur({
type: "blur"
});
});
expect(result.current[0]).toBe(false);
});
it("calls onFocus callback when provided", function () {
var onFocus = jest.fn();
var _renderHook5 = (0, _testUtilities.renderHook)(function () {
return (0, _useFocusedState.useFocusedState)({
onFocus: onFocus
});
}),
result = _renderHook5.result;
var _result$current5 = result.current,
handleFocus = _result$current5[1];
var mockEvent = {
type: "focus"
};
(0, _testUtilities.act)(function () {
handleFocus(mockEvent);
});
expect(onFocus).toHaveBeenCalledWith(mockEvent);
});
it("calls onBlur callback when provided", function () {
var onBlur = jest.fn();
var _renderHook6 = (0, _testUtilities.renderHook)(function () {
return (0, _useFocusedState.useFocusedState)({
onBlur: onBlur
});
}),
result = _renderHook6.result;
var _result$current6 = result.current,
handleBlur = _result$current6[2];
var mockEvent = {
type: "blur"
};
(0, _testUtilities.act)(function () {
handleBlur(mockEvent);
});
expect(onBlur).toHaveBeenCalledWith(mockEvent);
});
it("does not trigger focus when already focused", function () {
var onFocus = jest.fn();
var _renderHook7 = (0, _testUtilities.renderHook)(function () {
return (0, _useFocusedState.useFocusedState)({
onFocus: onFocus,
defaultState: true
});
}),
result = _renderHook7.result;
var _result$current7 = result.current,
handleFocus = _result$current7[1];
(0, _testUtilities.act)(function () {
handleFocus({
type: "focus"
});
});
expect(result.current[0]).toBe(true);
expect(onFocus).toHaveBeenCalledTimes(1);
});
it("maintains stable function references", function () {
var _renderHook8 = (0, _testUtilities.renderHook)(function () {
return (0, _useFocusedState.useFocusedState)({});
}),
result = _renderHook8.result,
rerender = _renderHook8.rerender;
var _result$current8 = result.current,
initialHandleFocus = _result$current8[1],
initialHandleBlur = _result$current8[2];
rerender();
var _result$current9 = result.current,
newHandleFocus = _result$current9[1],
newHandleBlur = _result$current9[2];
expect(newHandleFocus).toBe(initialHandleFocus);
expect(newHandleBlur).toBe(initialHandleBlur);
});
it("updates callbacks when dependencies change", function () {
var onFocus = jest.fn();
var _renderHook9 = (0, _testUtilities.renderHook)(function (_ref) {
var onFocus = _ref.onFocus;
return (0, _useFocusedState.useFocusedState)({
onFocus: onFocus
});
}, {
initialProps: {
onFocus: onFocus
}
}),
result = _renderHook9.result,
rerender = _renderHook9.rerender;
var newOnFocus = jest.fn();
rerender({
onFocus: newOnFocus
});
var _result$current10 = result.current,
handleFocus = _result$current10[1];
(0, _testUtilities.act)(function () {
handleFocus({
type: "focus"
});
});
expect(onFocus).not.toHaveBeenCalled();
expect(newOnFocus).toHaveBeenCalledTimes(1);
});
});
;