Skip to content

Commit e4f6ef7

Browse files
committed
adjust styling and rendering logic within test case panel
1 parent 68da006 commit e4f6ef7

1 file changed

Lines changed: 31 additions & 35 deletions

File tree

src/lib/components/core/TestCasePanel.tsx

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,6 @@ export default function TestCasePanel(props: TestCasePanelProps) {
7575
});
7676
}
7777

78-
if (allTestCases.length === 0) {
79-
return (
80-
<div className="flex flex-1 items-center justify-center">
81-
<p className="text-body-s text-muted-foreground">No test cases</p>
82-
</div>
83-
);
84-
}
85-
8678
function renderCard(test: TestCaseDTO, index: number, tab: TestTab, isPrivate: boolean) {
8779
const baseProps = {
8880
test,
@@ -109,55 +101,59 @@ export default function TestCasePanel(props: TestCasePanelProps) {
109101
);
110102
}
111103

104+
function renderTestCaseTab(testCases: TestCaseDTO[], tab: TestTab, emptyMessage: string) {
105+
const content =
106+
testCases.length === 0 ? (
107+
<div className="flex flex-1 items-center justify-center">
108+
<p className="text-body-s text-muted-foreground">{emptyMessage}</p>
109+
</div>
110+
) : (
111+
testCases.map((test, index) => {
112+
const isPrivate =
113+
tab === 'private' || (tab === 'all' && index >= publicTestCases.length);
114+
return renderCard(test, index, tab, isPrivate);
115+
})
116+
);
117+
118+
return (
119+
<TabsContent
120+
key={tab}
121+
value={tab}
122+
className="mb-2 flex flex-1 flex-col gap-2 overflow-y-auto px-4"
123+
>
124+
{content}
125+
</TabsContent>
126+
);
127+
}
128+
112129
return (
113130
<div className="flex flex-1 flex-col overflow-hidden">
114131
<Tabs
115132
value={activeTab}
116133
onValueChange={(v) => setActiveTab(v as TestTab)}
117134
className="flex flex-1 flex-col overflow-hidden"
118135
>
119-
<div className="border-sarge-gray-500 bg-sarge-gray-100 shrink-0 border-b">
136+
<div className="border-sarge-gray-500 bg-sarge-gray-100 shrink-0">
120137
<TabsList className="h-auto gap-0 rounded-none bg-transparent p-0">
121138
<TestCaseTabsTrigger value="all">All Test Cases</TestCaseTabsTrigger>
122139
<TestCaseTabsTrigger value="public">Public Test Cases</TestCaseTabsTrigger>
123140
<TestCaseTabsTrigger value="private">
124141
Private Test Cases
125142
</TestCaseTabsTrigger>
126-
<div className="border-sarge-gray-300 bg-sarge-gray-100 flex-1 border-t border-r border-b" />
143+
<div className="border-sarge-gray-300 bg-sarge-gray-100 flex-1 border-r border-b" />
127144
</TabsList>
128145
</div>
129146

130-
<div className="flex shrink-0 items-center justify-between border-b px-4 pb-2">
147+
<div className="flex shrink-0 items-center justify-between px-4 py-2">
131148
<span className="text-md font-medium">
132149
{activeLabel} ({activeTestCases.length})
133150
</span>
134151
{headerAction}
135152
</div>
136153

137-
<TabsContent
138-
value="all"
139-
className="mb-2 flex flex-1 flex-col gap-2 overflow-y-auto px-4"
140-
>
141-
{allTestCases.map((test, index) =>
142-
renderCard(test, index, 'all', index >= publicTestCases.length)
143-
)}
144-
</TabsContent>
145-
146-
<TabsContent
147-
value="public"
148-
className="mb-2 flex flex-1 flex-col gap-2 overflow-y-auto px-4"
149-
>
150-
{publicTestCases.map((test, index) => renderCard(test, index, 'public', false))}
151-
</TabsContent>
152-
153-
<TabsContent
154-
value="private"
155-
className="mb-2 flex flex-1 flex-col gap-2 overflow-y-auto px-4"
156-
>
157-
{privateTestCases.map((test, index) =>
158-
renderCard(test, index, 'private', true)
159-
)}
160-
</TabsContent>
154+
{renderTestCaseTab(allTestCases, 'all', 'No test cases')}
155+
{renderTestCaseTab(publicTestCases, 'public', 'No public test cases')}
156+
{renderTestCaseTab(privateTestCases, 'private', 'No private test cases')}
161157
</Tabs>
162158
</div>
163159
);

0 commit comments

Comments
 (0)