mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-08 11:30:12 +08:00
feat: update contains and add test cases
This commit is contained in:
1 parent
3b8264e39e
commit
728399938a
2 files changed
+54
-2
No files matched your search
@@ -2,7 +2,7 @@ import { basename } from './utils.js'
|
|||||||
|
|
||||||
export default class File {
|
export default class File {
|
||||||
constructor({ path, type, discovered }) {
|
constructor({ path, type, discovered }) {
|
||||||
this.path = path
|
this.path = path.trimEnd('/')
|
||||||
this.name = basename(path)
|
this.name = basename(path)
|
||||||
this.type = type
|
this.type = type
|
||||||
this.discovered = discovered
|
this.discovered = discovered
|
||||||
@@ -13,6 +13,9 @@ export default class File {
|
|||||||
}
|
}
|
||||||
|
|
||||||
contains(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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
Reference in new issue
Block a user