mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Persist forks in home db
Summary: Adds information about forks to the home db. This will be used later by the UI to list forks of documents. Test Plan: Browser and server tests. Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D3772
This commit is contained in:
74
test/server/lib/DocApi2.ts
Normal file
74
test/server/lib/DocApi2.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
import {UserAPI} from 'app/common/UserAPI';
|
||||
import axios from 'axios';
|
||||
import {assert} from 'chai';
|
||||
import * as fse from 'fs-extra';
|
||||
import {TestServer} from 'test/gen-server/apiUtils';
|
||||
import {configForUser} from 'test/gen-server/testUtils';
|
||||
import {createTmpDir} from 'test/server/docTools';
|
||||
import {openClient} from 'test/server/gristClient';
|
||||
import * as testUtils from 'test/server/testUtils';
|
||||
|
||||
const chimpy = configForUser('Chimpy');
|
||||
|
||||
describe('DocApi2', function() {
|
||||
this.timeout(40000);
|
||||
let server: TestServer;
|
||||
let serverUrl: string;
|
||||
let owner: UserAPI;
|
||||
let wsId: number;
|
||||
testUtils.setTmpLogLevel('error');
|
||||
const oldEnv = new testUtils.EnvironmentSnapshot();
|
||||
|
||||
before(async function() {
|
||||
const tmpDir = await createTmpDir();
|
||||
process.env.GRIST_DATA_DIR = tmpDir;
|
||||
process.env.STRIPE_ENDPOINT_SECRET = 'TEST_WITHOUT_ENDPOINT_SECRET';
|
||||
// Use the TEST_REDIS_URL as the global redis url, if supplied.
|
||||
if (process.env.TEST_REDIS_URL && !process.env.REDIS_URL) {
|
||||
process.env.REDIS_URL = process.env.TEST_REDIS_URL;
|
||||
}
|
||||
|
||||
server = new TestServer(this);
|
||||
serverUrl = await server.start(['home', 'docs']);
|
||||
const api = await server.createHomeApi('chimpy', 'docs', true);
|
||||
await api.newOrg({name: 'testy', domain: 'testy'});
|
||||
owner = await server.createHomeApi('chimpy', 'testy', true);
|
||||
wsId = await owner.newWorkspace({name: 'ws'}, 'current');
|
||||
});
|
||||
|
||||
after(async function() {
|
||||
const api = await server.createHomeApi('chimpy', 'docs');
|
||||
await api.deleteOrg('testy');
|
||||
await server.stop();
|
||||
oldEnv.restore();
|
||||
});
|
||||
|
||||
describe('DELETE /docs/{did}', async () => {
|
||||
it('permanently deletes a document and all of its forks', async function() {
|
||||
// Create a new document and fork it twice.
|
||||
const docId = await owner.newDoc({name: 'doc'}, wsId);
|
||||
const session = await owner.getSessionActive();
|
||||
const client = await openClient(server.server, session.user.email, session.org?.domain || 'docs');
|
||||
await client.openDocOnConnect(docId);
|
||||
const forkDocResponse1 = await client.send('fork', 0);
|
||||
const forkDocResponse2 = await client.send('fork', 0);
|
||||
|
||||
// Check that files were created for the trunk and forks.
|
||||
const docPath = server.server.getStorageManager().getPath(docId);
|
||||
const forkPath1 = server.server.getStorageManager().getPath(forkDocResponse1.data.docId);
|
||||
const forkPath2 = server.server.getStorageManager().getPath(forkDocResponse2.data.docId);
|
||||
assert.equal(await fse.pathExists(docPath), true);
|
||||
assert.equal(await fse.pathExists(forkPath1), true);
|
||||
assert.equal(await fse.pathExists(forkPath2), true);
|
||||
|
||||
// Delete the trunk via API.
|
||||
const deleteDocResponse = await axios.delete(`${serverUrl}/api/docs/${docId}`, chimpy);
|
||||
assert.equal(deleteDocResponse.status, 200);
|
||||
|
||||
// Check that files for the trunk and forks were deleted.
|
||||
assert.equal(await fse.pathExists(docPath), false);
|
||||
assert.equal(await fse.pathExists(forkPath1), false);
|
||||
assert.equal(await fse.pathExists(forkPath2), false);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user