gristlabs_grist-core/test
Jarosław Sadziński 1d2cf3de49 (core) Adding backend for 2-way references
Summary:
Adding support for 2-way references in data engine.

- Columns have an `reverseCol` field, which says "this is a reverse of the given column, update me when that one changes".
- At the time of setting `reverseCol`, we ensure that it's symmetrical to make a 2-way reference.
- Elsewhere we just implement syncing in one direction:
  - When `reverseCol` is present, user code is generated with a type like `grist.ReferenceList("Tasks", reverse_of="Assignee")`
  - On updating a ref column, we use `prepare_new_values()` method to generate corresponding updates to any column that's a reverse of it.
  - The `prepare_new_values()` approach is extended to support this.
  - We don't add (or remove) any mappings between rows, and rely on existing mappings (in a ref column's `_relation`) to create reverse updates.

NOTE This is polished version of https://phab.getgrist.com/D4307 with tests and 3 bug fixes
- Column transformation didn't work when transforming RefList to Ref, the reverse column became out of sync
- Tables with reverse columns couldn't be removed
- Setting json arrays to RefList didn't work if arrays contained other things besides ints
Those fixes are covered by new tests.

Test Plan: New tests

Reviewers: georgegevoian, paulfitz, dsagal

Reviewed By: georgegevoian, paulfitz

Subscribers: dsagal

Differential Revision: https://phab.getgrist.com/D4322
2024-09-11 22:31:36 +02:00
..
client (core) Enabling telemetry on /api/version endpoint 2024-06-27 12:05:15 +02:00
client-harness (core) bump mocha version to allow parallel tests; move more tests to core 2023-06-27 02:55:34 -04:00
common (core) Trim unapplicable permissions bits for column rules, both at parse time, and in UI 2024-03-06 09:46:33 -05:00
deployment Adding new lines at the end 2022-09-30 17:00:38 +02:00
fixtures (core) Adding backend for 2-way references 2024-09-11 22:31:36 +02:00
formula-dataset Bump dependencies versions 2024-04-29 14:54:36 -04:00
gen-server (core) Fixing lock issues and reverting back to single connection. 2024-09-11 20:48:52 +02:00
nbrowser (core) Adding backend for 2-way references 2024-09-11 22:31:36 +02:00
nbrowser_with_stubs Create team site for self-hosted instances (#903) 2024-04-15 00:55:57 -07:00
server (core) Adding backend for 2-way references 2024-09-11 22:31:36 +02:00
timings run grist-core test batches in parallel (#444) 2023-03-03 09:53:33 -05:00
.eslintrc.js Fixing all eslint's reported error 2023-01-03 17:22:58 +01:00
chai-as-promised.js (core) Trim unapplicable permissions bits for column rules, both at parse time, and in UI 2024-03-06 09:46:33 -05:00
declarations.d.ts (core) Update dependencies 2023-10-11 17:36:58 -04:00
init-mocha-webdriver.js (core) Update dependencies 2023-10-11 17:36:58 -04:00
report-why-tests-hang.js (core) bump mocha version to allow parallel tests; move more tests to core 2023-06-27 02:55:34 -04:00
setupPaths.js (core) bump mocha version to allow parallel tests; move more tests to core 2023-06-27 02:55:34 -04:00
split-tests.js (core) Update dependencies 2023-10-11 17:36:58 -04:00
test_env.sh Pin browser tests to Chrome 127 (#1187) 2024-09-03 11:36:49 -04:00
test_under_docker.sh Pin browser tests to Chrome 127 (#1187) 2024-09-03 11:36:49 -04:00
testUtils.ts Move HomeDBManager to gen-server/lib/homedb (#1076) 2024-07-05 16:02:39 +02:00
tsconfig.json (core) Faster builds all around. 2022-07-04 10:42:40 -04:00
upgradeDocument add test/upgradeDocument utility 2023-01-17 16:14:15 -05:00
upgradeDocumentImpl.ts add test/upgradeDocument utility 2023-01-17 16:14:15 -05:00
utils.js (core) bump mocha version to allow parallel tests; move more tests to core 2023-06-27 02:55:34 -04:00
xunit-file.js (core) bump mocha version to allow parallel tests; move more tests to core 2023-06-27 02:55:34 -04:00