diff --git a/web/src/pages/DictVspPage/utils/filterVspBySsp.js b/web/src/pages/DictVspPage/utils/filterVspBySsp.js new file mode 100644 index 0000000..8a8eb12 --- /dev/null +++ b/web/src/pages/DictVspPage/utils/filterVspBySsp.js @@ -0,0 +1,6 @@ +export const filterVspBySsp = (data, selectedSsp) => { + if (!selectedSsp) { + return data; + } + return data.filter((item) => item.ssp_id === selectedSsp.id); +}; diff --git a/web/src/pages/DictVspPage/utils/filterVspBySsp.test.js b/web/src/pages/DictVspPage/utils/filterVspBySsp.test.js new file mode 100644 index 0000000..59417f5 --- /dev/null +++ b/web/src/pages/DictVspPage/utils/filterVspBySsp.test.js @@ -0,0 +1,25 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { filterVspBySsp } from './filterVspBySsp.js'; + +const data = [ + { id: 1, ssp_id: 10 }, + { id: 2, ssp_id: 20 }, + { id: 3, ssp_id: 10 }, +]; + +test('без выбранного ССП возвращает те же данные (ссылка не меняется)', () => { + assert.equal(filterVspBySsp(data, null), data); + assert.equal(filterVspBySsp(data, undefined), data); +}); + +test('с выбранным ССП оставляет только его ВСП, порядок сохраняется', () => { + assert.deepEqual( + filterVspBySsp(data, { id: 10 }).map((v) => v.id), + [1, 3], + ); +}); + +test('ССП без ВСП даёт пустой список', () => { + assert.deepEqual(filterVspBySsp(data, { id: 99 }), []); +});