@truedat/df 8.5.8 → 8.6.0

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.
@@ -0,0 +1,105 @@
1
+ import { useQuery } from "@apollo/client";
2
+ import { render } from "@truedat/test/render";
3
+ import { GROUP_PREVIEW_QUERY } from "../../../api/queries";
4
+ import { GroupPreview, GroupPreviewLoader } from "../GroupPreview";
5
+
6
+ jest.mock("@apollo/client", () => {
7
+ const originalModule = jest.requireActual("@apollo/client");
8
+
9
+ return {
10
+ __esModule: true,
11
+ ...originalModule,
12
+ useQuery: jest.fn(),
13
+ };
14
+ });
15
+
16
+ describe("<GroupPreview />", () => {
17
+ beforeEach(() => {
18
+ jest.clearAllMocks();
19
+ });
20
+
21
+ it("renders group values with an icon instead of the prefix", () => {
22
+ const rendered = render(
23
+ <GroupPreview groups={[{ id: 123, name: "group:Group Alias" }]} />
24
+ );
25
+
26
+ expect(rendered.container.textContent).toBe("Group Alias");
27
+ expect(rendered.container.querySelector(".group.icon")).toBeInTheDocument();
28
+ expect(
29
+ rendered.getByRole("link", { name: /group alias/i })
30
+ ).toHaveAttribute("href", "/groups/123");
31
+ });
32
+
33
+ it("does not render user values", () => {
34
+ const rendered = render(
35
+ <GroupPreview
36
+ groups={["user:John Doe", { id: 123, name: "group:Group Alias" }]}
37
+ />
38
+ );
39
+
40
+ expect(rendered.container.textContent).toBe("Group Alias");
41
+ expect(
42
+ rendered.container.querySelector(".user.icon")
43
+ ).not.toBeInTheDocument();
44
+ expect(rendered.container.querySelector(".group.icon")).toBeInTheDocument();
45
+ });
46
+
47
+ it("renders string groups without a link when there is no group id", () => {
48
+ const rendered = render(
49
+ <GroupPreview groups={["group:Standalone Group"]} />
50
+ );
51
+
52
+ expect(rendered.container.textContent).toBe("Standalone Group");
53
+ expect(rendered.container.querySelector(".group.icon")).toBeInTheDocument();
54
+ expect(
55
+ rendered.queryByRole("link", { name: /standalone group/i })
56
+ ).not.toBeInTheDocument();
57
+ });
58
+
59
+ it("renders nothing when the loader query returns an error", () => {
60
+ useQuery.mockReturnValue({
61
+ loading: false,
62
+ error: new Error("boom"),
63
+ data: undefined,
64
+ });
65
+
66
+ const rendered = render(<GroupPreviewLoader groupId="123" />);
67
+
68
+ expect(useQuery).toHaveBeenCalledWith(GROUP_PREVIEW_QUERY, {
69
+ variables: { ids: ["123"] },
70
+ });
71
+ expect(rendered.container.firstChild).toBeNull();
72
+ });
73
+
74
+ it("renders a loading label while the group preview is loading", () => {
75
+ useQuery.mockReturnValue({
76
+ loading: true,
77
+ error: undefined,
78
+ data: undefined,
79
+ });
80
+
81
+ const rendered = render(<GroupPreviewLoader groupId={["123"]} />);
82
+
83
+ expect(useQuery).toHaveBeenCalledWith(GROUP_PREVIEW_QUERY, {
84
+ variables: { ids: ["123"] },
85
+ });
86
+ expect(rendered.getByText(/\.\.\./i)).toBeInTheDocument();
87
+ });
88
+
89
+ it("renders the fetched group preview when loading finishes", () => {
90
+ useQuery.mockReturnValue({
91
+ loading: false,
92
+ error: undefined,
93
+ data: {
94
+ groupDetails: [{ id: 123, name: "group:Group Alias" }],
95
+ },
96
+ });
97
+
98
+ const rendered = render(<GroupPreviewLoader groupId="123" />);
99
+
100
+ expect(
101
+ rendered.getByRole("link", { name: /group alias/i })
102
+ ).toHaveAttribute("href", "/groups/123");
103
+ expect(rendered.container.querySelector(".group.icon")).toBeInTheDocument();
104
+ });
105
+ });
@@ -0,0 +1,98 @@
1
+ import { useQuery } from "@apollo/client";
2
+ import { render } from "@truedat/test/render";
3
+ import { USER_GROUP_PREVIEW_QUERY } from "../../../api/queries";
4
+ import { UserGroupPreview, UserGroupPreviewLoader } from "../UserGroupPreview";
5
+
6
+ jest.mock("@apollo/client", () => {
7
+ const originalModule = jest.requireActual("@apollo/client");
8
+
9
+ return {
10
+ __esModule: true,
11
+ ...originalModule,
12
+ useQuery: jest.fn(),
13
+ };
14
+ });
15
+
16
+ describe("<UserGroupPreview />", () => {
17
+ beforeEach(() => {
18
+ jest.clearAllMocks();
19
+ });
20
+
21
+ it("renders users and groups with icons instead of prefixes", () => {
22
+ const rendered = render(
23
+ <UserGroupPreview userGroups={["user:John Doe", "group:Group Alias"]} />,
24
+ );
25
+
26
+ expect(rendered.container.textContent).toBe("John DoeGroup Alias");
27
+ expect(rendered.container.querySelector(".user.icon")).toBeInTheDocument();
28
+ expect(rendered.container.querySelector(".group.icon")).toBeInTheDocument();
29
+ });
30
+
31
+ it("links group values and renders user values without a link", () => {
32
+ const rendered = render(
33
+ <UserGroupPreview
34
+ userGroups={[
35
+ { name: "user:John Doe" },
36
+ { id: 123, name: "group:Group Alias" },
37
+ ]}
38
+ />,
39
+ );
40
+
41
+ expect(rendered.getByText(/john doe/i).closest("a")).toBeNull();
42
+ expect(rendered.getByRole("link", { name: /group alias/i })).toHaveAttribute(
43
+ "href",
44
+ "/groups/123",
45
+ );
46
+ });
47
+
48
+ it("renders nothing when the loader query returns an error", () => {
49
+ useQuery.mockReturnValue({
50
+ loading: false,
51
+ error: new Error("boom"),
52
+ data: undefined,
53
+ });
54
+
55
+ const rendered = render(<UserGroupPreviewLoader userGroupId="123" />);
56
+
57
+ expect(useQuery).toHaveBeenCalledWith(USER_GROUP_PREVIEW_QUERY, {
58
+ variables: { ids: ["123"] },
59
+ });
60
+ expect(rendered.container.firstChild).toBeNull();
61
+ });
62
+
63
+ it("renders a loading label while the user group preview is loading", () => {
64
+ useQuery.mockReturnValue({
65
+ loading: true,
66
+ error: undefined,
67
+ data: undefined,
68
+ });
69
+
70
+ const rendered = render(<UserGroupPreviewLoader userGroupId={["123"]} />);
71
+
72
+ expect(useQuery).toHaveBeenCalledWith(USER_GROUP_PREVIEW_QUERY, {
73
+ variables: { ids: ["123"] },
74
+ });
75
+ expect(rendered.getByText(/\.\.\./i)).toBeInTheDocument();
76
+ });
77
+
78
+ it("renders the fetched user groups when loading finishes", () => {
79
+ useQuery.mockReturnValue({
80
+ loading: false,
81
+ error: undefined,
82
+ data: {
83
+ userGroupDetails: [
84
+ { name: "user:John Doe" },
85
+ { id: 123, name: "group:Group Alias" },
86
+ ],
87
+ },
88
+ });
89
+
90
+ const rendered = render(<UserGroupPreviewLoader userGroupId="123" />);
91
+
92
+ expect(rendered.getByText(/john doe/i).closest("a")).toBeNull();
93
+ expect(rendered.getByRole("link", { name: /group alias/i })).toHaveAttribute(
94
+ "href",
95
+ "/groups/123",
96
+ );
97
+ });
98
+ });
@@ -87,6 +87,7 @@ export default {
87
87
  "template.field.type.system": "System",
88
88
  "template.field.type.table": "Table",
89
89
  "template.field.type.url": "Url",
90
+ "template.field.type.group": "Group",
90
91
  "template.field.type.user_group": "User or Group",
91
92
  "template.field.type.user": "User",
92
93
  "template.field.type": "Type",
@@ -87,6 +87,7 @@ export default {
87
87
  "template.field.type.system": "Sistema",
88
88
  "template.field.type.table": "Tabla",
89
89
  "template.field.type.url": "Enlace",
90
+ "template.field.type.group": "Grupo",
90
91
  "template.field.type.user_group": "Usuario o Grupo",
91
92
  "template.field.type.user": "Usuario",
92
93
  "template.field.type": "Tipo",