mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
test: fix topic thumb tests and topic thumbs to work properly with post upload assoc.
This commit is contained in:
@@ -91,7 +91,7 @@ Thumbs.associate = async function ({ id, path, score }) {
|
|||||||
// Associate thumbnails with the main pid (only on local upload)
|
// Associate thumbnails with the main pid (only on local upload)
|
||||||
if (!isDraft && isLocal) {
|
if (!isDraft && isLocal) {
|
||||||
const mainPid = (await topics.getMainPids([id]))[0];
|
const mainPid = (await topics.getMainPids([id]))[0];
|
||||||
await posts.uploads.associate(mainPid, path);
|
await posts.uploads.associate(mainPid, path.slice(1));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -136,10 +136,11 @@ Thumbs.delete = async function (id, relativePaths) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
await Promise.all([
|
await db.sortedSetRemove(set, toRemove);
|
||||||
db.sortedSetRemove(set, toRemove),
|
|
||||||
Promise.all(toDelete.map(async absolutePath => file.delete(absolutePath))),
|
if (isDraft && toDelete.length) { // drafts only; post upload dissociation handles disk deletion for topics
|
||||||
]);
|
await Promise.all(toDelete.map(async absolutePath => file.delete(absolutePath)));
|
||||||
|
}
|
||||||
|
|
||||||
if (toRemove.length && !isDraft) {
|
if (toRemove.length && !isDraft) {
|
||||||
const topics = require('.');
|
const topics = require('.');
|
||||||
@@ -147,7 +148,7 @@ Thumbs.delete = async function (id, relativePaths) {
|
|||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
db.incrObjectFieldBy(`topic:${id}`, 'numThumbs', -toRemove.length),
|
db.incrObjectFieldBy(`topic:${id}`, 'numThumbs', -toRemove.length),
|
||||||
Promise.all(toRemove.map(async relativePath => posts.uploads.dissociate(mainPid, relativePath.replace('/files/', '')))),
|
Promise.all(toRemove.map(async relativePath => posts.uploads.dissociate(mainPid, relativePath.slice(1)))),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -182,13 +182,13 @@ describe('Topic thumbs', () => {
|
|||||||
|
|
||||||
it('should associate the thumbnail with that topic\'s main pid\'s uploads', async () => {
|
it('should associate the thumbnail with that topic\'s main pid\'s uploads', async () => {
|
||||||
const uploads = await posts.uploads.list(mainPid);
|
const uploads = await posts.uploads.list(mainPid);
|
||||||
assert(uploads.includes(path.basename(relativeThumbPaths[0])));
|
assert(uploads.includes(relativeThumbPaths[0].slice(1)));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should maintain state in the topic\'s main pid\'s uploads if posts.uploads.sync() is called', async () => {
|
it('should maintain state in the topic\'s main pid\'s uploads if posts.uploads.sync() is called', async () => {
|
||||||
await posts.uploads.sync(mainPid);
|
await posts.uploads.sync(mainPid);
|
||||||
const uploads = await posts.uploads.list(mainPid);
|
const uploads = await posts.uploads.list(mainPid);
|
||||||
assert(uploads.includes(path.basename(relativeThumbPaths[0])));
|
assert(uploads.includes(relativeThumbPaths[0].slice(1)));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should combine the thumbs uploaded to a UUID zset and combine it with a topic\'s thumb zset', async () => {
|
it('should combine the thumbs uploaded to a UUID zset and combine it with a topic\'s thumb zset', async () => {
|
||||||
@@ -217,7 +217,7 @@ describe('Topic thumbs', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe(`.delete()`, () => {
|
describe(`.delete()`, () => {
|
||||||
it('should remove a file from sorted set AND disk', async () => {
|
it('should remove a file from sorted set', async () => {
|
||||||
await topics.thumbs.associate({
|
await topics.thumbs.associate({
|
||||||
id: 1,
|
id: 1,
|
||||||
path: thumbPaths[0],
|
path: thumbPaths[0],
|
||||||
@@ -225,7 +225,6 @@ describe('Topic thumbs', () => {
|
|||||||
await topics.thumbs.delete(1, relativeThumbPaths[0]);
|
await topics.thumbs.delete(1, relativeThumbPaths[0]);
|
||||||
|
|
||||||
assert.strictEqual(await db.isSortedSetMember('topic:1:thumbs', relativeThumbPaths[0]), false);
|
assert.strictEqual(await db.isSortedSetMember('topic:1:thumbs', relativeThumbPaths[0]), false);
|
||||||
assert.strictEqual(await file.exists(thumbPaths[0]), false);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should no longer be associated with that topic\'s main pid\'s uploads', async () => {
|
it('should no longer be associated with that topic\'s main pid\'s uploads', async () => {
|
||||||
@@ -430,9 +429,9 @@ describe('Topic thumbs', () => {
|
|||||||
assert.strictEqual(await db.exists(`topic:${topicObj.tid}:thumbs`), false);
|
assert.strictEqual(await db.exists(`topic:${topicObj.tid}:thumbs`), false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not leave files behind', async () => {
|
it('should not leave post upload associations behind', async () => {
|
||||||
const exists = await Promise.all(thumbPaths.slice(0, 2).map(async absolutePath => file.exists(absolutePath)));
|
const uploads = await db.getSortedSetMembers(`post:${topicObj.postData.pid}:uploads`);
|
||||||
assert.strictEqual(exists.some(Boolean), false);
|
assert.strictEqual(uploads.length, 0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user