mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
bcbf57d590
Summary: This uses a newer version of mocha in grist-core so that tests can be run in parallel. That allows more tests to be moved without slowing things down overall. Tests moved are venerable browser tests; only the ones that "just work" or worked without too much trouble to are moved, in order to keep the diff from growing too large. Will wrestle with more in follow up. Parallelism is at the file level, rather than the individual test. The newer version of mocha isn't needed for grist-saas repo; tests are parallelized in our internal CI by other means. I've chosen to allocate files to workers in a cruder way than our internal CI, based on initial characters rather than an automated process. The automated process would need some reworking to be compatible with mocha running in parallel mode. Test Plan: this diff was tested first on grist-core, then ported to grist-saas so saas repo history will correctly track history of moved files. Reviewers: jarek Reviewed By: jarek Subscribers: jarek Differential Revision: https://phab.getgrist.com/D3927
144 lines
6.0 KiB
JavaScript
144 lines
6.0 KiB
JavaScript
import { assert } from 'mocha-webdriver';
|
|
import { $, gu, test } from 'test/nbrowser/gristUtil-nbrowser';
|
|
|
|
describe('Views.ntest', function() {
|
|
test.setupTestSuite(this);
|
|
|
|
before(async function() {
|
|
await gu.supportOldTimeyTestCode();
|
|
await gu.actions.createNewDoc();
|
|
});
|
|
|
|
afterEach(function() {
|
|
return gu.checkForErrors();
|
|
});
|
|
|
|
it('should allow adding and removing viewsections', async function() {
|
|
// Create two new viewsections
|
|
await gu.actions.addNewSection('Table1', 'Table');
|
|
var recordSection = $('.test-gristdoc .view_leaf').eq(0);
|
|
var gridSection = $('.test-gristdoc .view_leaf').eq(1);
|
|
|
|
// Check that the newest viewsection has focus
|
|
await assert.hasClass(gridSection, 'active_section');
|
|
|
|
await gu.actions.addNewSection('Table1', 'Card');
|
|
var cardSection = $('.test-gristdoc .view_leaf').eq(2);
|
|
assert.lengthOf(await $('.test-gristdoc .view_leaf').array(), 3);
|
|
|
|
// Check that the newest viewsection has focus
|
|
await assert.hasClass(cardSection, 'active_section');
|
|
|
|
// Click the second viewsection and check that it has focus
|
|
await gridSection.click();
|
|
await assert.hasClass(gridSection, 'active_section');
|
|
|
|
// Check that viewsection titles are correct and editable
|
|
var recordTitle = recordSection.find('.test-viewsection-title');
|
|
assert.equal(await recordTitle.text(), 'TABLE1');
|
|
await recordTitle.click();
|
|
await gu.renameActiveSection('foo');
|
|
assert.equal(await recordTitle.text(), 'foo');
|
|
|
|
// Delete the first viewsection and check that it`s gone
|
|
await gu.actions.viewSection('foo').selectMenuOption('viewLayout', 'Delete widget');
|
|
await gu.waitForServer();
|
|
|
|
assert.lengthOf(await $('.test-gristdoc .view_leaf').array(), 2);
|
|
});
|
|
|
|
it('should allow creating a view section for a new table', async function() {
|
|
assert.lengthOf(await $('.test-gristdoc .view_leaf').array(), 2);
|
|
await gu.actions.addNewSection('New', 'Card List');
|
|
var newTitle = $('.test-gristdoc .test-viewsection-title').eq(2).wait();
|
|
assert.equal(await newTitle.text(), 'TABLE2 Card List');
|
|
});
|
|
|
|
it('should not create two views when creating a new view for a new table', async function() {
|
|
// This is probably test for a bug. Currently adding new tables to an existing view
|
|
// doesn't produce new views.
|
|
assert.deepEqual(await $(`.test-docpage-label`).array().text(), ['Table1']);
|
|
await gu.actions.addNewView('New', 'Table');
|
|
assert.deepEqual(await $(`.test-docpage-label`).array().text(), ['Table1', 'Table3']);
|
|
});
|
|
|
|
it('should switch to a valid default view when the active view is deleted', async function() {
|
|
// This confirms a bug fix where the default view should change when the current
|
|
// default view is deleted
|
|
await gu.actions.selectTabView('Table1');
|
|
assert.equal(await gu.actions.getActiveTab().text(), 'Table1');
|
|
assert.deepEqual(await $(`.test-docpage-label`).array().text(), ['Table1', 'Table3']);
|
|
await gu.actions.tableView('Table1').selectOption('Remove');
|
|
await $(".test-removepage-option-page").click();
|
|
await $(".test-modal-confirm").click();
|
|
await gu.waitForServer();
|
|
assert.equal(await gu.actions.getActiveTab().text(), 'Table3');
|
|
assert.deepEqual(await $(`.test-docpage-label`).array().text(), ['Table3']);
|
|
});
|
|
|
|
it('should allow adding and removing summary view sections', async function() {
|
|
await gu.removeTable("Table1");
|
|
await gu.actions.addNewTable();
|
|
assert.equal(await gu.actions.getActiveTab().text(), 'Table1');
|
|
|
|
await gu.enterGridValues(0, 0, [
|
|
['a', 'a', 'b'],
|
|
['c', 'd', 'd'],
|
|
['1', '2', '3']
|
|
]);
|
|
|
|
await gu.actions.addNewSummarySection('Table1', ['A'], 'Table', 'Section Foo');
|
|
assert.deepEqual(await gu.getGridValues({
|
|
section: 'Section Foo',
|
|
rowNums: [1, 2],
|
|
cols: [0, 1, 2]
|
|
}), ['a', '2', '3', 'b', '1', '3']);
|
|
|
|
await gu.actions.viewSection('Section Foo').selectMenuOption('viewLayout', 'Delete widget');
|
|
await gu.waitForServer();
|
|
|
|
await gu.actions.addNewSummarySection('Table1', ['B'], 'Table', 'Section Foo');
|
|
assert.deepEqual(await gu.getGridValues({
|
|
section: 'Section Foo',
|
|
rowNums: [1, 2],
|
|
cols: [0, 1, 2]
|
|
}), ['c', '1', '1', 'd', '2', '5']);
|
|
});
|
|
|
|
it('should switch to a valid default section when the active section is deleted', async function() {
|
|
// This confirms a bug fix where the section should change when the active section is
|
|
// deleted, either directly or via the section's table being deleted.
|
|
// Reference: https://phab.getgrist.com/T327
|
|
await gu.actions.addNewSection('New', 'Table');
|
|
await gu.waitForServer();
|
|
await gu.getSection('TABLE4').click();
|
|
// Delete the section
|
|
await gu.actions.viewSection('TABLE4').selectMenuOption('viewLayout', 'Delete widget');
|
|
await gu.waitForServer();
|
|
// Assert that the default section (Table1 record) is now active.
|
|
assert.equal(await $('.active_section > .viewsection_title').text(), 'TABLE1');
|
|
// Assert that focus is returned to the deleted section on undo.
|
|
await gu.undo();
|
|
assert.equal(await $('.active_section > .viewsection_title').text(), 'TABLE4');
|
|
// Add a sorted column to the new table. The reported bug shows a symptom of the problem is
|
|
// errors thrown when a sorted column exists in the deleted table.
|
|
await gu.clickCellRC(0, 0);
|
|
await gu.sendKeys('b', $.ENTER);
|
|
await gu.waitForServer();
|
|
await gu.sendKeys('a', $.ENTER);
|
|
await gu.waitForServer();
|
|
await gu.sendKeys('c', $.ENTER);
|
|
await gu.waitForServer();
|
|
await gu.openColumnMenu('A');
|
|
await $(`.grist-floating-menu .test-sort-asc`).click();
|
|
// Delete the table.
|
|
await gu.removeTable("Table4");
|
|
await gu.actions.selectTabView('Table1');
|
|
// Assert that the default section (Table1 record) is now active.
|
|
assert.equal(await $('.active_section > .viewsection_title').text(), 'TABLE1');
|
|
// Again, assert that focus is returned to the deleted section on undo.
|
|
await gu.undo();
|
|
assert.equal(await $('.active_section > .viewsection_title').text(), 'TABLE4');
|
|
});
|
|
});
|