Merge branch '21128-toolbar-context-menu'
[arvados-workbench2.git] / src / views-components / search-bar / search-bar-view.test.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import React from "react";
6 import { mount, configure } from "enzyme";
7 import Adapter from 'enzyme-adapter-react-16';
8
9
10 configure({ adapter: new Adapter() });
11
12 describe("<SearchBarView />", () => {
13
14     jest.useFakeTimers();
15
16     let onSearch: () => void;
17
18     beforeEach(() => {
19         onSearch = jest.fn();
20     });
21
22     describe("on input value change", () => {
23         // TODO fix tests and delete beneath one
24         it("fix tests", () => {
25             const test = 1;
26             expect(test).toBe(1);
27         });
28         // it("calls onSearch after default timeout", () => {
29         //     const searchBar = mount(<SearchBarView onSearch={onSearch} value="current value" {...mockSearchProps()} />);
30         //     searchBar.find("input").simulate("change", { target: { value: "current value" } });
31         //     expect(onSearch).not.toBeCalled();
32         //     jest.runTimersToTime(DEFAULT_SEARCH_DEBOUNCE);
33         //     expect(onSearch).toBeCalledWith("current value");
34         // });
35
36         // it("calls onSearch after the time specified in props has passed", () => {
37         //     const searchBar = mount(<SearchBarView onSearch={onSearch} value="current value" debounce={2000} {...mockSearchProps()} />);
38         //     searchBar.find("input").simulate("change", { target: { value: "current value" } });
39         //     jest.runTimersToTime(1000);
40         //     expect(onSearch).not.toBeCalled();
41         //     jest.runTimersToTime(1000);
42         //     expect(onSearch).toBeCalledWith("current value");
43         // });
44
45         // it("calls onSearch only once after no change happened during the specified time", () => {
46         //     const searchBar = mount(<SearchBarView onSearch={onSearch} value="current value" debounce={1000} {...mockSearchProps()} />);
47         //     searchBar.find("input").simulate("change", { target: { value: "current value" } });
48         //     jest.runTimersToTime(500);
49         //     searchBar.find("input").simulate("change", { target: { value: "changed value" } });
50         //     jest.runTimersToTime(1000);
51         //     expect(onSearch).toHaveBeenCalledTimes(1);
52         // });
53
54         // it("calls onSearch again after the specified time has passed since previous call", () => {
55         //     const searchBar = mount(<SearchBarView onSearch={onSearch} value="latest value" debounce={1000} {...mockSearchProps()} />);
56         //     searchBar.find("input").simulate("change", { target: { value: "current value" } });
57         //     jest.runTimersToTime(500);
58         //     searchBar.find("input").simulate("change", { target: { value: "intermediate value" } });
59         //     jest.runTimersToTime(1000);
60         //     expect(onSearch).toBeCalledWith("intermediate value");
61         //     searchBar.find("input").simulate("change", { target: { value: "latest value" } });
62         //     jest.runTimersToTime(1000);
63         //     expect(onSearch).toBeCalledWith("latest value");
64         //     expect(onSearch).toHaveBeenCalledTimes(2);
65
66         // });
67     });
68 });
69
70 const mockSearchProps = () => ({
71     currentView: '',
72     open: true,
73     onSetView: jest.fn(),
74     openView: jest.fn(),
75     loseView: jest.fn(),
76     closeView: jest.fn(),
77     saveRecentQuery: jest.fn(),
78     loadRecentQueries: () => ['test'],
79     saveQuery: jest.fn(),
80     deleteSavedQuery: jest.fn(),
81     openSearchView: jest.fn(),
82     editSavedQuery: jest.fn(),
83     navigateTo: jest.fn(),
84     searchDataOnEnter: jest.fn()
85 });