fix(reviews): restore modal detail review gating

This commit is contained in:
2026-05-19 12:22:52 +08:00
parent 04b0ca061b
commit fd17fc127d
9 changed files with 456 additions and 71 deletions
+23 -4
View File
@@ -7,9 +7,9 @@ import type { App, ReviewTags } from "@/global/typedefinition";
vi.mock("@/components/ReviewsPanel.vue", () => ({
default: {
name: "ReviewsPanel",
props: ["appKey", "tags", "loggedIn"],
props: ["appKey", "tags", "loggedIn", "canSubmit"],
template:
'<div data-testid="reviews-panel" :data-app-key="appKey" :data-origin="tags.origin" :data-version="tags.version"></div>',
'<div data-testid="reviews-panel" :data-app-key="appKey" :data-origin="tags.origin" :data-version="tags.version" :data-can-submit="String(canSubmit)"></div>',
},
}));
@@ -118,8 +118,8 @@ describe("AppDetailPage", () => {
props: {
app: mergedApp,
screenshots: [],
sparkInstalled: false,
apmInstalled: false,
sparkInstalled: true,
apmInstalled: true,
loggedIn: true,
reviewAppKey: "spark:amd64-store:office:wps",
reviewTags: sparkTags,
@@ -150,4 +150,23 @@ describe("AppDetailPage", () => {
"1.0.0",
);
});
it("marks reviews read-only when the selected origin is not installed", () => {
render(AppDetailPage, {
props: {
app,
screenshots: [],
sparkInstalled: false,
apmInstalled: false,
loggedIn: true,
reviewAppKey: "apm:amd64-apm:office:wps",
reviewTags: sparkTags,
},
});
expect(screen.getByTestId("reviews-panel")).toHaveAttribute(
"data-can-submit",
"false",
);
});
});