fix: only count something as a directory if it has children (#4595)
* fix: only count something as a directory if it has children * fix: playwright tests * fix: return 0 if you cant find the projectfolder * fix: remove folder count from e2e tests since it is unused currently --------- Co-authored-by: Tom Pridham <pridham.tom@gmail.com>
This commit is contained in:
@ -45,7 +45,6 @@ test.describe('integrations tests', () => {
|
|||||||
{
|
{
|
||||||
title: 'test-sample',
|
title: 'test-sample',
|
||||||
fileCount: 1,
|
fileCount: 1,
|
||||||
folderCount: 1,
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
sortBy: 'last-modified-desc',
|
sortBy: 'last-modified-desc',
|
||||||
@ -233,7 +232,6 @@ test.describe('when using the file tree to', () => {
|
|||||||
{
|
{
|
||||||
title: projectName,
|
title: projectName,
|
||||||
fileCount: 2,
|
fileCount: 2,
|
||||||
folderCount: 2, // TODO: This is a pre-existing bug, there are no folders within the project
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
sortBy: 'last-modified-desc',
|
sortBy: 'last-modified-desc',
|
||||||
|
@ -4,7 +4,6 @@ import { expect } from '@playwright/test'
|
|||||||
interface ProjectCardState {
|
interface ProjectCardState {
|
||||||
title: string
|
title: string
|
||||||
fileCount: number
|
fileCount: number
|
||||||
folderCount: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
interface HomePageState {
|
interface HomePageState {
|
||||||
@ -61,15 +60,13 @@ export class HomePageFixture {
|
|||||||
const projectCards = await this.projectCard.all()
|
const projectCards = await this.projectCard.all()
|
||||||
const projectCardStates: Array<ProjectCardState> = []
|
const projectCardStates: Array<ProjectCardState> = []
|
||||||
for (const projectCard of projectCards) {
|
for (const projectCard of projectCards) {
|
||||||
const [title, fileCount, folderCount] = await Promise.all([
|
const [title, fileCount] = await Promise.all([
|
||||||
(await projectCard.locator(this.projectCardTitle).textContent()) || '',
|
(await projectCard.locator(this.projectCardTitle).textContent()) || '',
|
||||||
Number(await projectCard.locator(this.projectCardFile).textContent()),
|
Number(await projectCard.locator(this.projectCardFile).textContent()),
|
||||||
Number(await projectCard.locator(this.projectCardFolder).textContent()),
|
|
||||||
])
|
])
|
||||||
projectCardStates.push({
|
projectCardStates.push({
|
||||||
title: title,
|
title: title,
|
||||||
fileCount,
|
fileCount,
|
||||||
folderCount,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return projectCardStates
|
return projectCardStates
|
||||||
|
@ -46,9 +46,21 @@ describe('desktop utilities', () => {
|
|||||||
'project-without-kcl-files',
|
'project-without-kcl-files',
|
||||||
'another-valid-project',
|
'another-valid-project',
|
||||||
],
|
],
|
||||||
'/test/projects/valid-project': ['file1.kcl', 'file2.stp'],
|
'/test/projects/valid-project': [
|
||||||
|
'file1.kcl',
|
||||||
|
'file2.stp',
|
||||||
|
'file3.kcl',
|
||||||
|
'directory1',
|
||||||
|
],
|
||||||
|
'/test/projects/valid-project/directory1': [],
|
||||||
'/test/projects/project-without-kcl-files': ['file3.glb'],
|
'/test/projects/project-without-kcl-files': ['file3.glb'],
|
||||||
'/test/projects/another-valid-project': ['file4.kcl'],
|
'/test/projects/another-valid-project': [
|
||||||
|
'file4.kcl',
|
||||||
|
'directory2',
|
||||||
|
'directory3',
|
||||||
|
],
|
||||||
|
'/test/projects/another-valid-project/directory2': [],
|
||||||
|
'/test/projects/another-valid-project/directory3': [],
|
||||||
}
|
}
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@ -119,6 +131,15 @@ describe('desktop utilities', () => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('correctly counts directories and files', async () => {
|
||||||
|
const projects = await listProjects(mockConfig)
|
||||||
|
// Verify that directories and files are counted correctly
|
||||||
|
expect(projects[0].directory_count).toEqual(1)
|
||||||
|
expect(projects[0].kcl_file_count).toEqual(2)
|
||||||
|
expect(projects[1].directory_count).toEqual(2)
|
||||||
|
expect(projects[1].kcl_file_count).toEqual(1)
|
||||||
|
})
|
||||||
|
|
||||||
it('handles empty project directory', async () => {
|
it('handles empty project directory', async () => {
|
||||||
// Adjust mockFileSystem to simulate empty directory
|
// Adjust mockFileSystem to simulate empty directory
|
||||||
mockFileSystem['/test/projects'] = []
|
mockFileSystem['/test/projects'] = []
|
||||||
|
@ -307,7 +307,10 @@ const directoryCount = (file: FileEntry) => {
|
|||||||
let count = 0
|
let count = 0
|
||||||
if (file.children) {
|
if (file.children) {
|
||||||
for (let entry of file.children) {
|
for (let entry of file.children) {
|
||||||
|
// We only want to count FileEntries with children, e.g. folders
|
||||||
|
if (entry.children !== null) {
|
||||||
count += 1
|
count += 1
|
||||||
|
}
|
||||||
directoryCount(entry)
|
directoryCount(entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user