Skip to content

Commit c7a044b

Browse files
authored
Merge pull request #3215 from OpenNeuroOrg/no-validation-pending
fix(app): Display pending validation when schema validator is running
2 parents 6c4cb2b + 31ad0bb commit c7a044b

File tree

2 files changed

+55
-7
lines changed

2 files changed

+55
-7
lines changed

packages/openneuro-app/src/scripts/dataset/components/ValidationBlock.tsx

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ export const ValidationBlock: React.FC<ValidationBlockProps> = ({
3939
</div>
4040
)
4141
} else {
42-
// Reconstruct DatasetIssues from JSON
43-
const datasetIssues = new DatasetIssues()
4442
// If data exists, populate this. Otherwise we show pending.
4543
if (validation?.issues) {
44+
// Reconstruct DatasetIssues from JSON
45+
const datasetIssues = new DatasetIssues()
4646
datasetIssues.issues = validation.issues
4747
datasetIssues.codeMessages = validation.codeMessages.reduce(
4848
(acc, curr) => {
@@ -51,11 +51,17 @@ export const ValidationBlock: React.FC<ValidationBlockProps> = ({
5151
},
5252
new Map<string, string>(),
5353
)
54+
return (
55+
<div className="validation-accordion">
56+
<Validation issues={datasetIssues} />
57+
</div>
58+
)
59+
} else {
60+
return (
61+
<div className="validation-accordion">
62+
<Validation issues={null} />
63+
</div>
64+
)
5465
}
55-
return (
56-
<div className="validation-accordion">
57-
<Validation issues={datasetIssues} />
58-
</div>
59-
)
6066
}
6167
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import React from "react"
2+
import { render, screen } from "@testing-library/react"
3+
import { ValidationBlock } from "../ValidationBlock"
4+
import { vi } from "vitest"
5+
6+
vi.mock("../../../config.ts")
7+
8+
describe("ValidationBlock component", () => {
9+
it("renders legacy validation if issues prop is present", () => {
10+
const issues = [
11+
{},
12+
]
13+
render(<ValidationBlock datasetId="ds000031" issues={issues} />)
14+
expect(screen.getByText("BIDS Validation")).toBeInTheDocument()
15+
})
16+
it("renders schema validation if validation prop is present", () => {
17+
const validation = {
18+
issues: [
19+
{
20+
code: "JSON_KEY_RECOMMENDED",
21+
location: "/dataset_description.json",
22+
rule: "rules.dataset_metadata.dataset_description",
23+
subCode: "DatasetType",
24+
},
25+
],
26+
codeMessages: [
27+
{ code: "JSON_KEY_RECOMMENDED", message: "message" },
28+
],
29+
}
30+
render(
31+
<ValidationBlock
32+
datasetId="ds000031"
33+
validation={validation}
34+
/>,
35+
)
36+
expect(screen.getByText("BIDS Validation")).toBeInTheDocument()
37+
})
38+
it("renders pending validation if neither issues nor validation props are present", () => {
39+
render(<ValidationBlock datasetId="ds000031" />)
40+
expect(screen.getByText("Validation Pending")).toBeInTheDocument()
41+
})
42+
})

0 commit comments

Comments
 (0)