New drive structure without file names
parent
fd83ae3e61
commit
df2b00122a
@ -0,0 +1,178 @@
|
||||
define([
|
||||
'/common/cryptpad-common.js',
|
||||
'/common/userObject.js',
|
||||
'json.sortify',
|
||||
],function (Cryptpad, FO, sortify) {
|
||||
var module = {};
|
||||
|
||||
var href1 = "/pad/#/1/edit/a798u+miu2tg5b-QaP9SvA/UIPoGUPewZscBUFhNIi+eBBM/";
|
||||
var href2 = "/poll/#/1/edit/uFJTXjQUEwV2bl-y3cKVpP/LJ-4qPnpR5iY0HVdwLcnjLsx/";
|
||||
var href3 = "/code/#/1/edit/R1kZC1mY9khSsrLCyJT+CA/jtQrCxbTiqQJ4HyUxbFBnmG8/";
|
||||
var href4 = "/slide/#/1/edit/R2bZC1mY9khSsrLCyJT+CA/mlQrCxbTiqQJ4HyUxbFBnmG8/";
|
||||
|
||||
module.test = function (assert) {
|
||||
var config = {Cryptpad: Cryptpad, workgroup: false};
|
||||
assert(function (cb) {
|
||||
var files = {
|
||||
"root": {
|
||||
"Folder": {},
|
||||
"Folder2": {
|
||||
"FileName": href1
|
||||
}
|
||||
},
|
||||
"template": [href3],
|
||||
"trash": {
|
||||
"DeletedF": [{
|
||||
"path": ["root"],
|
||||
"element": {}
|
||||
}, {
|
||||
"path": ["root", "Folder"],
|
||||
"element": href2
|
||||
}]
|
||||
},
|
||||
"CryptPad_RECENTPADS": [{
|
||||
"atime": 23456783456,
|
||||
"ctime": 12345678901,
|
||||
"href": href3,
|
||||
"title": "pewcode"
|
||||
}, {
|
||||
"atime": 23456789012,
|
||||
"ctime": 12345789235,
|
||||
"href": href2,
|
||||
"title": "pewpoll"
|
||||
}, {
|
||||
"atime": 23456789012,
|
||||
"ctime": 12345789235,
|
||||
"href": href1,
|
||||
"title": "pewpad"
|
||||
}]
|
||||
};
|
||||
var fo = FO.init(files, config);
|
||||
fo.fixFiles();
|
||||
if (files['CryptPad_RECENTPADS'] || !files.filesData) {
|
||||
console.log("DRIVE1: migration from RECENTPADS to filesData failed");
|
||||
return cb();
|
||||
}
|
||||
var fileKey = Object.keys(files.root.Folder2)[0];
|
||||
if (!fileKey) { return cb(); }
|
||||
var fileId = files.root.Folder2[fileKey];
|
||||
var res = typeof fileId === "number"
|
||||
&& typeof files.filesData[fileId] === "object"
|
||||
&& files.filesData[fileId].filename === "FileName"
|
||||
&& typeof files.trash.DeletedF[1].element === "number"
|
||||
&& typeof files.filesData[files.trash.DeletedF[1].element] === "object"
|
||||
&& files.filesData[files.trash.DeletedF[1].element].filename === "DeletedF"
|
||||
&& typeof files.template[0] === "number"
|
||||
&& typeof files.filesData[files.template[0]] === "object"
|
||||
&& !files.filesData[files.template[0]].filename
|
||||
return cb(res);
|
||||
}, "DRIVE1: migration and fixFiles without unsorted");
|
||||
|
||||
assert(function (cb) {
|
||||
var files = {
|
||||
"root": {
|
||||
"Folder": {},
|
||||
"Folder2": {
|
||||
"FileName": "/pad/#/1/edit/a798u+miu2tg5b-QaP9SvA/UIPoGUPewZscBUFhNIi+eBBM/"
|
||||
}
|
||||
},
|
||||
"unsorted": ["/code/#/1/edit/R1kZC1mY9khSsrLCyJT+CA/jtQrCxbTiqQJ4HyUxbFBnmG8/"],
|
||||
"trash": {},
|
||||
"CryptPad_RECENTPADS": [{
|
||||
"atime": 23456783456,
|
||||
"ctime": 12345678901,
|
||||
"href": "/code/#/1/edit/R1kZC1mY9khSsrLCyJT+CA/jtQrCxbTiqQJ4HyUxbFBnmG8/",
|
||||
"title": "pewcode"
|
||||
}, {
|
||||
"atime": 23456789012,
|
||||
"ctime": 12345789235,
|
||||
"href": "/pad/#/1/edit/a798u+miu2tg5b-QaP9SvA/UIPoGUPewZscBUFhNIi+eBBM/",
|
||||
"title": "pewpad"
|
||||
}]
|
||||
};
|
||||
var fo = FO.init(files, config);
|
||||
fo.fixFiles();
|
||||
if (files['CryptPad_RECENTPADS'] || !files.filesData) {
|
||||
console.log("DRIVE2: migration from RECENTPADS to filesData failed");
|
||||
return cb();
|
||||
}
|
||||
if (!files.template) {
|
||||
console.log("DRIVE2: template is missing");
|
||||
return cb();
|
||||
}
|
||||
if (files.unsorted) {
|
||||
console.log("DRIVE2: unsorted not removed");
|
||||
return cb();
|
||||
}
|
||||
var fileKey = Object.keys(files.root.Folder2)[0];
|
||||
var fileKey2 = Object.keys(files.root).filter(function (x) {
|
||||
return typeof files.root[x] === "number"
|
||||
})[0];
|
||||
if (!fileKey || !fileKey2) { return cb(); }
|
||||
var fileId = files.root.Folder2[fileKey];
|
||||
var fileId2 = files.root[fileKey2];
|
||||
var res = typeof fileId === "number"
|
||||
&& typeof files.filesData[fileId] === "object"
|
||||
&& files.filesData[fileId].filename === "FileName"
|
||||
&& typeof fileId2 === "number"
|
||||
&& typeof files.filesData[fileId2] === "object"
|
||||
&& !files.filesData[fileId2].filename
|
||||
return cb(res);
|
||||
}, "DRIVE2: migration and fixFiles with unsorted");
|
||||
|
||||
assert(function (cb) {
|
||||
var files = {
|
||||
"root": {
|
||||
"Folder": {},
|
||||
"Folder2": {
|
||||
"FileName": href1
|
||||
}
|
||||
},
|
||||
"template": [href3],
|
||||
"trash": {
|
||||
"DeletedF": [{
|
||||
"path": ["root"],
|
||||
"element": { "Trash": href4 }
|
||||
}, {
|
||||
"path": ["root", "Folder"],
|
||||
"element": href2
|
||||
}]
|
||||
},
|
||||
"CryptPad_RECENTPADS": []
|
||||
};
|
||||
var fo = FO.init(files, config);
|
||||
fo.fixFiles();
|
||||
if (files['CryptPad_RECENTPADS'] || !files.filesData) {
|
||||
console.log("DRIVE2: migration from RECENTPADS to filesData failed");
|
||||
return cb();
|
||||
}
|
||||
var fileKey = Object.keys(files.root.Folder2)[0];
|
||||
var fileKey2 = Object.keys(files.trash.DeletedF[0].element)[0];
|
||||
if (!fileKey || !fileKey2) { return cb(); }
|
||||
var fileId = files.root.Folder2[fileKey];
|
||||
var fileId2 = files.trash.DeletedF[0].element[fileKey2];
|
||||
var res = typeof fileId === "number"
|
||||
&& typeof files.filesData[fileId] === "object"
|
||||
&& files.filesData[fileId].filename === "FileName"
|
||||
&& files.filesData[fileId].href === href1
|
||||
&& typeof files.trash.DeletedF[1].element === "number"
|
||||
&& typeof files.filesData[files.trash.DeletedF[1].element] === "object"
|
||||
&& files.filesData[files.trash.DeletedF[1].element].filename === "DeletedF"
|
||||
&& files.filesData[files.trash.DeletedF[1].element].href === href2
|
||||
&& typeof files.template[0] === "number"
|
||||
&& typeof files.filesData[files.template[0]] === "object"
|
||||
&& !files.filesData[files.template[0]].filename
|
||||
&& files.filesData[files.template[0]].href === href3
|
||||
&& typeof fileId2 === "number"
|
||||
&& typeof files.filesData[fileId2] === "object"
|
||||
&& files.filesData[fileId2].filename === "Trash"
|
||||
&& files.filesData[fileId2].href === href4;
|
||||
return cb(res);
|
||||
}, "DRIVE4: migration and fixFiles with a pad in trash not root");
|
||||
|
||||
};
|
||||
|
||||
//TODO test with a file not in RECENTPADS
|
||||
|
||||
return module;
|
||||
});
|
Loading…
Reference in New Issue