-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathtest_utils.jsx
102 lines (97 loc) · 2.38 KB
/
test_utils.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/* Utils for tests. */
import React from "react";
import ReactDOM from "react-dom";
import { render } from "@testing-library/react";
import { Router } from "react-router";
import { Provider } from "react-redux";
import { configureAppStoreAndHistory } from "../src/store/configureStore";
import * as notificationsActions from "../src/actions/notifications";
import { createMemoryHistory } from "history";
import { Route } from "react-router-dom";
export function createComponent(
ui,
{
initialState,
route = "/",
path = "/",
initialHistory = createMemoryHistory({ initialEntries: [route] }),
} = {}
) {
const { store, history } = configureAppStoreAndHistory(
initialState,
initialHistory
);
const domContainer = document.createElement("div");
ReactDOM.render(
<Provider store={store}>
<Router history={history}>
<Route path={path}>{ui}</Route>
</Router>
</Provider>,
domContainer
);
return domContainer.children.length == 0 ? null : domContainer;
}
export function mockNotifyError() {
return vi
.spyOn(notificationsActions, "notifyError")
.mockImplementation((...args) => {
return args;
});
}
export function sessionFactory(props) {
return {
busy: false,
authenticating: false,
auth: {
authType: "basicauth",
server: "asdasd",
credentials: {
username: "user",
password: "123",
},
},
authenticated: true,
permissions: [],
buckets: [],
serverInfo: {
url: "",
project_name: "foo",
project_docs: "foo",
capabilities: {},
user: {
id: "user1",
principals: [`/buckets/main-workspace/groups/my-collection-reviewers`],
},
},
...props,
redirectURL: "",
};
}
export function renderWithProvider(
ui,
{
initialState,
route = "/",
path = "/",
initialHistory = createMemoryHistory({ initialEntries: [route] }),
} = {}
) {
const { store, history } = configureAppStoreAndHistory(
initialState,
initialHistory
);
const Wrapper = ({ children }) => (
<Provider store={store}>
<Router history={history}>
<Route path={path}>{children}</Route>
</Router>
</Provider>
);
return {
...render(ui, { wrapper: Wrapper }),
store,
rerender: updatedComponent =>
render(updatedComponent, { container: document.body, wrapper: Wrapper }),
};
}