feat: update contains and add test cases

This commit is contained in:
wancat committed 2023-08-29 13:16:36 +08:00
1 parent 3b8264e39e
commit 728399938a
2 files changed
+54 -2

No files matched your search

+5 -2
View File
@@ -2,7 +2,7 @@ import { basename } from './utils.js'
export default class File {
constructor({ path, type, discovered }) {
this.path = path
this.path = path.trimEnd('/')
this.name = basename(path)
this.type = type
this.discovered = discovered
@@ -13,6 +13,9 @@ export default class File {
}
contains(file) {
return this.isDirectory() && file.path.startsWith(this.path)
if (!this.isDirectory()) return false
if (this.path === file.path) return true
const parentPath = this.path.endsWith('/') ? this.path : `${this.path}/`
return file.path.startsWith(parentPath)
}
}
+49
View File
@@ -0,0 +1,49 @@
import File from './file.js'
describe('File', () => {
let file
beforeEach(() => {
file = new File({ path: '/home/user', type: 'folder', discovered: true })
})
const filesToCompare = [
{
name: 'direct children',
path: '/home/user/file1.txt',
answer: true,
},
{
name: 'nested children',
path: '/home/user/folder1/file1.txt',
answer: true,
},
{
name: 'outer file',
path: '/etc/file1.txt',
answer: false,
},
{
name: 'fake children',
path: '/home/user2/file2.txt',
answer: false,
},
{
name: 'same',
path: '/home/user',
answer: true,
},
{
name: 'same with trailing',
path: '/home/user/',
answer: true,
},
]
filesToCompare.forEach(({ name, path, answer }) => {
test(`${name}: ${path}`, () => {
const fileToCompare = new File({ path, type: 'file', discovered: true })
console.log(fileToCompare)
expect(file.contains(fileToCompare)).toBe(answer)
})
})
})