test(dict-vsp): фильтрация ВСП по ССП вынесена в чистую функцию
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
2a287480b6
commit
3ab229f6f8
6
web/src/pages/DictVspPage/utils/filterVspBySsp.js
Normal file
6
web/src/pages/DictVspPage/utils/filterVspBySsp.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export const filterVspBySsp = (data, selectedSsp) => {
|
||||||
|
if (!selectedSsp) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
return data.filter((item) => item.ssp_id === selectedSsp.id);
|
||||||
|
};
|
||||||
25
web/src/pages/DictVspPage/utils/filterVspBySsp.test.js
Normal file
25
web/src/pages/DictVspPage/utils/filterVspBySsp.test.js
Normal file
@ -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 }), []);
|
||||||
|
});
|
||||||
Loading…
x
Reference in New Issue
Block a user