mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) Use correct empty value in ChoiceEditor.getCellValue
Summary: The default value of Choice columns is empty string, but ChoiceEditor was saving nulls whenever a blank value was saved. This was causing unexpected updates to trigger values due to the cell value changing internally, even though null and empty string appear the same in the UI. Test Plan: Browser test. Reviewers: jarek Reviewed By: jarek Differential Revision: https://phab.getgrist.com/D4242
This commit is contained in:
parent
87c0c5153d
commit
50af681f47
@ -77,7 +77,7 @@ ChoiceEditor.prototype.getCellValue = function() {
|
|||||||
if (selectedItem) {
|
if (selectedItem) {
|
||||||
return selectedItem.label;
|
return selectedItem.label;
|
||||||
} else if (this.textInput.value.trim() === '') {
|
} else if (this.textInput.value.trim() === '') {
|
||||||
return null;
|
return '';
|
||||||
} else {
|
} else {
|
||||||
return TextEditor.prototype.getCellValue.call(this);
|
return TextEditor.prototype.getCellValue.call(this);
|
||||||
}
|
}
|
||||||
|
54
test/nbrowser/Choice.ts
Normal file
54
test/nbrowser/Choice.ts
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import {DocAPI, UserAPI} from 'app/common/UserAPI';
|
||||||
|
import {assert, Key} from 'mocha-webdriver';
|
||||||
|
import * as gu from 'test/nbrowser/gristUtils';
|
||||||
|
import {setupTestSuite} from 'test/nbrowser/testUtils';
|
||||||
|
|
||||||
|
describe('Choice', function() {
|
||||||
|
this.timeout(20000);
|
||||||
|
const cleanup = setupTestSuite();
|
||||||
|
|
||||||
|
let docId: string;
|
||||||
|
let api: UserAPI;
|
||||||
|
let docApi: DocAPI;
|
||||||
|
|
||||||
|
before(async () => {
|
||||||
|
const session = await gu.session().teamSite.login();
|
||||||
|
docId = await session.tempNewDoc(cleanup, 'Choice');
|
||||||
|
api = session.createHomeApi();
|
||||||
|
docApi = api.getDocAPI(docId);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => gu.checkForErrors());
|
||||||
|
|
||||||
|
it('should set cell value to empty string when editor text is blank', async () => {
|
||||||
|
// Add a few records to Table1.
|
||||||
|
await api.applyUserActions(docId, [
|
||||||
|
['BulkAddRecord', 'Table1', [null, null, null], {}],
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Change column A's type to Choice and check its values default to empty string.
|
||||||
|
await api.applyUserActions(docId, [
|
||||||
|
['ModifyColumn', 'Table1', 'A', {
|
||||||
|
type: 'Choice',
|
||||||
|
}],
|
||||||
|
]);
|
||||||
|
assert.deepEqual(await docApi.getRecords('Table1'), [
|
||||||
|
{id: 1, fields: {A: '', C: null, B: null}},
|
||||||
|
{id: 2, fields: {A: '', C: null, B: null}},
|
||||||
|
{id: 3, fields: {A: '', C: null, B: null}},
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Start editing a cell in column A and click away to close the editor.
|
||||||
|
await gu.getCell({rowNum: 1, col: 'A'}).click();
|
||||||
|
await gu.sendKeys(Key.ENTER);
|
||||||
|
await gu.getCell({rowNum: 1, col: 'C'}).click();
|
||||||
|
await gu.waitForServer();
|
||||||
|
|
||||||
|
// Check that the values in column A are unchanged.
|
||||||
|
assert.deepEqual(await docApi.getRecords('Table1'), [
|
||||||
|
{id: 1, fields: {A: '', C: null, B: null}},
|
||||||
|
{id: 2, fields: {A: '', C: null, B: null}},
|
||||||
|
{id: 3, fields: {A: '', C: null, B: null}},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user