diff --git a/src/app/questions-list/[slug]/question-detail-client.test.tsx b/src/app/questions-list/[slug]/question-detail-client.test.tsx
index b51bcde..7594eac 100644
--- a/src/app/questions-list/[slug]/question-detail-client.test.tsx
+++ b/src/app/questions-list/[slug]/question-detail-client.test.tsx
@@ -402,4 +402,105 @@ describe("QuestionDetailClient Validation", () => {
expect(screen.getByRole("status")).toBeDefined();
expect(document.querySelector(".shimmer-bg")).toBeNull();
});
+
+ it("never renders TestIntroPage for normal profile sections", () => {
+ const normalSectionItem = {
+ slug: "personal_identity",
+ title: "مشخصات فردی و هویتی",
+ questions: [
+ {
+ id: "first_name",
+ title: "نام",
+ type: "text",
+ order: 1,
+ required: true,
+ isVisible: true,
+ private: false,
+ description: "",
+ tooltip: "",
+ extras: {},
+ options: [],
+ },
+ ],
+ };
+ (convertOverviewToFrontendItems as any).mockReturnValue([
+ {
+ slug: "personal_identity",
+ title: "مشخصات فردی و هویتی",
+ questions: [],
+ },
+ ]);
+ (useFormSectionQuery as any).mockReturnValue({
+ data: {
+ section: { cards: [] },
+ answers: {},
+ section_progress: { completion_percent: 0 },
+ },
+ isLoading: false,
+ });
+ (mapBackendSectionToFrontend as any).mockReturnValue(normalSectionItem);
+
+ const queryClient = new QueryClient({
+ defaultOptions: { queries: { retry: false } },
+ });
+
+ render(
+
+
+ ,
+ );
+
+ // Question input is rendered directly
+ expect(screen.getByText("نام")).toBeDefined();
+ // TestIntroPage elements (hero image, Start button) are NOT present
+ expect(document.querySelector("img[src*='test-intro-hero']")).toBeNull();
+ expect(screen.queryByRole("button", { name: "Start" })).toBeNull();
+ });
+
+ it("renders TestIntroPage for personality_test assessment", () => {
+ (convertOverviewToFrontendItems as any).mockReturnValue([
+ {
+ slug: "personality_test",
+ title: "آزمون کتل",
+ estimate: "15 min",
+ questions: [],
+ },
+ ]);
+ (useCattellQuestionsQuery as any).mockReturnValue({
+ data: { questions: [{ id: 1, text: "Q1", options: ["A", "B", "C"] }] },
+ isLoading: false,
+ isError: false,
+ });
+
+ const queryClient = new QueryClient({
+ defaultOptions: { queries: { retry: false } },
+ });
+
+ render(
+
+
+ ,
+ );
+
+ // TestIntroPage elements (Start button and title) are present
+ expect(screen.getAllByText("آزمون کتل").length).toBeGreaterThanOrEqual(1);
+ expect(document.querySelector("img[src*='test-intro-hero']")).not.toBeNull();
+ expect(screen.getByRole("button", { name: "Start" })).toBeDefined();
+ });
});
diff --git a/src/app/questions-list/[slug]/question-detail-client.tsx b/src/app/questions-list/[slug]/question-detail-client.tsx
index 0283ecd..d408922 100644
--- a/src/app/questions-list/[slug]/question-detail-client.tsx
+++ b/src/app/questions-list/[slug]/question-detail-client.tsx
@@ -308,9 +308,14 @@ export default function QuestionDetailClient({
}, [itemSlug, isTestStarted, profileId]);
const isCattellSlug =
- itemSlug === "personality_test" || itemSlug === "cattell_test";
+ itemSlug === "personality_test" ||
+ itemSlug === "cattell_test" ||
+ itemSlug === "cattell" ||
+ itemSlug === "personality";
const isGlasserSlug =
- itemSlug === "glasser_5_needs_test" || itemSlug === "glasser_test";
+ itemSlug === "glasser_5_needs_test" ||
+ itemSlug === "glasser_test" ||
+ itemSlug === "glasser";
const isAssessment = isCattellSlug || isGlasserSlug;
const [isCompletedSheetOpen, setIsCompletedSheetOpen] = useState(false);
@@ -365,12 +370,12 @@ export default function QuestionDetailClient({
}
return overviewItem;
}, [isAssessment, overviewItem, sectionResponse]);
- const isSchemaLoading = isAssessment
- ? isOverviewLoading
- : !sectionResponse && (isOverviewLoading || isSectionLoading);
const isSchemaError = isAssessment
? isOverviewError
: (isOverviewError || isSectionError) && !sectionResponse;
+ const isSchemaLoading = isAssessment
+ ? isOverviewLoading
+ : !sectionResponse && !isSchemaError;
const cattellQuery = useCattellQuestionsQuery(locale, {
enabled: isCattellSlug && isTestStarted,
@@ -644,7 +649,7 @@ export default function QuestionDetailClient({
return null;
}
- if (item && item.questions.length === 0) {
+ if (isAssessment) {
if (isTestStarted) {
const isQuestionsLoading = isCattellSlug
? cattellQuery.isLoading
@@ -758,8 +763,7 @@ export default function QuestionDetailClient({
);
}
- const bulletKey =
- item.slug === "glasser_5_needs_test" ? "glasser" : "personality";
+ const bulletKey = isGlasserSlug ? "glasser" : "personality";
const bullets =
bulletKey === "glasser"
? [
diff --git a/src/icons.tsx b/src/icons.tsx
index 5efcbc2..3223b8e 100644
--- a/src/icons.tsx
+++ b/src/icons.tsx
@@ -66,8 +66,9 @@ const PATHS: Record = {
diamond: '',
/* Documents, Media & Location */
- file: '',
- document: '',
+ file: '',
+ document: '',
+ terms: '',
mapPin: '',
upload: '',
download: '',