@truedat/qx 7.4.0 → 7.4.1

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 (47) hide show
  1. package/package.json +4 -4
  2. package/src/api.js +3 -2
  3. package/src/components/qualityControls/EditQualityControl.js +9 -7
  4. package/src/components/qualityControls/NewDraftQualityControl.js +13 -8
  5. package/src/components/qualityControls/NewQualityControl.js +8 -6
  6. package/src/components/qualityControls/QualityBadge.js +85 -2
  7. package/src/components/qualityControls/QualityControlActions.js +53 -4
  8. package/src/components/qualityControls/QualityControlHeader.js +2 -2
  9. package/src/components/qualityControls/QualityControlHistory.js +6 -0
  10. package/src/components/qualityControls/QualityControlRoutes.js +3 -1
  11. package/src/components/qualityControls/QualityControlScores.js +4 -4
  12. package/src/components/qualityControls/QualityControls.js +4 -4
  13. package/src/components/qualityControls/QualityControlsTable.js +17 -4
  14. package/src/components/qualityControls/__tests__/EditQualityControl.spec.js +2 -2
  15. package/src/components/qualityControls/__tests__/NewDraftQualityControl.spec.js +3 -3
  16. package/src/components/qualityControls/__tests__/NewQualityControl.spec.js +2 -2
  17. package/src/components/qualityControls/__tests__/QualityBadge.spec.js +173 -2
  18. package/src/components/qualityControls/__tests__/QualityControlActions.spec.js +7 -2
  19. package/src/components/qualityControls/__tests__/QualityControlHeader.spec.js +7 -1
  20. package/src/components/qualityControls/__tests__/QualityControlRow.spec.js +1 -3
  21. package/src/components/qualityControls/__tests__/QualityControlScores.spec.js +1 -1
  22. package/src/components/qualityControls/__tests__/QualityControlTabs.spec.js +2 -2
  23. package/src/components/qualityControls/__tests__/QualityControls.spec.js +8 -8
  24. package/src/components/qualityControls/__tests__/QualityControlsTable.spec.js +4 -1
  25. package/src/components/qualityControls/__tests__/__fixtures__/qualityControlHelper.js +16 -11
  26. package/src/components/qualityControls/__tests__/__snapshots__/QualityBadge.spec.js.snap +32 -0
  27. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlActions.spec.js.snap +1 -3
  28. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHeader.spec.js.snap +13 -4
  29. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHistory.spec.js.snap +10 -2
  30. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlRow.spec.js.snap +20 -2
  31. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlScores.spec.js.snap +3 -3
  32. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlTabs.spec.js.snap +3 -3
  33. package/src/components/qualityControls/__tests__/__snapshots__/QualityControls.spec.js.snap +15 -1
  34. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlsTable.spec.js.snap +25 -2
  35. package/src/components/qualityControls/qualityByControlMode.js +24 -7
  36. package/src/components/qualityControls/qualityControlScoresColumns.js +11 -4
  37. package/src/components/scores/QualityBar.js +23 -1
  38. package/src/components/scores/ScoreCrumbs.js +4 -1
  39. package/src/components/scores/ScoreGroup.js +2 -2
  40. package/src/components/scores/__tests__/QualityBar.spec.js +1 -1
  41. package/src/components/scores/__tests__/Score.spec.js +2 -2
  42. package/src/components/scores/__tests__/ScoreGroup.spec.js +1 -1
  43. package/src/components/scores/__tests__/__fixtures__/scoreHelper.js +1 -0
  44. package/src/components/scores/__tests__/__snapshots__/Score.spec.js.snap +1 -1
  45. package/src/components/scores/__tests__/__snapshots__/ScoreCrumbs.spec.js.snap +1 -1
  46. package/src/components/scores/__tests__/__snapshots__/ScoreGroup.spec.js.snap +1 -1
  47. package/src/hooks/useQualityControls.js +8 -5
@@ -1,8 +1,9 @@
1
+ import _ from "lodash/fp";
1
2
  import React from "react";
2
3
  import { render } from "@truedat/test/render";
3
4
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
4
5
  import { scoreData } from "@truedat/qx/components/scores/__tests__/__fixtures__/scoreHelper";
5
- import QualityBadge from "../QualityBadge";
6
+ import QualityBadge, { QualityBadgeForSearch } from "../QualityBadge";
6
7
 
7
8
  const renderOpts = { messages };
8
9
 
@@ -21,10 +22,180 @@ describe("<QualityBadge />", () => {
21
22
  expect(queryByText(/Failed/i)).toBeInTheDocument();
22
23
  });
23
24
 
24
- it("show no results", () => {
25
+ it("show no executed", () => {
25
26
  const score = scoreData({ score_content: undefined });
26
27
  const { queryByText } = render(<QualityBadge score={score} />, renderOpts);
27
28
 
29
+ expect(queryByText(/Not executed/i)).toBeInTheDocument();
30
+ });
31
+
32
+ it("show no results", () => {
33
+ const score_content = {
34
+ total_count: 0,
35
+ validation_count: 50,
36
+ };
37
+
38
+ const score = scoreData({ score_content });
39
+ const { queryByText } = render(<QualityBadge score={score} />, renderOpts);
40
+
41
+ expect(queryByText(/No results/i)).toBeInTheDocument();
42
+ });
43
+ });
44
+
45
+ describe("<QualityBadgeForSearch />", () => {
46
+ it("matches the latest snapshot for percentage", () => {
47
+ const scoreCriteria = {
48
+ goal: 60,
49
+ maximum: 75,
50
+ };
51
+ const latestScore = {
52
+ executed_at: "2025-03-25T05:34:21.438113Z",
53
+ ratio_content: {
54
+ total_count: 100,
55
+ validation_count: 100,
56
+ },
57
+ result: 100,
58
+ result_message: "meets_goal",
59
+ status: "succeeded",
60
+ type: "ratio",
61
+ };
62
+
63
+ const { container } = render(
64
+ <QualityBadgeForSearch
65
+ controlMode={"percentage"}
66
+ criteria={scoreCriteria}
67
+ latestScore={latestScore}
68
+ />,
69
+ renderOpts
70
+ );
71
+
72
+ expect(container).toMatchSnapshot();
73
+ });
74
+
75
+ it("matches the latest snapshot for deviation", () => {
76
+ const scoreCriteria = {
77
+ goal: 78,
78
+ maximum: 90,
79
+ };
80
+ const latestScore = {
81
+ executed_at: "2025-03-25T05:34:21.438113Z",
82
+ ratio_content: {
83
+ total_count: 100,
84
+ validation_count: 5,
85
+ },
86
+ result: 100,
87
+ result_message: "under_goal",
88
+ status: "succeeded",
89
+ type: "ratio",
90
+ };
91
+
92
+ const { container } = render(
93
+ <QualityBadgeForSearch
94
+ controlMode={"deviation"}
95
+ criteria={scoreCriteria}
96
+ latestScore={latestScore}
97
+ />,
98
+ renderOpts
99
+ );
100
+
101
+ expect(container).toMatchSnapshot();
102
+ });
103
+
104
+ it("matches the latest snapshot for error_count", () => {
105
+ const scoreCriteria = {
106
+ goal: 78,
107
+ maximum: 90,
108
+ };
109
+ const latestScore = {
110
+ executed_at: "2025-03-25T05:34:21.438113Z",
111
+ error_count_content: {
112
+ error_count: 200,
113
+ },
114
+ result: 200,
115
+ result_message: "under_threshold",
116
+ status: "succeeded",
117
+ type: "error_count",
118
+ };
119
+
120
+ const { container } = render(
121
+ <QualityBadgeForSearch
122
+ controlMode={"error_count"}
123
+ criteria={scoreCriteria}
124
+ latestScore={latestScore}
125
+ />,
126
+ renderOpts
127
+ );
128
+
129
+ expect(container).toMatchSnapshot();
130
+ });
131
+
132
+ it("show status failed", () => {
133
+ const latestScore = {
134
+ result_message: null,
135
+ status: "failed",
136
+ };
137
+ const scoreCriteria = {
138
+ goal: 20,
139
+ minimum: 10,
140
+ };
141
+
142
+ const { queryByText } = render(
143
+ <QualityBadgeForSearch
144
+ controlMode={"percentage"}
145
+ criteria={scoreCriteria}
146
+ latestScore={latestScore}
147
+ />,
148
+ renderOpts
149
+ );
150
+
151
+ expect(queryByText(/Failed/i)).toBeInTheDocument();
152
+ });
153
+
154
+ it("show no executed", () => {
155
+ const scoreCriteria = {
156
+ goal: 78,
157
+ maximum: 90,
158
+ };
159
+ const latestScore = {
160
+ result_message: null,
161
+ };
162
+ const { container } = render(
163
+ <QualityBadgeForSearch
164
+ controlMode={"error_count"}
165
+ criteria={scoreCriteria}
166
+ latestScore={latestScore}
167
+ />,
168
+ renderOpts
169
+ );
170
+
171
+ expect(container).toMatchSnapshot();
172
+ });
173
+
174
+ it("show no results", () => {
175
+ const scoreCriteria = {
176
+ goal: 60,
177
+ maximum: 75,
178
+ };
179
+ const latestScore = {
180
+ executed_at: "2025-03-25T05:34:21.438113Z",
181
+ ratio_content: {
182
+ total_count: 0,
183
+ validation_count: 80,
184
+ },
185
+ result: null,
186
+ result_message: "no_results",
187
+ status: "succeeded",
188
+ type: "ratio",
189
+ };
190
+ const { queryByText } = render(
191
+ <QualityBadgeForSearch
192
+ controlMode={"percentage"}
193
+ criteria={scoreCriteria}
194
+ latestScore={latestScore}
195
+ />,
196
+ renderOpts
197
+ );
198
+
28
199
  expect(queryByText(/No results/i)).toBeInTheDocument();
29
200
  });
30
201
  });
@@ -37,6 +37,11 @@ jest.mock("@truedat/qx/hooks/useQualityControls", () => {
37
37
  isMutating: false,
38
38
  loading: false,
39
39
  })),
40
+ useQualityControlDelete: jest.fn(() => ({
41
+ trigger: jest.fn(() => Promise.resolve()),
42
+ data: qualityControlData(),
43
+ loading: false,
44
+ })),
40
45
  };
41
46
  });
42
47
 
@@ -159,11 +164,11 @@ describe("<QualityControlActions />", () => {
159
164
 
160
165
  expect(getByText(/Create Draft/i).closest("a")).toHaveAttribute(
161
166
  "href",
162
- `/qualityControls/${qualityControl.id}/new_draft`
167
+ `/qualityControls/${qualityControl.id}/version/${qualityControl.version}/new_draft`
163
168
  );
164
169
  expect(getByText(/Edit/i).closest("a")).toHaveAttribute(
165
170
  "href",
166
- `/qualityControls/${qualityControl.id}/edit`
171
+ `/qualityControls/${qualityControl.id}/version/${qualityControl.version}/edit`
167
172
  );
168
173
  });
169
174
 
@@ -7,7 +7,7 @@ import { qualityControlData } from "./__fixtures__/qualityControlHelper";
7
7
 
8
8
  jest.mock("react-router-dom", () => ({
9
9
  ...jest.requireActual("react-router-dom"),
10
- useParams: () => ({ id: "8" }),
10
+ useParams: () => ({ id: "8", version: "1" }),
11
11
  }));
12
12
 
13
13
  jest.mock("@truedat/qx/hooks/useQualityControls", () => {
@@ -26,6 +26,7 @@ jest.mock("@truedat/qx/hooks/useQualityControls", () => {
26
26
  "delete_score",
27
27
  "update_main",
28
28
  "execute",
29
+ "delete",
29
30
  ],
30
31
  },
31
32
  loading: false,
@@ -41,6 +42,11 @@ jest.mock("@truedat/qx/hooks/useQualityControls", () => {
41
42
  data: { ...qualityControlData(), status: "published" },
42
43
  loading: false,
43
44
  })),
45
+ useQualityControlDelete: jest.fn(() => ({
46
+ trigger: jest.fn(() => Promise.resolve()),
47
+ data: qualityControlData(),
48
+ loading: false,
49
+ })),
44
50
  };
45
51
  });
46
52
 
@@ -1,7 +1,5 @@
1
1
  import React from "react";
2
2
  import { render } from "@truedat/test/render";
3
- import { waitFor } from "@testing-library/react";
4
- import userEvent from "@testing-library/user-event";
5
3
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
6
4
  import { columns } from "../QualityControlsTable";
7
5
  import QualityControlRow from "../QualityControlRow";
@@ -68,7 +66,7 @@ describe("<QualityControlRow />", () => {
68
66
  renderOpts
69
67
  );
70
68
  const link = queryByText("test");
71
- expect(link).toHaveAttribute("href", "/qualityControls/8");
69
+ expect(link).toHaveAttribute("href", "/qualityControls/8/version/1");
72
70
  });
73
71
 
74
72
  it("renders empty table columns are empty", () => {
@@ -14,7 +14,7 @@ import { qualityControlData } from "./__fixtures__/qualityControlHelper";
14
14
 
15
15
  jest.mock("react-router-dom", () => ({
16
16
  ...jest.requireActual("react-router-dom"),
17
- useParams: () => ({ id: "8" }),
17
+ useParams: () => ({ id: "8", version: "1" }),
18
18
  }));
19
19
 
20
20
  jest.mock("@truedat/qx/hooks/useScores", () => {
@@ -5,8 +5,8 @@ import QualityControlTabs from "../QualityControlTabs";
5
5
 
6
6
  jest.mock("react-router-dom", () => ({
7
7
  ...jest.requireActual("react-router-dom"),
8
- useParams: () => ({ id: "8" }),
9
- useLocation: () => ({ pathname: "/qualityControls/8" }),
8
+ useParams: () => ({ id: "8", version: "1" }),
9
+ useLocation: () => ({ pathname: "/qualityControls/8/version/1" }),
10
10
  }));
11
11
 
12
12
  const renderOpts = { messages };
@@ -34,7 +34,7 @@ const searchProps = {
34
34
  searchMust: "",
35
35
  hiddenFilters: "",
36
36
  searchData: {
37
- data: [qualityControlData({ status: "published" })],
37
+ data: [qualityControlData({ id: 1, status: "published" })],
38
38
  actions: { execute: true },
39
39
  },
40
40
  defaultFilters: { status: "published" },
@@ -85,19 +85,19 @@ describe("<QualityControls />", () => {
85
85
  ).toBeEnabled();
86
86
 
87
87
  expect(
88
- container.querySelector("#row-checkbox-8").parentElement
88
+ container.querySelector("#row-checkbox-1").parentElement
89
89
  ).not.toHaveClass("checked");
90
90
 
91
91
  userEvent.click(container.querySelector("#selectQualityControl"));
92
92
 
93
93
  expect(
94
- container.querySelector("#row-checkbox-8").parentElement
94
+ container.querySelector("#row-checkbox-1").parentElement
95
95
  ).toHaveClass("checked");
96
96
 
97
- userEvent.click(container.querySelector("#row-checkbox-8"));
97
+ userEvent.click(container.querySelector("#row-checkbox-1"));
98
98
 
99
99
  expect(
100
- container.querySelector("#row-checkbox-8").parentElement
100
+ container.querySelector("#row-checkbox-1").parentElement
101
101
  ).not.toHaveClass("checked");
102
102
 
103
103
  userEvent.click(container.querySelector("#execute_checkbox"));
@@ -106,7 +106,7 @@ describe("<QualityControls />", () => {
106
106
  filter: "for_execution",
107
107
  });
108
108
 
109
- expect(container.querySelector("#row-checkbox-8")).not.toBeInTheDocument();
109
+ expect(container.querySelector("#row-checkbox-1")).not.toBeInTheDocument();
110
110
  });
111
111
 
112
112
  it("submit execution with search", async () => {
@@ -177,7 +177,7 @@ describe("<QualityControls />", () => {
177
177
  userEvent.click(container.querySelector("#selectQualityControl"));
178
178
 
179
179
  expect(
180
- container.querySelector("#row-checkbox-8").parentElement
180
+ container.querySelector("#row-checkbox-1").parentElement
181
181
  ).toHaveClass("checked");
182
182
 
183
183
  userEvent.click(getByRole("button", { name: /Execute quality control/i }));
@@ -195,7 +195,7 @@ describe("<QualityControls />", () => {
195
195
  df_type: "template1",
196
196
  dynamic_content: {},
197
197
  },
198
- ids: [13],
198
+ ids: [1],
199
199
  });
200
200
  });
201
201
  });
@@ -5,7 +5,10 @@ import SearchContext from "@truedat/core/search/SearchContext";
5
5
  import QualityControlsTable from "../QualityControlsTable";
6
6
  import { qualityControlData } from "./__fixtures__/qualityControlHelper";
7
7
 
8
- const data = [qualityControlData(), qualityControlData({ id: 9, name: "Foo" })];
8
+ const data = [
9
+ qualityControlData(),
10
+ qualityControlData({ id: 9, name: "Foo", quality_control_id: 9 }),
11
+ ];
9
12
 
10
13
  const searchProps = {
11
14
  sortColumn: "updated_at",
@@ -25,6 +25,7 @@ const qualityControl = {
25
25
  updated_at: "2024-11-28T12:14:57.004822Z",
26
26
  status: "draft",
27
27
  version: 1,
28
+ quality_control_id: 8,
28
29
  versions: [
29
30
  {
30
31
  name: "tests v1",
@@ -33,6 +34,7 @@ const qualityControl = {
33
34
  updated_at: "2024-11-28T17:03:22.037798Z",
34
35
  df_type: "template1",
35
36
  queries: null,
37
+ quality_control_id: 8,
36
38
  control_properties: {
37
39
  resource: {
38
40
  id: 11859650,
@@ -138,10 +140,7 @@ const qualityControl = {
138
140
  },
139
141
  },
140
142
  version_id: 1,
141
- score_criteria: {
142
- goal: 20,
143
- minimum: 10,
144
- },
143
+ score_criteria: { goal: 20, minimum: 10 },
145
144
  },
146
145
  {
147
146
  name: "test",
@@ -150,6 +149,7 @@ const qualityControl = {
150
149
  updated_at: "2024-11-28T17:03:22.040875Z",
151
150
  df_type: "template1",
152
151
  queries: null,
152
+ quality_control_id: 8,
153
153
  control_properties: {
154
154
  errors_resource: {
155
155
  id: 11859650,
@@ -164,10 +164,7 @@ const qualityControl = {
164
164
  },
165
165
  },
166
166
  version_id: 2,
167
- score_criteria: {
168
- maximum: 20,
169
- goal: 10,
170
- },
167
+ score_criteria: { maximum: 20, goal: 10 },
171
168
  },
172
169
  ],
173
170
  domain_ids: [2],
@@ -269,9 +266,17 @@ const qualityControl = {
269
266
  },
270
267
  },
271
268
  version_id: 13,
272
- score_criteria: {
273
- goal: 20,
274
- minimum: 10,
269
+ score_criteria: { goal: 20, minimum: 10 },
270
+ latest_score: {
271
+ executed_at: "2025-03-25T05:34:21.438113Z",
272
+ ratio_content: {
273
+ total_count: 100,
274
+ validation_count: 100,
275
+ },
276
+ result: 100,
277
+ result_message: "meets_goal",
278
+ status: "succeeded",
279
+ type: "ratio",
275
280
  },
276
281
  };
277
282
 
@@ -9,3 +9,35 @@ exports[`<QualityBadge /> matches the latest snapshot 1`] = `
9
9
  50%
10
10
  </div>
11
11
  `;
12
+
13
+ exports[`<QualityBadgeForSearch /> matches the latest snapshot for deviation 1`] = `
14
+ <div>
15
+ <i
16
+ aria-hidden="true"
17
+ class="yellow circle icon"
18
+ />
19
+ 100%
20
+ </div>
21
+ `;
22
+
23
+ exports[`<QualityBadgeForSearch /> matches the latest snapshot for error_count 1`] = `
24
+ <div>
25
+ <i
26
+ aria-hidden="true"
27
+ class="red circle icon"
28
+ />
29
+ 200
30
+ </div>
31
+ `;
32
+
33
+ exports[`<QualityBadgeForSearch /> matches the latest snapshot for percentage 1`] = `
34
+ <div>
35
+ <i
36
+ aria-hidden="true"
37
+ class="green circle icon"
38
+ />
39
+ 100%
40
+ </div>
41
+ `;
42
+
43
+ exports[`<QualityBadgeForSearch /> show no executed 1`] = `<div />`;
@@ -34,7 +34,6 @@ exports[`<QualityControlActions /> matches the latest snapshot with actions for
34
34
  >
35
35
  <div
36
36
  aria-checked="false"
37
- aria-disabled="false"
38
37
  aria-selected="true"
39
38
  class="selected item"
40
39
  role="option"
@@ -52,10 +51,9 @@ exports[`<QualityControlActions /> matches the latest snapshot with actions for
52
51
  </div>
53
52
  <a
54
53
  aria-checked="false"
55
- aria-disabled="false"
56
54
  aria-selected="false"
57
55
  class="item"
58
- href="/qualityControls/8/new_draft"
56
+ href="/qualityControls/8/version/1/new_draft"
59
57
  role="option"
60
58
  style="pointer-events: all;"
61
59
  >
@@ -112,7 +112,7 @@ exports[`<QualityControlHeader /> matches the latest snapshot with control quali
112
112
  aria-checked="false"
113
113
  aria-selected="false"
114
114
  class="item"
115
- href="/qualityControls/8/new_draft"
115
+ href="/qualityControls/8/version/1/new_draft"
116
116
  role="option"
117
117
  style="pointer-events: all;"
118
118
  >
@@ -135,6 +135,15 @@ exports[`<QualityControlHeader /> matches the latest snapshot with control quali
135
135
  />
136
136
  Disable
137
137
  </button>
138
+ <button
139
+ class="ui button"
140
+ >
141
+ <i
142
+ aria-hidden="true"
143
+ class="trash alternate outline icon"
144
+ />
145
+ quality_controls.actions.delete
146
+ </button>
138
147
  </div>
139
148
  </div>
140
149
  </div>
@@ -150,19 +159,19 @@ exports[`<QualityControlHeader /> matches the latest snapshot with control quali
150
159
  >
151
160
  <a
152
161
  class="item"
153
- href="/qualityControls/8"
162
+ href="/qualityControls/8/version/1"
154
163
  >
155
164
  Detail
156
165
  </a>
157
166
  <a
158
167
  class="item"
159
- href="/qualityControls/8/history"
168
+ href="/qualityControls/8/version/1/history"
160
169
  >
161
170
  History
162
171
  </a>
163
172
  <a
164
173
  class="item"
165
- href="/qualityControls/8/scores"
174
+ href="/qualityControls/8/version/1/scores"
166
175
  >
167
176
  Scores
168
177
  </a>
@@ -37,7 +37,11 @@ exports[`<QualityControlsHistory /> matches the latest snapshot 1`] = `
37
37
  <td
38
38
  class=""
39
39
  >
40
- tests v1
40
+ <a
41
+ href="/qualityControls/8/version/1"
42
+ >
43
+ tests v1
44
+ </a>
41
45
  </td>
42
46
  <td
43
47
  class=""
@@ -56,7 +60,11 @@ exports[`<QualityControlsHistory /> matches the latest snapshot 1`] = `
56
60
  <td
57
61
  class=""
58
62
  >
59
- test
63
+ <a
64
+ href="/qualityControls/8/version/2"
65
+ >
66
+ test
67
+ </a>
60
68
  </td>
61
69
  <td
62
70
  class=""
@@ -11,7 +11,7 @@ exports[`<QualityControlRow /> matches the latest snapshot 1`] = `
11
11
  class=""
12
12
  >
13
13
  <a
14
- href="/qualityControls/8"
14
+ href="/qualityControls/8/version/1"
15
15
  >
16
16
  test
17
17
  </a>
@@ -31,6 +31,15 @@ exports[`<QualityControlRow /> matches the latest snapshot 1`] = `
31
31
  >
32
32
  Draft
33
33
  </td>
34
+ <td
35
+ class=""
36
+ >
37
+ <i
38
+ aria-hidden="true"
39
+ class="green circle icon"
40
+ />
41
+ 100%
42
+ </td>
34
43
  <td
35
44
  class="center aligned"
36
45
  >
@@ -77,7 +86,7 @@ exports[`<QualityControlRow /> withCheck set to true 1`] = `
77
86
  class=""
78
87
  >
79
88
  <a
80
- href="/qualityControls/8"
89
+ href="/qualityControls/8/version/1"
81
90
  >
82
91
  test
83
92
  </a>
@@ -97,6 +106,15 @@ exports[`<QualityControlRow /> withCheck set to true 1`] = `
97
106
  >
98
107
  Draft
99
108
  </td>
109
+ <td
110
+ class=""
111
+ >
112
+ <i
113
+ aria-hidden="true"
114
+ class="green circle icon"
115
+ />
116
+ 100%
117
+ </td>
100
118
  <td
101
119
  class="center aligned"
102
120
  >
@@ -52,7 +52,7 @@ exports[`<QualityControlScores /> matches the latest snapshot 1`] = `
52
52
  >
53
53
  <a
54
54
  class="ui active ribbon label"
55
- href="/qualityControls/8/history"
55
+ href="/qualityControls/8/version/1/history"
56
56
  >
57
57
  Version: 1
58
58
  </a>
@@ -96,7 +96,7 @@ exports[`<QualityControlScores /> matches the latest snapshot 1`] = `
96
96
  <td
97
97
  class=""
98
98
  >
99
- Versioned
99
+ Published
100
100
  </td>
101
101
  <td
102
102
  class=""
@@ -149,7 +149,7 @@ exports[`<QualityControlScores /> matches the latest snapshot 1`] = `
149
149
  <td
150
150
  class=""
151
151
  >
152
- Versioned
152
+ Published
153
153
  </td>
154
154
  <td
155
155
  class=""
@@ -7,19 +7,19 @@ exports[`<QualityControlTabs /> matches the latest snapshot 1`] = `
7
7
  >
8
8
  <a
9
9
  class="active item"
10
- href="/qualityControls/8"
10
+ href="/qualityControls/8/version/1"
11
11
  >
12
12
  Detail
13
13
  </a>
14
14
  <a
15
15
  class="item"
16
- href="/qualityControls/8/history"
16
+ href="/qualityControls/8/version/1/history"
17
17
  >
18
18
  History
19
19
  </a>
20
20
  <a
21
21
  class="item"
22
- href="/qualityControls/8/scores"
22
+ href="/qualityControls/8/version/1/scores"
23
23
  >
24
24
  Scores
25
25
  </a>