mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
11e22dd84e
Summary: Fix for a bug. If a user tried to trigger the rename column action by changing a cursor position, the wrong column was renamed. Test Plan: Added new test Reviewers: georgegevoian Reviewed By: georgegevoian Differential Revision: https://phab.getgrist.com/D4352
93 lines
3.3 KiB
TypeScript
93 lines
3.3 KiB
TypeScript
import {assert, driver} from 'mocha-webdriver';
|
|
import * as gu from 'test/nbrowser/gristUtils';
|
|
import {setupTestSuite} from 'test/nbrowser/testUtils';
|
|
import {DocCreationInfo} from "app/common/DocListAPI";
|
|
import {UserAPI} from 'app/common/UserAPI';
|
|
|
|
describe('GridViewBugs', function() {
|
|
this.timeout('20s');
|
|
const cleanup = setupTestSuite();
|
|
let session: gu.Session, doc: DocCreationInfo, api: UserAPI;
|
|
|
|
before(async function() {
|
|
session = await gu.session().login();
|
|
doc = await session.tempDoc(cleanup, 'Hello.grist');
|
|
api = session.createHomeApi();
|
|
});
|
|
|
|
it('should rename valid column when clicked away', async function() {
|
|
await gu.openColumnPanel('A');
|
|
|
|
// Rename column A to Dummy
|
|
await toggleDerived();
|
|
await colId().click();
|
|
await gu.clearInput();
|
|
await colId().sendKeys('$Dummy');
|
|
|
|
// Now click away, it used to rename the new column to Dummy
|
|
await gu.getCell('B', 1).click();
|
|
await gu.waitForServer();
|
|
|
|
// Now make sure that column A was renamed to $Dummy
|
|
await gu.getCell('A', 1).click();
|
|
assert.equal(await colId().value(), '$Dummy');
|
|
|
|
// And that column B is still named $B.
|
|
await gu.getCell('B', 1).click();
|
|
assert.equal(await colId().value(), '$B');
|
|
await gu.undo();
|
|
|
|
async function toggleDerived() {
|
|
await driver.find(".test-field-derive-id").click();
|
|
await gu.waitForServer();
|
|
}
|
|
|
|
function colId() {
|
|
return driver.find('.test-field-col-id');
|
|
}
|
|
});
|
|
|
|
// This test is for a bug where hiding multiple columns at once would cause an error in the menu.
|
|
// Selection wasn't updated and the column index was out of bounds.
|
|
it('should hide multiple columns without an error', async function() {
|
|
await gu.selectColumnRange('A', 'B');
|
|
await gu.openColumnMenu('B', 'Hide 2 columns');
|
|
await gu.waitForServer();
|
|
await gu.selectColumnRange('C', 'D');
|
|
await gu.openColumnMenu('D', 'Hide 2 columns');
|
|
await gu.waitForServer();
|
|
await gu.openColumnMenu('E');
|
|
await gu.checkForErrors();
|
|
});
|
|
|
|
it('should show tables with no columns without errors', async function() {
|
|
// Create and open a new table with no columns
|
|
await api.applyUserActions(doc.id, [
|
|
['AddTable', 'Empty', []],
|
|
]);
|
|
await gu.getPageItem(/Empty/).click();
|
|
|
|
// The only 'column' should be the button to add a column
|
|
const columnNames = await driver.findAll('.column_name', e => e.getText());
|
|
assert.deepEqual(columnNames, ['+']);
|
|
|
|
// There should be no errors
|
|
assert.lengthOf(await driver.findAll('.test-notifier-toast-wrapper'), 0);
|
|
});
|
|
|
|
// When a grid is scrolled, and then data is changed (due to click in a linked section), some
|
|
// records are not rendered or the position of the scroll container is corrupted.
|
|
it('should render list with wrapped choices correctly', async function() {
|
|
await session.tempDoc(cleanup, 'Teams.grist');
|
|
await gu.selectSectionByTitle("PROJECTS");
|
|
await gu.getCell(0, 1).click();
|
|
await gu.selectSectionByTitle("TODO");
|
|
await gu.scrollActiveView(0, 300);
|
|
await gu.selectSectionByTitle("PROJECTS");
|
|
await gu.getCell(0, 2).click();
|
|
await gu.selectSectionByTitle("TODO");
|
|
// This throws an error, as the cell is not rendered.
|
|
assert.equal(await gu.getCell(0, 2).getText(), "2021-09-27 Mo\n2021-10-04 Mo");
|
|
});
|
|
});
|