mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-05 19:20: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 {
|
||||
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)
|
||||
}
|
||||
}
|
||||
@@ -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