mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
62 lines
2.4 KiB
JavaScript
62 lines
2.4 KiB
JavaScript
|
import { assert } from 'mocha-webdriver';
|
||
|
import { $, gu, test } from 'test/nbrowser/gristUtil-nbrowser';
|
||
|
|
||
|
const fse = require('fs-extra');
|
||
|
const path = require('path');
|
||
|
const axios = require('axios');
|
||
|
|
||
|
// Authentication headers to include into axios requests.
|
||
|
const headers = {Authorization: 'Bearer api_key_for_userz'};
|
||
|
|
||
|
describe('Export.ntest', function() {
|
||
|
const cleanup = test.setupTestSuite(this);
|
||
|
const pathsExpected = {
|
||
|
base: path.resolve(gu.fixturesRoot, "export-csv", "CCTransactions.csv"),
|
||
|
sorted: path.resolve(gu.fixturesRoot, "export-csv", "CCTransactions-DBA-desc.csv")
|
||
|
};
|
||
|
let dataExpected = {};
|
||
|
|
||
|
before(async function() {
|
||
|
await gu.supportOldTimeyTestCode();
|
||
|
await gu.useFixtureDoc(cleanup, "CCTransactions.grist", true);
|
||
|
|
||
|
// Read the expected contents before the test case starts, to simplify the promises there.
|
||
|
// (don't really need that simplification any more though).
|
||
|
for (const [key, fname] of Object.entries(pathsExpected)) {
|
||
|
dataExpected[key] = await fse.readFile(fname, {encoding: 'utf8'});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
return gu.checkForErrors();
|
||
|
});
|
||
|
|
||
|
it('should export correct data', async function() {
|
||
|
await $('.test-tb-share').click();
|
||
|
// Once the menu opens, get the href of the link.
|
||
|
await $('.grist-floating-menu').wait();
|
||
|
const href = await $('.grist-floating-menu a:contains(CSV)').wait().getAttribute('href');
|
||
|
// Download the data at the link and compare to expected.
|
||
|
const resp = await axios.get(href, {responseType: 'text', headers});
|
||
|
assert.equal(resp.headers['content-disposition'],
|
||
|
'attachment; filename="CCTransactions.csv"');
|
||
|
assert.equal(resp.data, dataExpected.base);
|
||
|
await $('.test-tb-share').click();
|
||
|
});
|
||
|
|
||
|
it('should respect active sort', async function() {
|
||
|
await gu.openColumnMenu('Doing Business As');
|
||
|
await $('.grist-floating-menu .test-sort-dsc').click()
|
||
|
await $('.test-tb-share').click();
|
||
|
// Once the menu opens, get the href of the link.
|
||
|
await $('.grist-floating-menu').wait();
|
||
|
const href = await $('.grist-floating-menu a:contains(CSV)').wait().getAttribute('href');
|
||
|
// Download the data at the link and compare to expected.
|
||
|
const resp = await axios.get(href, {responseType: 'text', headers});
|
||
|
assert.equal(resp.data, dataExpected.sorted);
|
||
|
});
|
||
|
|
||
|
// TODO: We should have a test case with multiple sections on the screen, that checks that
|
||
|
// export runs for the currently selected section.
|
||
|
});
|