@truedat/auth 4.44.1 → 4.44.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/package.json +4 -4
- package/src/groups/components/GroupsSearchLoader.js +23 -13
- package/src/groups/components/__tests__/GroupsSearchLoader.spec.js +7 -8
- package/src/groups/components/__tests__/__snapshots__/GroupsSearchLoader.spec.js.snap +1 -1
- package/src/roles/components/__tests__/RoleSelector.spec.js +5 -21
- package/src/roles/components/__tests__/__snapshots__/RoleSelector.spec.js.snap +50 -31
- package/src/users/components/UsersSearchLoader.js +23 -13
- package/src/users/components/__tests__/UserSelector.spec.js +5 -23
- package/src/users/components/__tests__/UsersSearchLoader.spec.js +4 -8
- package/src/users/components/__tests__/__snapshots__/UserSelector.spec.js.snap +42 -31
- package/src/users/components/__tests__/__snapshots__/UsersSearchLoader.spec.js.snap +1 -1
- package/src/users/selectors/filterUsers.js +2 -4
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truedat/auth",
|
|
3
|
-
"version": "4.44.
|
|
3
|
+
"version": "4.44.4",
|
|
4
4
|
"description": "Truedat Web Auth",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"jsnext:main": "src/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@testing-library/jest-dom": "^5.14.1",
|
|
35
35
|
"@testing-library/react": "^12.0.0",
|
|
36
36
|
"@testing-library/user-event": "^13.2.1",
|
|
37
|
-
"@truedat/test": "4.44.
|
|
37
|
+
"@truedat/test": "4.44.4",
|
|
38
38
|
"babel-jest": "^27.0.6",
|
|
39
39
|
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
40
40
|
"babel-plugin-lodash": "^3.3.4",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
]
|
|
85
85
|
},
|
|
86
86
|
"dependencies": {
|
|
87
|
-
"@truedat/core": "4.44.
|
|
87
|
+
"@truedat/core": "4.44.4",
|
|
88
88
|
"auth0-js": "^9.12.2",
|
|
89
89
|
"immutable": "^4.0.0-rc.12",
|
|
90
90
|
"jwt-decode": "^2.2.0",
|
|
@@ -106,5 +106,5 @@
|
|
|
106
106
|
"react-dom": ">= 16.8.6 < 17",
|
|
107
107
|
"semantic-ui-react": ">= 0.88.2 < 2.1"
|
|
108
108
|
},
|
|
109
|
-
"gitHead": "
|
|
109
|
+
"gitHead": "36fb183e1d22181e6a15b3bac2c01b39214eacdb"
|
|
110
110
|
}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import React, { useEffect, useCallback } from "react";
|
|
1
|
+
import React, { useEffect } from "react";
|
|
3
2
|
import PropTypes from "prop-types";
|
|
4
|
-
import {
|
|
3
|
+
import { connect } from "react-redux";
|
|
5
4
|
import { Dimmer, Loader } from "semantic-ui-react";
|
|
6
|
-
|
|
7
5
|
import { searchGroups, clearGroupsSearch } from "../routines";
|
|
8
6
|
|
|
9
|
-
export const GroupsSearchLoader = ({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export const GroupsSearchLoader = ({
|
|
8
|
+
query,
|
|
9
|
+
hideLoading,
|
|
10
|
+
searchGroups,
|
|
11
|
+
clearGroupsSearch,
|
|
12
|
+
loading,
|
|
13
|
+
}) => {
|
|
13
14
|
useEffect(() => {
|
|
14
|
-
|
|
15
|
+
searchGroups({ query });
|
|
15
16
|
return () => {
|
|
16
|
-
|
|
17
|
+
clearGroupsSearch();
|
|
17
18
|
};
|
|
18
|
-
}, [
|
|
19
|
+
}, [query, searchGroups, clearGroupsSearch]);
|
|
19
20
|
return loading && !hideLoading ? (
|
|
20
21
|
<Dimmer active inverted>
|
|
21
22
|
<Loader size="massive" inverted />
|
|
@@ -25,7 +26,16 @@ export const GroupsSearchLoader = ({ query, hideLoading }) => {
|
|
|
25
26
|
|
|
26
27
|
GroupsSearchLoader.propTypes = {
|
|
27
28
|
query: PropTypes.string,
|
|
28
|
-
hideLoading: PropTypes.bool
|
|
29
|
+
hideLoading: PropTypes.bool,
|
|
30
|
+
loading: PropTypes.bool,
|
|
31
|
+
searchGroups: PropTypes.func,
|
|
32
|
+
clearGroupsSearch: PropTypes.func,
|
|
29
33
|
};
|
|
30
34
|
|
|
31
|
-
export
|
|
35
|
+
export const mapStateToProps = ({ groupsSearchLoading }) => ({
|
|
36
|
+
loading: groupsSearchLoading,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export default connect(null, { searchGroups, clearGroupsSearch })(
|
|
40
|
+
GroupsSearchLoader
|
|
41
|
+
);
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { render } from "@truedat/test/render";
|
|
3
3
|
import GroupsSearchLoader from "../GroupsSearchLoader";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
...jest.requireActual("react-redux"),
|
|
7
|
-
useDispatch: jest.fn(),
|
|
8
|
-
useSelector: jest.fn(selector => selector({ groupsSearchLoading: false }))
|
|
9
|
-
}));
|
|
5
|
+
const renderOpts = { state: { groupsSearchLoading: false } };
|
|
10
6
|
|
|
11
7
|
describe("<GroupsSearchLoader />", () => {
|
|
12
8
|
it("matches the latest snapshot", () => {
|
|
13
|
-
const
|
|
14
|
-
|
|
9
|
+
const { container } = render(
|
|
10
|
+
<GroupsSearchLoader query="abc" />,
|
|
11
|
+
renderOpts
|
|
12
|
+
);
|
|
13
|
+
expect(container).toMatchSnapshot();
|
|
15
14
|
});
|
|
16
15
|
});
|
|
@@ -1,29 +1,13 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
3
|
-
import { shallow } from "enzyme";
|
|
4
|
-
import { createStore } from "redux";
|
|
5
|
-
import { Provider } from "react-redux";
|
|
2
|
+
import { render } from "@truedat/test/render";
|
|
6
3
|
import RoleSelector from "../RoleSelector";
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
...jest.requireActual("react-redux"),
|
|
10
|
-
useSelector: jest.fn(selector =>
|
|
11
|
-
selector({ roles: [{ name: "test1", id: 1 }] })
|
|
12
|
-
)
|
|
13
|
-
}));
|
|
14
|
-
|
|
15
|
-
// workaround for enzyme issue with React.useContext
|
|
16
|
-
// see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
|
|
17
|
-
jest.spyOn(React, "useContext").mockImplementation(() => intl);
|
|
5
|
+
const renderOpts = { state: { roles: [{ name: "test1", id: 1 }] } };
|
|
18
6
|
|
|
19
7
|
describe("<RoleSelector />", () => {
|
|
20
8
|
it("matches the latest snapshot", () => {
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
<RoleSelector />
|
|
25
|
-
</Provider>
|
|
26
|
-
);
|
|
27
|
-
expect(wrapper).toMatchSnapshot();
|
|
9
|
+
const props = { onChange: jest.fn() };
|
|
10
|
+
const { container } = render(<RoleSelector {...props} />, renderOpts);
|
|
11
|
+
expect(container).toMatchSnapshot();
|
|
28
12
|
});
|
|
29
13
|
});
|
|
@@ -1,35 +1,54 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`<RoleSelector /> matches the latest snapshot 1`] = `
|
|
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
|
-
|
|
4
|
+
<div>
|
|
5
|
+
<div
|
|
6
|
+
class="field"
|
|
7
|
+
>
|
|
8
|
+
<div
|
|
9
|
+
aria-expanded="false"
|
|
10
|
+
class="ui search selection dropdown"
|
|
11
|
+
role="combobox"
|
|
12
|
+
>
|
|
13
|
+
<input
|
|
14
|
+
aria-autocomplete="list"
|
|
15
|
+
autocomplete="off"
|
|
16
|
+
class="search"
|
|
17
|
+
tabindex="0"
|
|
18
|
+
type="text"
|
|
19
|
+
value=""
|
|
20
|
+
/>
|
|
21
|
+
<div
|
|
22
|
+
aria-atomic="true"
|
|
23
|
+
aria-live="polite"
|
|
24
|
+
class="divider default text"
|
|
25
|
+
role="alert"
|
|
26
|
+
>
|
|
27
|
+
Search Roles…
|
|
28
|
+
</div>
|
|
29
|
+
<i
|
|
30
|
+
aria-hidden="true"
|
|
31
|
+
class="dropdown icon"
|
|
32
|
+
/>
|
|
33
|
+
<div
|
|
34
|
+
class="menu transition"
|
|
35
|
+
role="listbox"
|
|
36
|
+
>
|
|
37
|
+
<div
|
|
38
|
+
aria-checked="false"
|
|
39
|
+
aria-selected="true"
|
|
40
|
+
class="selected item"
|
|
41
|
+
role="option"
|
|
42
|
+
style="pointer-events: all;"
|
|
43
|
+
>
|
|
44
|
+
<span
|
|
45
|
+
class="text"
|
|
46
|
+
>
|
|
47
|
+
test1
|
|
48
|
+
</span>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
35
54
|
`;
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import React, { useEffect, useCallback } from "react";
|
|
1
|
+
import React, { useEffect } from "react";
|
|
3
2
|
import PropTypes from "prop-types";
|
|
4
|
-
import {
|
|
3
|
+
import { connect } from "react-redux";
|
|
5
4
|
import { Dimmer, Loader } from "semantic-ui-react";
|
|
6
|
-
|
|
7
5
|
import { searchUsers, clearUsersSearch } from "../routines";
|
|
8
6
|
|
|
9
|
-
export const UsersSearchLoader = ({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export const UsersSearchLoader = ({
|
|
8
|
+
query,
|
|
9
|
+
hideLoading,
|
|
10
|
+
searchUsers,
|
|
11
|
+
clearUsersSearch,
|
|
12
|
+
loading,
|
|
13
|
+
}) => {
|
|
13
14
|
useEffect(() => {
|
|
14
|
-
|
|
15
|
+
searchUsers({ query });
|
|
15
16
|
return () => {
|
|
16
|
-
|
|
17
|
+
clearUsersSearch();
|
|
17
18
|
};
|
|
18
|
-
}, [
|
|
19
|
+
}, [searchUsers, clearUsersSearch, query]);
|
|
19
20
|
return loading && !hideLoading ? (
|
|
20
21
|
<Dimmer active inverted>
|
|
21
22
|
<Loader size="massive" inverted />
|
|
@@ -25,7 +26,16 @@ export const UsersSearchLoader = ({ query, hideLoading }) => {
|
|
|
25
26
|
|
|
26
27
|
UsersSearchLoader.propTypes = {
|
|
27
28
|
query: PropTypes.string,
|
|
28
|
-
hideLoading: PropTypes.bool
|
|
29
|
+
hideLoading: PropTypes.bool,
|
|
30
|
+
searchUsers: PropTypes.func,
|
|
31
|
+
clearUsersSearch: PropTypes.func,
|
|
32
|
+
loading: PropTypes.bool,
|
|
29
33
|
};
|
|
30
34
|
|
|
31
|
-
export
|
|
35
|
+
export const mapStateToProps = ({ usersSearchLoading: loading }) => ({
|
|
36
|
+
loading,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export default connect(mapStateToProps, { searchUsers, clearUsersSearch })(
|
|
40
|
+
UsersSearchLoader
|
|
41
|
+
);
|
|
@@ -1,31 +1,13 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
3
|
-
import { shallow } from "enzyme";
|
|
4
|
-
|
|
5
|
-
import { createStore } from "redux";
|
|
6
|
-
import { Provider } from "react-redux";
|
|
7
|
-
|
|
2
|
+
import { render } from "@truedat/test/render";
|
|
8
3
|
import UserSelector from "../UserSelector";
|
|
9
4
|
|
|
10
|
-
|
|
11
|
-
...jest.requireActual("react-redux"),
|
|
12
|
-
useSelector: jest.fn(selector =>
|
|
13
|
-
selector({ users: [{ full_name: "test1", id: 1 }] })
|
|
14
|
-
)
|
|
15
|
-
}));
|
|
16
|
-
|
|
17
|
-
// workaround for enzyme issue with React.useContext
|
|
18
|
-
// see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
|
|
19
|
-
jest.spyOn(React, "useContext").mockImplementation(() => intl);
|
|
5
|
+
const renderOpts = { users: [{ full_name: "test1", id: 1 }] };
|
|
20
6
|
|
|
21
7
|
describe("<UserSelector />", () => {
|
|
22
8
|
it("matches the latest snapshot", () => {
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
<UserSelector />
|
|
27
|
-
</Provider>
|
|
28
|
-
);
|
|
29
|
-
expect(wrapper).toMatchSnapshot();
|
|
9
|
+
const props = { onChange: jest.fn() };
|
|
10
|
+
const { container } = render(<UserSelector {...props} />, renderOpts);
|
|
11
|
+
expect(container).toMatchSnapshot();
|
|
30
12
|
});
|
|
31
13
|
});
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { render } from "@truedat/test/render";
|
|
3
3
|
import UsersSearchLoader from "../UsersSearchLoader";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
...jest.requireActual("react-redux"),
|
|
7
|
-
useDispatch: jest.fn(),
|
|
8
|
-
useSelector: jest.fn(selector => selector({ usersSearchLoading: false }))
|
|
9
|
-
}));
|
|
5
|
+
const renderOpts = { state: { usersSearchLoading: false } };
|
|
10
6
|
|
|
11
7
|
describe("<UsersSearchLoader />", () => {
|
|
12
8
|
it("matches the latest snapshot", () => {
|
|
13
|
-
const
|
|
14
|
-
expect(
|
|
9
|
+
const { container } = render(<UsersSearchLoader query="abc" />, renderOpts);
|
|
10
|
+
expect(container).toMatchSnapshot();
|
|
15
11
|
});
|
|
16
12
|
});
|
|
@@ -1,35 +1,46 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`<UserSelector /> matches the latest snapshot 1`] = `
|
|
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
|
-
|
|
4
|
+
<div>
|
|
5
|
+
<div
|
|
6
|
+
class="field"
|
|
7
|
+
>
|
|
8
|
+
<div
|
|
9
|
+
aria-expanded="false"
|
|
10
|
+
class="ui search selection dropdown"
|
|
11
|
+
role="combobox"
|
|
12
|
+
>
|
|
13
|
+
<input
|
|
14
|
+
aria-autocomplete="list"
|
|
15
|
+
autocomplete="off"
|
|
16
|
+
class="search"
|
|
17
|
+
tabindex="0"
|
|
18
|
+
type="text"
|
|
19
|
+
value=""
|
|
20
|
+
/>
|
|
21
|
+
<div
|
|
22
|
+
aria-atomic="true"
|
|
23
|
+
aria-live="polite"
|
|
24
|
+
class="divider default text"
|
|
25
|
+
role="alert"
|
|
26
|
+
>
|
|
27
|
+
Search users…
|
|
28
|
+
</div>
|
|
29
|
+
<i
|
|
30
|
+
aria-hidden="true"
|
|
31
|
+
class="dropdown icon"
|
|
32
|
+
/>
|
|
33
|
+
<div
|
|
34
|
+
class="menu transition"
|
|
35
|
+
role="listbox"
|
|
36
|
+
>
|
|
37
|
+
<div
|
|
38
|
+
class="message"
|
|
39
|
+
>
|
|
40
|
+
No results found.
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
35
46
|
`;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import _ from "lodash/fp";
|
|
2
|
-
import {
|
|
2
|
+
import { lowerDeburrTrim } from "@truedat/core/services/sort";
|
|
3
3
|
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
export const filterUsers = usersFilter =>
|
|
4
|
+
export const filterUsers = (usersFilter) =>
|
|
7
5
|
lowerDeburrTrim(usersFilter)
|
|
8
6
|
? _.filter(
|
|
9
7
|
_.flow(
|