mirror of
https://github.com/coollabsio/coolify.git
synced 2026-11-06 13:10:37 -04:00
Replace datalist and searchable-listbox components with the shared listbox and migrate form fields. Deduplicate superseded Livewire updates to prevent repeated array update hooks, with regression coverage.
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { registerLivewireUpdateDedupe, removeSupersededUpdates } from './livewire-update-dedupe.js';
|
|
|
|
test('drops nested keys that a whole-property update replaces', () => {
|
|
assert.deepEqual(
|
|
removeSupersededUpdates({ 'ids.0': 1, ids: [1] }),
|
|
{ ids: [1] },
|
|
);
|
|
assert.deepEqual(
|
|
removeSupersededUpdates({ 'ids.1': 3, 'ids.2': '__rm__', ids: [1, 3] }),
|
|
{ ids: [1, 3] },
|
|
);
|
|
});
|
|
|
|
test('keeps nested keys without a parent update and similarly named properties', () => {
|
|
assert.deepEqual(
|
|
removeSupersededUpdates({ 'form.name': 'a', idsExtra: [2], ids: [1] }),
|
|
{ 'form.name': 'a', idsExtra: [2], ids: [1] },
|
|
);
|
|
});
|
|
|
|
test('cleans the payload in the Livewire commit hook', () => {
|
|
let commitHook = null;
|
|
registerLivewireUpdateDedupe({
|
|
hook(name, callback) {
|
|
assert.equal(name, 'commit');
|
|
commitHook = callback;
|
|
},
|
|
});
|
|
|
|
const commit = { updates: { 'ids.0': 1, ids: [1] } };
|
|
commitHook({ commit });
|
|
|
|
assert.deepEqual(commit.updates, { ids: [1] });
|
|
});
|