|
1 | 1 | import * as React from 'react'; |
2 | 2 | import { spy } from 'sinon'; |
3 | 3 | import { RefObject } from '@mui/x-internals/types'; |
4 | | -import { getCell, getColumnValues, getRows, includeRowSelection } from 'test/utils/helperFn'; |
| 4 | +import { |
| 5 | + getCell, |
| 6 | + getColumnValues, |
| 7 | + getRows, |
| 8 | + includeRowSelection, |
| 9 | + excludeRowSelection, |
| 10 | +} from 'test/utils/helperFn'; |
5 | 11 | import { createRenderer, screen, act, fireEvent } from '@mui/internal-test-utils'; |
6 | 12 | import { |
7 | 13 | GridApi, |
@@ -1283,6 +1289,25 @@ describe('<DataGridPro /> - Row selection', () => { |
1283 | 1289 | }); |
1284 | 1290 | }); |
1285 | 1291 |
|
| 1292 | + describe('apiRef: getPropagatedRowSelectionModel', () => { |
| 1293 | + it('`getPropagatedRowSelectionModel` should return exclude models unchanged', () => { |
| 1294 | + render(<TreeDataGrid rowSelectionPropagation={{ descendants: true, parents: true }} />); |
| 1295 | + |
| 1296 | + // Exclude models are not affected by propagation |
| 1297 | + const excludeModel = excludeRowSelection([1]); |
| 1298 | + const propagatedModel = apiRef.current?.getPropagatedRowSelectionModel(excludeModel); |
| 1299 | + |
| 1300 | + expect(propagatedModel).to.equal(excludeModel); // same object |
| 1301 | + |
| 1302 | + // Include models are affected by propagation |
| 1303 | + const includeModel = includeRowSelection([1]); |
| 1304 | + const propagatedIncludeModel = apiRef.current?.getPropagatedRowSelectionModel(includeModel); |
| 1305 | + |
| 1306 | + expect(propagatedIncludeModel?.type).to.equal('include'); |
| 1307 | + expect(propagatedIncludeModel?.ids).to.have.keys([1, 2, 3, 4, 5, 6, 7]); |
| 1308 | + }); |
| 1309 | + }); |
| 1310 | + |
1286 | 1311 | it('should select only filtered rows after filter is applied', async () => { |
1287 | 1312 | const { user } = render(<TestDataGridSelection checkboxSelection />); |
1288 | 1313 | const selectAll = screen.getByRole('checkbox', { |
|
0 commit comments