mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
519f2f4fb6
Summary: The switching between Common and Separate settings for a field was broken when the field had never modified settings. Test Plan: Added a test case that tickles the issue and tests the fix. Reviewers: jarek Reviewed By: jarek Differential Revision: https://phab.getgrist.com/D4072
72 lines
3.0 KiB
TypeScript
72 lines
3.0 KiB
TypeScript
import {assert, driver} from 'mocha-webdriver';
|
|
import * as gu from 'test/nbrowser/gristUtils';
|
|
import {setupTestSuite} from 'test/nbrowser/testUtils';
|
|
|
|
describe('FieldSettings2', function() {
|
|
this.timeout(20000);
|
|
const cleanup = setupTestSuite();
|
|
|
|
afterEach(() => gu.checkForErrors());
|
|
|
|
it('should allow separate field settings for a new field', async function() {
|
|
const session = await gu.session().teamSite.user('user1').login();
|
|
const docId = (await session.tempNewDoc(cleanup, 'FieldSettings2A', {load: false}));
|
|
const api = session.createHomeApi();
|
|
await api.applyUserActions(docId, [
|
|
['AddTable', 'TestTable', [{id: 'Num', type: 'Numeric'}]],
|
|
['BulkAddRecord', 'TestTable', [null, null, null], {Num: ['5', '10', '15']}],
|
|
]);
|
|
|
|
await session.loadDoc(`/doc/${docId}/p/2`);
|
|
|
|
// Add a second widget of the same table to the page.
|
|
await gu.openAddWidgetToPage();
|
|
await gu.selectWidget(/Table/, /TestTable/);
|
|
await gu.renameSection('TESTTABLE', 'T1');
|
|
await gu.renameSection('TESTTABLE', 'T2');
|
|
|
|
// Change Num field to "Separate"
|
|
await gu.getCell({section: 'T1', rowNum: 1, col: 'Num'}).click();
|
|
await gu.toggleSidePanel('right', 'open');
|
|
await driver.find('.test-right-tab-field').click();
|
|
await fieldSettingsUseSeparate();
|
|
|
|
// Now change background color of this column.
|
|
await gu.openCellColorPicker();
|
|
await gu.setFillColor('blue');
|
|
await driver.find('.test-colors-save').click();
|
|
await gu.waitForServer();
|
|
|
|
// Check that only one of the two views changed.
|
|
const cell1 = await gu.getCell({section: 'T1', rowNum: 1, col: 'Num'});
|
|
const cell2 = await gu.getCell({section: 'T2', rowNum: 1, col: 'Num'});
|
|
await gu.assertFillColor(cell1, 'blue');
|
|
await gu.assertFillColor(cell2, 'transparent');
|
|
|
|
// Saving as common updates the other view.
|
|
await fieldSettingsSaveAsCommon();
|
|
await gu.assertFillColor(cell1, 'blue');
|
|
await gu.assertFillColor(cell2, 'blue');
|
|
|
|
// Undo; then reverting reverts the saved change.
|
|
await gu.undo();
|
|
await gu.assertFillColor(cell1, 'blue');
|
|
await gu.assertFillColor(cell2, 'transparent');
|
|
await fieldSettingsRevertToCommon();
|
|
await gu.assertFillColor(cell1, 'transparent');
|
|
await gu.assertFillColor(cell2, 'transparent');
|
|
});
|
|
});
|
|
|
|
const getFieldSettingsButton = () => driver.find('.fieldbuilder_settings_button');
|
|
const switchFieldSettings = async (fromLabel: string, option: string, toLabel: string) => {
|
|
assert.include(await getFieldSettingsButton().getText(), fromLabel);
|
|
await getFieldSettingsButton().click();
|
|
await driver.findContent('.grist-floating-menu li', option).click();
|
|
await gu.waitForServer();
|
|
assert.include(await getFieldSettingsButton().getText(), toLabel);
|
|
};
|
|
const fieldSettingsUseSeparate = () => switchFieldSettings('Common', 'Use separate', 'Separate');
|
|
const fieldSettingsSaveAsCommon = () => switchFieldSettings('Separate', 'Save as common', 'Common');
|
|
const fieldSettingsRevertToCommon = () => switchFieldSettings('Separate', 'Revert to common', 'Common');
|