Files
puter/tools/api-tester/tests/batch.js
2025-01-09 15:51:50 -05:00

227 lines
7.3 KiB
JavaScript

const { expect } = require("chai");
const { verify_fsentry } = require("./fsentry");
module.exports = {
name: 'batch',
do: async t => {
let results;
/*
await t.case('batch write', async () => {
results = null;
results = await t.batch('/batch/write', [
{
path: t.resolve('test_1.txt'),
overwrite: true,
},
{
path: t.resolve('test_3.txt'),
}
], [
'first file',
'second file',
])
console.log('results?', results)
expect(results.length).equal(2);
for ( const result of results ) {
await verify_fsentry(t, result)
}
});
t.case('batch mkdir', async () => {
results = null;
results = await t.batch_json('batch/mkdir', [
{
path: t.resolve('test_1_dir'),
overwrite: true,
},
{
path: t.resolve('test_3_dir'),
}
])
expect(results.length).equal(2);
for ( const result of results ) {
await verify_fsentry(t, result)
}
});
*/
await t.case('3-3 nested directores', async () => {
results = null;
results = await t.batch('batch', [
{
op: 'mktree',
parent: t.cwd,
tree: [
'a/b/c',
[
'a/b/c',
['a/b/c'],
['d/e/f'],
['g/h/i'],
['j/k/l'],
],
[
'd/e/f',
['a/b/c'],
['d/e/f'],
['g/h/i'],
['j/k/l'],
],
[
'g/h/i',
['a/b/c'],
['d/e/f'],
['g/h/i'],
['j/k/l'],
],
[
'j/k/l',
['a/b/c'],
['d/e/f'],
['g/h/i'],
['j/k/l'],
],
]
}
], []);
});
await t.case('path reference resolution', async () => {
results = null;
results = await t.batch('batch', [
{
op: 'mkdir',
as: 'dest_1',
path: t.resolve('q/w'),
create_missing_parents: true,
},
{
op: 'mkdir',
as: 'dest_2',
path: t.resolve('q/w'), // "q/w (1)"
dedupe_name: true,
create_missing_parents: true,
},
{
op: 'write',
path: t.resolve('$dest_1/file_1.txt'),
},
{
op: 'write',
path: t.resolve('$dest_2/file_2.txt'),
},
], [
'file 1 contents',
'file 2 contents',
]);
console.log('res?', results)
expect(results.length).equal(4);
expect(results[0].name).equal('w');
expect(results[1].name).equal('w (1)');
expect(results[2].path).equal(t.resolve('q/w/file_1.txt'));
expect(results[3].path).equal(t.resolve('q/w (1)/file_2.txt'));
});
await t.case('batch mkdir and write', async () => {
results = null;
results = await t.batch('batch', [
{
op: 'mkdir',
path: t.resolve('test_x_1_dir'),
overwrite: true,
},
{
op: 'write',
path: t.resolve('test_x_1.txt'),
},
{
op: 'mkdir',
path: t.resolve('test_x_2_dir'),
},
{
op: 'write',
path: t.resolve('test_x_2.txt'),
}
], [
'first file',
'second file',
]);
console.log('res?', results)
expect(results.length).equal(4);
for ( const result of results ) {
// await verify_fsentry(t, result)
}
});
await t.case('path reference resolution (without dedupe)', async () => {
results = null;
results = await t.batch('batch', [
{
op: 'mkdir',
as: 'dest_1',
path: t.resolve('q/w'),
create_missing_parents: true,
},
{
op: 'write',
path: t.resolve('$dest_1/file_1.txt'),
},
], [
'file 1 contents',
]);
console.log('res?', results)
expect(results.length).equal(2);
expect(results[0].name).equal('w');
expect(results[1].path).equal(t.resolve('q/w/file_1.txt'));
});
// Test for path reference resolution
await t.case('path reference resolution', async () => {
results = null;
results = await t.batch('batch', [
{
op: 'mkdir',
as: 'dest_1',
path: t.resolve('q/w'),
create_missing_parents: true,
},
{
op: 'mkdir',
as: 'dest_2',
path: t.resolve('q/w'), // "q/w (1)"
dedupe_name: true,
create_missing_parents: true,
},
{
op: 'write',
path: t.resolve('$dest_1/file_1.txt'),
},
{
op: 'write',
path: t.resolve('$dest_2/file_2.txt'),
},
], [
'file 1 contents',
'file 2 contents',
]);
console.log('res?', results)
expect(results.length).equal(4);
expect(results[0].name).equal('w');
expect(results[1].name).equal('w (1)');
expect(results[2].path).equal(t.resolve('q/w/file_1.txt'));
expect(results[3].path).equal(t.resolve('q/w (1)/file_2.txt'));
});
// Test for a single write
await t.case('single write', async () => {
results = null;
results = await t.batch('batch', [
{
op: 'write',
path: t.resolve('just_one_file.txt'),
},
], [
'file 1 contents',
]);
console.log('res?', results)
});
}
};