55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { test } from '@japa/runner'
|
|
import drive from '@adonisjs/drive/services/main'
|
|
import { FSStorageService } from '#base_modules/FileManager/services/storage_service/fs_storage_service'
|
|
|
|
const disk = drive.use('fs')
|
|
const storage = new FSStorageService()
|
|
|
|
async function cleanup() {
|
|
for (const dir of ['aa', 'aab', 'cc', 'ghostdir', 'ghostdir2']) {
|
|
await disk.deleteAll(dir)
|
|
}
|
|
}
|
|
|
|
test.group('FSStorageService directories', (group) => {
|
|
group.each.setup(() => cleanup())
|
|
group.each.teardown(() => cleanup())
|
|
|
|
test('finds a directory that has no .keep marker', async ({ assert }) => {
|
|
await disk.put('ghostdir/a.txt', 'hello')
|
|
|
|
assert.isTrue(await storage.entryExists('ghostdir'))
|
|
assert.deepInclude(await storage.getEntry('ghostdir'), { type: 'folder', name: 'ghostdir' })
|
|
})
|
|
|
|
test('moves a marker-less directory with its contents', async ({ assert }) => {
|
|
await disk.put('ghostdir/nested/a.txt', 'hello')
|
|
|
|
await storage.moveEntry('ghostdir', 'ghostdir2')
|
|
|
|
assert.isFalse(await disk.exists('ghostdir/nested/a.txt'))
|
|
assert.equal(await disk.get('ghostdir2/nested/a.txt'), 'hello')
|
|
assert.deepInclude(await storage.getEntry('ghostdir2'), { type: 'folder' })
|
|
})
|
|
|
|
test('does not touch a sibling directory sharing the same name prefix', async ({ assert }) => {
|
|
await disk.put('aa/a.txt', 'from aa')
|
|
await disk.put('aab/a.txt', 'from aab')
|
|
|
|
await storage.moveEntry('aa', 'cc')
|
|
|
|
assert.equal(await disk.get('cc/a.txt'), 'from aa')
|
|
assert.equal(await disk.get('aab/a.txt'), 'from aab')
|
|
})
|
|
|
|
test('deletes a directory without touching a prefix sibling', async ({ assert }) => {
|
|
await disk.put('aa/a.txt', 'from aa')
|
|
await disk.put('aab/a.txt', 'from aab')
|
|
|
|
await storage.deleteEntry('aa')
|
|
|
|
assert.isFalse(await disk.exists('aa/a.txt'))
|
|
assert.equal(await disk.get('aab/a.txt'), 'from aab')
|
|
})
|
|
})
|