|
1 | 1 | import { expect } from '@esm-bundle/chai'; |
2 | 2 | import sinon from 'sinon'; |
3 | 3 | import { click, fixtureSync, nextFrame } from '@vaadin/testing-helpers'; |
4 | | -import { flushGrid, getCellContent, getRows, getRowCells } from './helpers.js'; |
| 4 | +import { flushGrid, getCellContent, getRows, getRowCells, getBodyCellContent } from './helpers.js'; |
5 | 5 | import '../vaadin-grid.js'; |
6 | 6 | import '../vaadin-grid-filter.js'; |
7 | 7 | import '../vaadin-grid-sorter.js'; |
@@ -85,10 +85,10 @@ describe('array data provider', () => { |
85 | 85 | expect(grid.dataProvider).to.equal(grid._arrayDataProvider); |
86 | 86 | }); |
87 | 87 |
|
88 | | - it('should not override custom data provider', () => { |
| 88 | + it('should override custom data provider', () => { |
89 | 89 | const ds = (grid.dataProvider = () => {}); |
90 | 90 | grid.items = [1, 2, 3]; |
91 | | - expect(grid.dataProvider).to.equal(ds); |
| 91 | + expect(grid.dataProvider).not.to.equal(ds); |
92 | 92 | }); |
93 | 93 |
|
94 | 94 | it('should handle new array of same length', () => { |
@@ -249,3 +249,40 @@ describe('invalid paths', () => { |
249 | 249 | }); |
250 | 250 | }); |
251 | 251 | }); |
| 252 | + |
| 253 | +describe('items with a custom data provider', () => { |
| 254 | + let grid; |
| 255 | + const dataProvider = (params, callback) => callback([{ value: 'foo' }], 1); |
| 256 | + const items = [{ value: 'bar' }]; |
| 257 | + |
| 258 | + beforeEach(() => { |
| 259 | + grid = fixtureSync(` |
| 260 | + <vaadin-grid> |
| 261 | + <vaadin-grid-column path="value"></vaadin-grid-column> |
| 262 | + </vaadin-grid> |
| 263 | + `); |
| 264 | + }); |
| 265 | + |
| 266 | + it('use the items array', () => { |
| 267 | + grid.dataProvider = dataProvider; |
| 268 | + grid.items = items; |
| 269 | + flushGrid(grid); |
| 270 | + expect(getBodyCellContent(grid, 0, 0).textContent).to.equal('bar'); |
| 271 | + expect(grid.dataProvider).not.to.equal(dataProvider); |
| 272 | + }); |
| 273 | + |
| 274 | + it('should use the data provider', () => { |
| 275 | + grid.items = items; |
| 276 | + grid.dataProvider = dataProvider; |
| 277 | + flushGrid(grid); |
| 278 | + expect(getBodyCellContent(grid, 0, 0).textContent).to.equal('foo'); |
| 279 | + expect(grid.items).to.be.undefined; |
| 280 | + }); |
| 281 | + |
| 282 | + it('should unset the data provider', () => { |
| 283 | + grid.items = items; |
| 284 | + grid.items = null; |
| 285 | + flushGrid(grid); |
| 286 | + expect(grid.dataProvider).to.be.undefined; |
| 287 | + }); |
| 288 | +}); |
0 commit comments