@truedat/dd 8.12.1 → 8.12.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.
Files changed (82) hide show
  1. package/package.json +3 -3
  2. package/src/api/__tests__/queries.spec.js +55 -0
  3. package/src/api/queries.js +31 -0
  4. package/src/components/Grant.js +106 -16
  5. package/src/components/GrantRequest.js +2 -2
  6. package/src/components/GrantRequestBulkApprovalPopup.js +0 -1
  7. package/src/components/GrantRequestTemplateForm.js +76 -0
  8. package/src/components/GrantsDownloadButton.js +9 -1
  9. package/src/components/GrantsTable.js +4 -1
  10. package/src/components/StructureFields.js +7 -4
  11. package/src/components/StructureGrantCartCheckout.js +122 -59
  12. package/src/components/StructureGrantCartInformation.js +38 -9
  13. package/src/components/StructureGrantCartUserSelector.js +29 -4
  14. package/src/components/StructureGrantDropdown.js +7 -1
  15. package/src/components/StructureGrants.js +4 -1
  16. package/src/components/StructuresUpdateOption.js +2 -2
  17. package/src/components/SystemStructures.js +3 -3
  18. package/src/components/__tests__/CatalogViewConfigForm.spec.js +2 -0
  19. package/src/components/__tests__/EditDomainForm.spec.js +3 -1
  20. package/src/components/__tests__/Grant.spec.js +171 -0
  21. package/src/components/__tests__/GrantApprovalRuleForm.spec.js +2 -0
  22. package/src/components/__tests__/GrantApprovalRuleNew.spec.js +8 -0
  23. package/src/components/__tests__/GrantApprovalRules.spec.js +4 -0
  24. package/src/components/__tests__/GrantRequest.spec.js +4 -4
  25. package/src/components/__tests__/GrantRequestBulkActions.spec.js +1 -4
  26. package/src/components/__tests__/GrantRequestsSearchResults.spec.js +2 -0
  27. package/src/components/__tests__/GrantsDownloadButton.spec.js +58 -2
  28. package/src/components/__tests__/GrantsTable.spec.js +22 -2
  29. package/src/components/__tests__/LineageDefs.spec.js +6 -1
  30. package/src/components/__tests__/LineageForm.spec.js +1 -0
  31. package/src/components/__tests__/LineageGraphToolbar.spec.js +19 -17
  32. package/src/components/__tests__/LineageInspectorPanel.spec.js +17 -9
  33. package/src/components/__tests__/ProfileGroup.spec.js +7 -1
  34. package/src/components/__tests__/ReferenceDatasetForm.spec.js +2 -0
  35. package/src/components/__tests__/ReferenceDatasetRoutes.spec.js +9 -0
  36. package/src/components/__tests__/StructureGrantCartCheckout.grouping.spec.js +95 -0
  37. package/src/components/__tests__/StructureGrantCartCheckout.selection.spec.js +416 -0
  38. package/src/components/__tests__/StructureGrantCartCheckout.spec.js +216 -4
  39. package/src/components/__tests__/StructureGrantCartInformation.spec.js +5 -2
  40. package/src/components/__tests__/StructureGrantCartUserSelector.spec.js +128 -0
  41. package/src/components/__tests__/StructureGrantDropdown.spec.js +92 -0
  42. package/src/components/__tests__/StructureGrantListButton.spec.js +70 -0
  43. package/src/components/__tests__/StructureGrantSummaryButton.spec.js +36 -1
  44. package/src/components/__tests__/StructureGrants.spec.js +12 -0
  45. package/src/components/__tests__/StructureRelationRow.spec.js +72 -4
  46. package/src/components/__tests__/StructureRelations.spec.js +18 -0
  47. package/src/components/__tests__/StructureRoles.spec.js +9 -0
  48. package/src/components/__tests__/StructureRow.spec.js +13 -4
  49. package/src/components/__tests__/StructureSelector.spec.js +2 -0
  50. package/src/components/__tests__/StructureTag.spec.js +2 -0
  51. package/src/components/__tests__/StructureTagForm.spec.js +2 -0
  52. package/src/components/__tests__/StructureType.spec.js +3 -1
  53. package/src/components/__tests__/StructureTypeForm.spec.js +3 -1
  54. package/src/components/__tests__/StructureView.spec.js +17 -1
  55. package/src/components/__tests__/StructuresGrantRequestView.spec.js +2 -0
  56. package/src/components/__tests__/StructuresView.spec.js +2 -1
  57. package/src/components/__tests__/Tag.spec.js +4 -1
  58. package/src/components/__tests__/Tags.spec.js +7 -1
  59. package/src/components/__tests__/__snapshots__/GrantsTable.spec.js.snap +34 -2
  60. package/src/components/__tests__/__snapshots__/LineageDefs.spec.js.snap +32 -30
  61. package/src/components/__tests__/__snapshots__/StructureFields.spec.js.snap +1 -16
  62. package/src/components/__tests__/__snapshots__/StructureGrantCartCheckout.spec.js.snap +217 -1
  63. package/src/components/__tests__/__snapshots__/StructureGrantCartInformation.spec.js.snap +54 -0
  64. package/src/components/__tests__/__snapshots__/StructureRelationRow.spec.js.snap +23 -19
  65. package/src/components/__tests__/__snapshots__/StructureRow.spec.js.snap +28 -24
  66. package/src/components/__tests__/__snapshots__/StructuresUpdateOption.spec.js.snap +7 -3
  67. package/src/messages/en.js +2 -2
  68. package/src/messages/es.js +2 -2
  69. package/src/reducers/__tests__/grantRequestsCart.spec.js +86 -0
  70. package/src/reducers/__tests__/structureRelations.spec.js +28 -0
  71. package/src/reducers/grantRequestsCart.js +20 -2
  72. package/src/selectors/__tests__/__snapshots__/getGrantsColumns.spec.js.snap +1 -9
  73. package/src/selectors/__tests__/getGrantRequestsSearchColumns.spec.js +11 -4
  74. package/src/selectors/__tests__/getGrantsColumns.spec.js +295 -0
  75. package/src/selectors/getBusinessConceptsLinksToStructuresColumnsSelector.js +3 -5
  76. package/src/selectors/getGrantRequestsSearchColumns.js +3 -5
  77. package/src/selectors/getGrantsColumns.js +85 -11
  78. package/src/selectors/getLinkedImplementationsToStructuresColumns.js +3 -7
  79. package/src/selectors/getStructureFieldColumns.js +7 -6
  80. package/src/selectors/getStructureProperties.js +2 -5
  81. package/src/selectors/getStructuresUploadEventColumns.js +2 -7
  82. package/src/selectors/structureColumnsSelector.js +13 -16
@@ -1,7 +1,12 @@
1
1
  import { waitFor } from "@testing-library/react";
2
2
  import userEvent from "@testing-library/user-event";
3
3
  import { render, waitForLoad } from "@truedat/test/render";
4
- import { LATEST_GRANT_REQUEST_BY_DS_QUERY } from "../../api/queries";
4
+ import {
5
+ buildDSVQuery,
6
+ DATA_STRUCTURE_VERSION_GRANTS_QUERY,
7
+ LEGACY_DATA_STRUCTURE_VERSION_QUERY,
8
+ LATEST_GRANT_REQUEST_BY_DS_QUERY,
9
+ } from "../../api/queries";
5
10
  import StructureGrantSummaryButton from "../StructureGrantSummaryButton";
6
11
  import { createGrantRequestStatus } from "../../routines";
7
12
  import en from "../../messages/en";
@@ -209,4 +214,34 @@ describe("<StructureGrantSummaryButton />", () => {
209
214
  ).toHaveLength(0);
210
215
  });
211
216
  });
217
+
218
+ it("requests user group fields in data structure version grants query", () => {
219
+ const query = DATA_STRUCTURE_VERSION_GRANTS_QUERY.loc.source.body;
220
+ expect(query).toMatch(/user_group_id|userGroupId/);
221
+ expect(query).toMatch(/user_group|userGroup/);
222
+ expect(query).toMatch(/source_group_name|sourceGroupName/);
223
+ expect(query).toMatch(/\balias\b/);
224
+ expect(query).toMatch(/\bname\b/);
225
+ });
226
+
227
+ it("requests user group fields in legacy data structure version query grant", () => {
228
+ const query = LEGACY_DATA_STRUCTURE_VERSION_QUERY.loc.source.body;
229
+ expect(query).toMatch(/user_group_id|userGroupId/);
230
+ expect(query).toMatch(/user_group|userGroup/);
231
+ expect(query).toMatch(/source_group_name|sourceGroupName/);
232
+ });
233
+
234
+ it("requests user group fields in data structure version query grant", () => {
235
+ const query = buildDSVQuery(false).loc.source.body;
236
+ expect(query).toMatch(/user_group_id|userGroupId/);
237
+ expect(query).toMatch(/user_group|userGroup/);
238
+ expect(query).toMatch(/source_group_name|sourceGroupName/);
239
+ });
240
+ });
241
+
242
+ describe("data structure version grants query current user group member", () => {
243
+ it("requests current user group member in data structure version grants query", () => {
244
+ const query = DATA_STRUCTURE_VERSION_GRANTS_QUERY.loc.source.body;
245
+ expect(query).toMatch(/current_user_group_member|currentUserGroupMember/);
246
+ });
212
247
  });
@@ -93,4 +93,16 @@ describe("<StructureGrants />", () => {
93
93
  const { container } = render(<StructureGrants {...props} />);
94
94
  expect(container).toMatchSnapshot();
95
95
  });
96
+
97
+ it("shows User / Group header for the user column", () => {
98
+ const rendered = render(<StructureGrants {...props} />, {
99
+ messages: {
100
+ en: {
101
+ "grant.header.user": "User",
102
+ "grants.props.user_or_group": "User / Group",
103
+ },
104
+ },
105
+ });
106
+ expect(rendered.getByText(/user \/ group/i)).toBeInTheDocument();
107
+ });
96
108
  });
@@ -3,6 +3,16 @@ import { waitFor } from "@testing-library/react";
3
3
  import { render, waitForLoad } from "@truedat/test/render";
4
4
  import _ from "lodash/fp";
5
5
  import { StructureRelationRow } from "../StructureRelationRow";
6
+ import { linksDecorator } from "../../selectors/getStructureFieldColumns";
7
+
8
+ const renderRow = (props) =>
9
+ render(
10
+ <table>
11
+ <tbody>
12
+ <StructureRelationRow {...props} />
13
+ </tbody>
14
+ </table>,
15
+ );
6
16
 
7
17
  describe("<StructureRelationRow />", () => {
8
18
  const structure = { id: 1, name: "Structure 1", type: "Some Type 1" };
@@ -35,7 +45,7 @@ describe("<StructureRelationRow />", () => {
35
45
 
36
46
  it("matches the latest snapshot", async () => {
37
47
  const props = { relation, columns };
38
- const rendered = render(<StructureRelationRow {...props} />);
48
+ const rendered = renderRow(props);
39
49
  await waitForLoad(rendered);
40
50
  expect(rendered.container).toMatchSnapshot();
41
51
  });
@@ -43,7 +53,7 @@ describe("<StructureRelationRow />", () => {
43
53
  it("clicking the row will pass the relation to onClick()", async () => {
44
54
  const onClick = jest.fn();
45
55
  const props = { relation, columns, onClick };
46
- const rendered = render(<StructureRelationRow {...props} />);
56
+ const rendered = renderRow(props);
47
57
  await waitForLoad(rendered);
48
58
  const user = userEvent.setup({ delay: null });
49
59
 
@@ -58,7 +68,7 @@ describe("<StructureRelationRow />", () => {
58
68
  const value = _.path("structure.name")(relation);
59
69
  const onClick = jest.fn();
60
70
  const props = { relation, columns: [_.head(columns)], onClick };
61
- const rendered = render(<StructureRelationRow {...props} />);
71
+ const rendered = renderRow(props);
62
72
  await waitForLoad(rendered);
63
73
 
64
74
  expect(rendered.container.querySelector("td")).toHaveTextContent(value);
@@ -71,11 +81,69 @@ describe("<StructureRelationRow />", () => {
71
81
  _.set("fieldDecorator", fieldDecorator),
72
82
  )(columns);
73
83
  const props = { relation, columns: [column] };
74
- const rendered = render(<StructureRelationRow {...props} />);
84
+ const rendered = renderRow(props);
75
85
  await waitForLoad(rendered);
76
86
 
77
87
  expect(rendered.container.querySelector("td")).toHaveTextContent(
78
88
  "used_by_decorated",
79
89
  );
80
90
  });
91
+
92
+ it("row prints concept links", async () => {
93
+ const relation = {
94
+ id: 1,
95
+ relation_type,
96
+ structure,
97
+ links: [
98
+ { name: "foo concept", resource_id: "1" },
99
+ { name: "bar concept", resource_id: "2" },
100
+ ],
101
+ };
102
+ const props = {
103
+ relation,
104
+ columns: [{ name: "links", fieldDecorator: linksDecorator }],
105
+ };
106
+ const rendered = render(<StructureRelationRow {...props} />);
107
+ await waitForLoad(rendered);
108
+
109
+ expect(rendered.getByText(/foo concept/i)).toBeInTheDocument();
110
+ expect(rendered.getByText(/bar concept/i)).toBeInTheDocument();
111
+ expect(rendered.getAllByRole("link")).toHaveLength(2);
112
+ });
113
+
114
+ it("row skips empty or invalid concept links", async () => {
115
+ const relation = {
116
+ id: 1,
117
+ relation_type,
118
+ structure,
119
+ links: [null, {}, { name: "foo concept", resource_id: "1" }],
120
+ };
121
+ const props = {
122
+ relation,
123
+ columns: [{ name: "links", fieldDecorator: linksDecorator }],
124
+ };
125
+ const rendered = render(<StructureRelationRow {...props} />);
126
+ await waitForLoad(rendered);
127
+
128
+ expect(rendered.getByText(/foo concept/i)).toBeInTheDocument();
129
+ expect(rendered.getAllByRole("link")).toHaveLength(1);
130
+ });
131
+
132
+ it("row prints nothing when concept links are missing", async () => {
133
+ const relation = {
134
+ id: 1,
135
+ relation_type,
136
+ structure,
137
+ links: [],
138
+ };
139
+ const props = {
140
+ relation,
141
+ columns: [{ name: "links", fieldDecorator: linksDecorator }],
142
+ };
143
+ const rendered = render(<StructureRelationRow {...props} />);
144
+ await waitForLoad(rendered);
145
+
146
+ expect(rendered.queryByRole("link")).not.toBeInTheDocument();
147
+ expect(rendered.container.querySelector("td")).toBeEmptyDOMElement();
148
+ });
81
149
  });
@@ -64,4 +64,22 @@ describe("<StructureRelations />", () => {
64
64
  relations.length,
65
65
  );
66
66
  });
67
+
68
+ it("renders concept links column header", async () => {
69
+ const relations = [
70
+ {
71
+ id: 1,
72
+ relation_type,
73
+ structure: { id: 1, name: "foo structure", type: "foo" },
74
+ links: [{ name: "foo concept", resource_id: "1" }],
75
+ },
76
+ ];
77
+ const columnsWithLinks = [...columns, { name: "links" }];
78
+ const rendered = render(
79
+ <StructureRelations relations={relations} columns={columnsWithLinks} />,
80
+ );
81
+ await waitForLoad(rendered);
82
+
83
+ expect(rendered.getByText(/structure.relation.links/i)).toBeInTheDocument();
84
+ });
67
85
  });
@@ -1,6 +1,15 @@
1
1
  import { render, waitForLoad } from "@truedat/test/render";
2
2
  import StructureRoles from "../StructureRoles";
3
3
 
4
+ jest.mock("@truedat/core/hooks/useAclEntries", () => ({
5
+ ...jest.requireActual("@truedat/core/hooks/useAclEntries"),
6
+ useAclEntries: () => ({
7
+ data: { aclEntries: [], actions: { canCreate: false } },
8
+ loading: false,
9
+ mutate: jest.fn(),
10
+ }),
11
+ }));
12
+
4
13
  jest.mock("react-router", () => ({
5
14
  ...jest.requireActual("react-router"),
6
15
  useParams: jest.fn().mockReturnValue({ id: "1" }),
@@ -4,6 +4,15 @@ import { render, waitForLoad } from "@truedat/test/render";
4
4
  import _ from "lodash/fp";
5
5
  import { StructureRow } from "../StructureRow";
6
6
 
7
+ const renderRow = (props) =>
8
+ render(
9
+ <table>
10
+ <tbody>
11
+ <StructureRow {...props} />
12
+ </tbody>
13
+ </table>,
14
+ );
15
+
7
16
  describe("<StructureRow />", () => {
8
17
  const structure = {
9
18
  id: 1,
@@ -22,7 +31,7 @@ describe("<StructureRow />", () => {
22
31
 
23
32
  it("matches the latest snapshot", async () => {
24
33
  const props = { structure, columns };
25
- const rendered = render(<StructureRow {...props} />);
34
+ const rendered = renderRow(props);
26
35
  await waitForLoad(rendered);
27
36
  expect(rendered.container).toMatchSnapshot();
28
37
  });
@@ -30,7 +39,7 @@ describe("<StructureRow />", () => {
30
39
  it("clicking the row will pass the structure to onClick()", async () => {
31
40
  const onClick = jest.fn();
32
41
  const props = { structure, columns, onClick };
33
- const rendered = render(<StructureRow {...props} />);
42
+ const rendered = renderRow(props);
34
43
  await waitForLoad(rendered);
35
44
  const user = userEvent.setup({ delay: null });
36
45
 
@@ -56,7 +65,7 @@ describe("<StructureRow />", () => {
56
65
  },
57
66
  ];
58
67
  const props = { structure: testStructure, columns: testColumns };
59
- const rendered = render(<StructureRow {...props} />);
68
+ const rendered = renderRow(props);
60
69
  await waitForLoad(rendered);
61
70
 
62
71
  expect(rendered.container.querySelector("td")).toHaveTextContent(testValue);
@@ -71,7 +80,7 @@ describe("<StructureRow />", () => {
71
80
  };
72
81
  const testColumns = [{ name: "testObject", fieldDecorator }];
73
82
  const props = { structure: testStructure, columns: testColumns };
74
- const rendered = render(<StructureRow {...props} />);
83
+ const rendered = renderRow(props);
75
84
  await waitForLoad(rendered);
76
85
 
77
86
  const decoratedValue = fieldDecorator(testValue);
@@ -1,6 +1,8 @@
1
1
  import { render, waitForLoad } from "@truedat/test/render";
2
2
  import { StructureSelector } from "../StructureSelector";
3
3
 
4
+ jest.mock("@truedat/core/hooks/useUserFilters");
5
+
4
6
  const data = {
5
7
  _actions: { bulkUpdate: {} },
6
8
  data: [
@@ -4,6 +4,8 @@ import userEvent from "@testing-library/user-event";
4
4
  import { StructureTag } from "../StructureTag";
5
5
 
6
6
  describe("<StructureTag />", () => {
7
+ beforeEach(() => jest.useRealTimers());
8
+
7
9
  const tagName = "Tag 42";
8
10
  const structureTag = {
9
11
  id: "1",
@@ -4,6 +4,8 @@ import { render, waitForLoad } from "@truedat/test/render";
4
4
  import { StructureTagForm } from "../StructureTagForm";
5
5
 
6
6
  describe("<StructureTagForm />", () => {
7
+ beforeEach(() => jest.useRealTimers());
8
+
7
9
  const tags = [
8
10
  { id: "1", name: "Tag1", description: "desc1" },
9
11
  { id: "2", name: "Tag2", description: "desc2" },
@@ -1,3 +1,4 @@
1
+ import { act } from "@testing-library/react";
1
2
  import { render } from "@truedat/test/render";
2
3
  import StructureType from "../StructureType";
3
4
 
@@ -17,8 +18,9 @@ const renderOpts = {
17
18
  };
18
19
 
19
20
  describe("<StructureType />", () => {
20
- it("matches the latest snapshot", () => {
21
+ it("matches the latest snapshot", async () => {
21
22
  const { container } = render(<StructureType />, renderOpts);
23
+ await act(async () => {});
22
24
  expect(container).toMatchSnapshot();
23
25
  });
24
26
  });
@@ -1,3 +1,4 @@
1
+ import { act } from "@testing-library/react";
1
2
  import { render } from "@truedat/test/render";
2
3
  import StructureTypeForm from "../StructureTypeForm";
3
4
 
@@ -39,8 +40,9 @@ const renderOpts = {
39
40
  };
40
41
 
41
42
  describe("<StructureTypeForm />", () => {
42
- it("matches the latest snapshot", () => {
43
+ it("matches the latest snapshot", async () => {
43
44
  const { container } = render(<StructureTypeForm />, renderOpts);
45
+ await act(async () => {});
44
46
  expect(container).toMatchSnapshot();
45
47
  });
46
48
  });
@@ -1,7 +1,12 @@
1
1
  import { render } from "@truedat/test/render";
2
2
  import { waitFor } from "@testing-library/react";
3
+ import { STRUCTURE_TAGS_QUERY } from "../../api/queries";
3
4
  import StructureView from "../StructureView";
4
5
 
6
+ jest.mock("../../hooks/useBucketStructures", () => ({
7
+ useBucketStructures: () => ({ data: undefined, isLoading: true }),
8
+ }));
9
+
5
10
  jest.mock("react-router", () => ({
6
11
  ...jest.requireActual("react-router"),
7
12
  useParams: () => ({ id: 1 }),
@@ -33,6 +38,14 @@ const commonState = {
33
38
  };
34
39
 
35
40
  describe("<StructureView />", () => {
41
+ const structureTagsMock = {
42
+ request: { query: STRUCTURE_TAGS_QUERY, variables: { id: 1 } },
43
+ result: {
44
+ data: {
45
+ dataStructure: { id: 1, availableTags: [], structureTags: [] },
46
+ },
47
+ },
48
+ };
36
49
  it("Some inner component shows the structure name", () => {
37
50
  const renderOpts = {
38
51
  state: {
@@ -48,7 +61,10 @@ describe("<StructureView />", () => {
48
61
  },
49
62
  };
50
63
 
51
- const { getAllByText } = render(<StructureView />, renderOpts);
64
+ const { getAllByText } = render(<StructureView />, {
65
+ ...renderOpts,
66
+ mocks: [structureTagsMock],
67
+ });
52
68
  expect(getAllByText("some_db")[0]).toBeInTheDocument();
53
69
  });
54
70
 
@@ -6,6 +6,8 @@ import { functionsMock } from "@truedat/test/mocks";
6
6
  import { StructuresGrantRequestView } from "../StructuresGrantRequestView";
7
7
  import en from "../../messages/en";
8
8
 
9
+ jest.mock("@truedat/core/hooks/useUserFilters");
10
+
9
11
  const mockHistory = jest.fn();
10
12
 
11
13
  jest.mock("react-router", () => ({
@@ -1,10 +1,11 @@
1
- import _ from "lodash/fp";
2
1
  import { within } from "@testing-library/react";
3
2
  import { render, waitForLoad } from "@truedat/test/render";
4
3
  import SearchContext from "@truedat/core/search/SearchContext";
5
4
  import StructuresView from "../StructuresView";
6
5
  import { StructuresViewContent } from "../StructuresView";
7
6
 
7
+ jest.mock("@truedat/core/hooks/useUserFilters");
8
+
8
9
  const mockHistory = jest.fn();
9
10
 
10
11
  jest.mock("react-router", () => ({
@@ -1,10 +1,13 @@
1
1
  import { render } from "@truedat/test/render";
2
+ import { domainsMock } from "@truedat/test/mocks";
2
3
  import Tag from "../Tag";
3
4
 
4
5
  describe("<Tag />", () => {
5
6
  it("matches the latest snapshot", () => {
6
7
  const createTag = jest.fn();
7
- const { container } = render(<Tag createTag={createTag} />);
8
+ const { container } = render(<Tag createTag={createTag} />, {
9
+ mocks: [domainsMock({ action: "manageTags" })],
10
+ });
8
11
  expect(container).toMatchSnapshot();
9
12
  });
10
13
  });
@@ -1,9 +1,15 @@
1
1
  import { render } from "@truedat/test/render";
2
+ import { TAGS_QUERY } from "../../api/queries";
2
3
  import Tags from "../Tags";
3
4
 
5
+ const tagsMock = {
6
+ request: { query: TAGS_QUERY },
7
+ result: { data: { tags: [] } },
8
+ };
9
+
4
10
  describe("<Tags />", () => {
5
11
  it("matches the latest snapshot", () => {
6
- const { container } = render(<Tags />);
12
+ const { container } = render(<Tags />, { mocks: [tagsMock] });
7
13
  expect(container).toMatchSnapshot();
8
14
  });
9
15
  });
@@ -41,7 +41,23 @@ exports[`<GrantsTable /> matches the latest snapshot 1`] = `
41
41
  >
42
42
  <td
43
43
  class=""
44
- />
44
+ >
45
+ <h4
46
+ class="ui header"
47
+ >
48
+ <div
49
+ class="content"
50
+ >
51
+ user_full_name_1
52
+
53
+ <div
54
+ class="sub header"
55
+ >
56
+ user1@example.com
57
+ </div>
58
+ </div>
59
+ </h4>
60
+ </td>
45
61
  <td
46
62
  class=""
47
63
  >
@@ -92,7 +108,23 @@ exports[`<GrantsTable /> matches the latest snapshot 1`] = `
92
108
  >
93
109
  <td
94
110
  class=""
95
- />
111
+ >
112
+ <h4
113
+ class="ui header"
114
+ >
115
+ <div
116
+ class="content"
117
+ >
118
+ user_full_name_2
119
+
120
+ <div
121
+ class="sub header"
122
+ >
123
+ user2@example.com
124
+ </div>
125
+ </div>
126
+ </h4>
127
+ </td>
96
128
  <td
97
129
  class=""
98
130
  >
@@ -2,35 +2,37 @@
2
2
 
3
3
  exports[`<LineageDefs /> matches the latest snapshot 1`] = `
4
4
  <div>
5
- <defs>
6
- <marker
7
- id="end"
8
- markerheight="6"
9
- markerwidth="6"
10
- orient="auto"
11
- refx="10"
12
- refy="0"
13
- viewbox="0 -5 10 10"
14
- >
15
- <path
16
- d="M0,-5L10,0L0,5L0,-5"
17
- fill="#999"
18
- />
19
- </marker>
20
- <marker
21
- id="end-active"
22
- markerheight="6"
23
- markerwidth="6"
24
- orient="auto"
25
- refx="10"
26
- refy="0"
27
- viewbox="0 -5 10 10"
28
- >
29
- <path
30
- d="M0,-5L10,0L0,5L0,-5"
31
- fill="orangered"
32
- />
33
- </marker>
34
- </defs>
5
+ <svg>
6
+ <defs>
7
+ <marker
8
+ id="end"
9
+ markerHeight="6"
10
+ markerWidth="6"
11
+ orient="auto"
12
+ refX="10"
13
+ refY="0"
14
+ viewBox="0 -5 10 10"
15
+ >
16
+ <path
17
+ d="M0,-5L10,0L0,5L0,-5"
18
+ fill="#999"
19
+ />
20
+ </marker>
21
+ <marker
22
+ id="end-active"
23
+ markerHeight="6"
24
+ markerWidth="6"
25
+ orient="auto"
26
+ refX="10"
27
+ refY="0"
28
+ viewBox="0 -5 10 10"
29
+ >
30
+ <path
31
+ d="M0,-5L10,0L0,5L0,-5"
32
+ fill="orangered"
33
+ />
34
+ </marker>
35
+ </defs>
36
+ </svg>
35
37
  </div>
36
38
  `;
@@ -142,22 +142,7 @@ exports[`<StructureFields /> matches the latest snapshot 1`] = `
142
142
  </td>
143
143
  <td
144
144
  class=""
145
- >
146
- <div
147
- class="ui list"
148
- role="list"
149
- >
150
- <div
151
- class="item"
152
- role="listitem"
153
- >
154
- <a
155
- data-discover="true"
156
- href="/concepts/123/versions/current"
157
- />
158
- </div>
159
- </div>
160
- </td>
145
+ />
161
146
  </tr>
162
147
  <tr
163
148
  class=""