@@ -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