@@ -3,7 +3,6 @@ import { aTimeout, fixtureSync, nextFrame } from '@vaadin/testing-helpers';
3
3
import sinon from 'sinon' ;
4
4
import './data-provider.styles.js' ;
5
5
import '../all-imports.js' ;
6
- import { html , PolymerElement } from '@polymer/polymer/polymer-element.js' ;
7
6
import {
8
7
flushGrid ,
9
8
getBodyCellContent ,
@@ -21,59 +20,6 @@ import {
21
20
scrollToEnd ,
22
21
} from './helpers.js' ;
23
22
24
- class WrappedGrid extends PolymerElement {
25
- static get template ( ) {
26
- return html `
27
- <style>
28
- .item {
29
- height: 30px;
30
- }
31
- </style>
32
- <vaadin-grid size="100" id="grid" style="height: 300px;" data-provider="[[dataProvider]]">
33
- <vaadin-grid-column id="col"></vaadin-grid-column>
34
- </vaadin-grid>
35
- ` ;
36
- }
37
-
38
- ready ( ) {
39
- super . ready ( ) ;
40
- this . $ . col . headerRenderer = ( root ) => {
41
- root . textContent = 'Header' ;
42
- } ;
43
- this . $ . col . renderer = ( root , _col , model ) => {
44
- root . textContent = model . item . value ;
45
- } ;
46
- }
47
- }
48
-
49
- customElements . define ( 'wrapped-grid' , WrappedGrid ) ;
50
-
51
- class PageSizeGrid extends PolymerElement {
52
- static get template ( ) {
53
- return html `
54
- <vaadin-grid data-provider="[[dataProvider]]" size="[[size]]" id="grid">
55
- <vaadin-grid-column header="#" path="value"></vaadin-grid-column>
56
- </vaadin-grid>
57
- ` ;
58
- }
59
-
60
- static get properties ( ) {
61
- return {
62
- dataProvider : Object ,
63
- size : Number ,
64
- } ;
65
- }
66
-
67
- ready ( ) {
68
- super . ready ( ) ;
69
- this . $ . grid . pageSize = 10 ;
70
- this . size = 200 ;
71
- this . dataProvider = infiniteDataProvider ;
72
- }
73
- }
74
-
75
- customElements . define ( 'page-size-grid' , PageSizeGrid ) ;
76
-
77
23
function simulateScrollToStart ( grid ) {
78
24
// Make sure not over scroll more than the delta threshold limit of 10k.
79
25
const table = grid . $ . table ;
@@ -752,24 +698,31 @@ describe('unattached', () => {
752
698
753
699
describe ( 'page size grid' , ( ) => {
754
700
it ( 'should render grid rows when setting page-size before size' , ( ) => {
755
- const container = fixtureSync ( '<page-size-grid></page-size-grid>' ) ;
756
- const grid = container . $ . grid ;
701
+ const grid = fixtureSync ( `
702
+ <vaadin-grid>
703
+ <vaadin-grid-column header="#" path="value"></vaadin-grid-column>
704
+ </vaadin-grid>
705
+ ` ) ;
706
+ grid . pageSize = 10 ;
707
+ grid . size = 200 ;
708
+ grid . dataProvider = infiniteDataProvider ;
757
709
flushGrid ( grid ) ;
758
710
expect ( getCellContent ( getFirstCell ( grid ) ) . textContent . trim ( ) ) . to . equal ( 'foo0' ) ;
759
711
} ) ;
760
712
} ) ;
761
713
762
714
describe ( 'wrapped grid' , ( ) => {
763
- let container , grid ;
715
+ let grid ;
764
716
765
717
describe ( 'initial render' , ( ) => {
766
718
it ( 'should not render rows before columns are defined' , ( ) => {
767
- container = fixtureSync ( '<wrapped-grid></wrapped-grid>' ) ;
768
- grid = container . $ . grid ;
769
- container . dataProvider = sinon . spy ( infiniteDataProvider ) ;
770
- if ( grid . $ ) {
771
- expect ( grid . $ . items . childElementCount ) . to . equal ( 0 ) ;
772
- }
719
+ grid = fixtureSync ( `
720
+ <vaadin-grid size="100">
721
+ <vaadin-grid-column></vaadin-grid-column>
722
+ </vaadin-grid>
723
+ ` ) ;
724
+ grid . dataProvider = sinon . spy ( infiniteDataProvider ) ;
725
+ expect ( grid . $ . items . childElementCount ) . to . equal ( 0 ) ;
773
726
} ) ;
774
727
} ) ;
775
728
@@ -782,41 +735,51 @@ describe('wrapped grid', () => {
782
735
}
783
736
784
737
beforeEach ( ( ) => {
785
- container = fixtureSync ( '<wrapped-grid></wrapped-grid>' ) ;
786
- grid = container . $ . grid ;
787
- container . dataProvider = sinon . spy ( infiniteDataProvider ) ;
738
+ grid = fixtureSync ( `
739
+ <vaadin-grid size="100" style="height: 300px">
740
+ <vaadin-grid-column></vaadin-grid-column>
741
+ </vaadin-grid>
742
+ ` ) ;
743
+ const column = grid . querySelector ( 'vaadin-grid-column' ) ;
744
+ column . headerRenderer = ( root ) => {
745
+ root . textContent = 'Header' ;
746
+ } ;
747
+ column . renderer = ( root , _col , model ) => {
748
+ root . textContent = model . item . value ;
749
+ } ;
750
+ grid . dataProvider = sinon . spy ( infiniteDataProvider ) ;
788
751
flushGrid ( grid ) ;
789
752
} ) ;
790
753
791
754
it ( 'should call dataProvider for first page' , async ( ) => {
792
- container . dataProvider . resetHistory ( ) ;
755
+ grid . dataProvider . resetHistory ( ) ;
793
756
grid . pageSize = 100 ;
794
757
await aTimeout ( loadDebounceTime ) ;
795
- expect ( container . dataProvider . callCount ) . to . eql ( 1 ) ;
796
- expect ( container . dataProvider . firstCall . args [ 0 ] . page ) . to . eql ( 0 ) ;
758
+ expect ( grid . dataProvider . callCount ) . to . eql ( 1 ) ;
759
+ expect ( grid . dataProvider . firstCall . args [ 0 ] . page ) . to . eql ( 0 ) ;
797
760
} ) ;
798
761
799
762
it ( 'should call dataProvider multiple times to load all items' , async ( ) => {
800
- container . dataProvider . resetHistory ( ) ;
763
+ grid . dataProvider . resetHistory ( ) ;
801
764
grid . style . fontSize = '12px' ;
802
765
grid . pageSize = 5 ;
803
766
flushGrid ( grid ) ;
804
767
await aTimeout ( loadDebounceTime ) ;
805
768
// Assuming grid has about 18 items
806
- expect ( container . dataProvider . callCount ) . to . be . above ( 2 ) ;
807
- for ( let i = 0 ; i < container . dataProvider . callCount ; i ++ ) {
808
- expect ( container . dataProvider . getCall ( i ) . args [ 0 ] . page ) . to . eql ( i ) ;
769
+ expect ( grid . dataProvider . callCount ) . to . be . above ( 2 ) ;
770
+ for ( let i = 0 ; i < grid . dataProvider . callCount ; i ++ ) {
771
+ expect ( grid . dataProvider . getCall ( i ) . args [ 0 ] . page ) . to . eql ( i ) ;
809
772
}
810
773
} ) ;
811
774
812
775
it ( 'should always load visible items' , async ( ) => {
813
776
grid . pageSize = 10 ;
814
777
await aTimeout ( loadDebounceTime ) ;
815
- container . dataProvider . resetHistory ( ) ;
778
+ grid . dataProvider . resetHistory ( ) ;
816
779
await simulateScrollToEnd ( grid ) ;
817
780
await aTimeout ( loadDebounceTime ) ;
818
781
// 9 is last page out of 100 items / 10 per page.
819
- const pages = container . dataProvider . getCalls ( ) . map ( ( call ) => call . args [ 0 ] . page ) ;
782
+ const pages = grid . dataProvider . getCalls ( ) . map ( ( call ) => call . args [ 0 ] . page ) ;
820
783
expect ( pages ) . to . contain . members ( [ 7 , 8 , 9 ] ) ;
821
784
} ) ;
822
785
@@ -825,36 +788,36 @@ describe('wrapped grid', () => {
825
788
// Wait first to initially load first pages.
826
789
await aTimeout ( loadDebounceTime ) ;
827
790
await simulateScrollToEnd ( grid ) ;
828
- container . dataProvider . resetHistory ( ) ;
791
+ grid . dataProvider . resetHistory ( ) ;
829
792
await simulateScrollToStart ( grid ) ;
830
793
await aTimeout ( loadDebounceTime ) ;
831
- const pages = container . dataProvider . getCalls ( ) . map ( ( call ) => call . args [ 0 ] . page ) ;
794
+ const pages = grid . dataProvider . getCalls ( ) . map ( ( call ) => call . args [ 0 ] . page ) ;
832
795
expect ( pages ) . not . to . contain ( 0 ) ;
833
796
} ) ;
834
797
835
- it ( 'should bind item to templates ' , ( ) => {
836
- container . dataProvider = infiniteDataProvider ;
798
+ it ( 'should render cell content elements ' , ( ) => {
799
+ grid . dataProvider = infiniteDataProvider ;
837
800
expect ( getCellContent ( getFirstCell ( grid ) ) . textContent . trim ( ) ) . to . equal ( 'foo0' ) ;
838
801
} ) ;
839
802
840
803
it ( 'should clear item cache' , async ( ) => {
841
- container . dataProvider = sinon . spy ( infiniteDataProvider ) ;
804
+ grid . dataProvider = sinon . spy ( infiniteDataProvider ) ;
842
805
await aTimeout ( loadDebounceTime * 2 ) ;
843
- expect ( container . dataProvider . called ) . to . be . true ;
806
+ expect ( grid . dataProvider . called ) . to . be . true ;
844
807
const oldFirstItem = getItemForIndex ( 0 ) ;
845
808
expect ( oldFirstItem ) . to . be . ok ;
846
- container . dataProvider . resetHistory ( ) ;
809
+ grid . dataProvider . resetHistory ( ) ;
847
810
grid . clearCache ( ) ;
848
811
await aTimeout ( loadDebounceTime * 2 ) ;
849
- expect ( container . dataProvider . called ) . to . be . true ;
812
+ expect ( grid . dataProvider . called ) . to . be . true ;
850
813
expect ( getItemForIndex ( 0 ) ) . to . be . ok ;
851
814
expect ( getItemForIndex ( 0 ) ) . not . to . equal ( oldFirstItem ) ;
852
815
} ) ;
853
816
854
817
it ( 'should update sub properties on clearCache' , ( ) => {
855
818
const data = [ { value : 'foo' } ] ;
856
819
grid . size = 1 ;
857
- container . dataProvider = ( _ , cb ) => cb ( data ) ;
820
+ grid . dataProvider = ( _ , cb ) => cb ( data ) ;
858
821
expect ( getCellContent ( getFirstCell ( grid ) ) . textContent . trim ( ) ) . to . equal ( 'foo' ) ;
859
822
data [ 0 ] . value = 'bar' ;
860
823
grid . clearCache ( ) ;
@@ -873,14 +836,14 @@ describe('wrapped grid', () => {
873
836
} ) ;
874
837
875
838
it ( 'should be in loading state when dataProvider changes' , ( ) => {
876
- container . dataProvider = ( ) => { } ;
839
+ grid . dataProvider = ( ) => { } ;
877
840
expect ( grid . loading ) . to . be . true ;
878
841
} ) ;
879
842
880
843
it ( 'should be in loading state when fetching new data' , ( done ) => {
881
844
let raf ;
882
845
883
- container . dataProvider = ( params , callback ) => {
846
+ grid . dataProvider = ( params , callback ) => {
884
847
expect ( grid . loading ) . to . be . true ;
885
848
callback ( Array ( params . pageSize ) ) ;
886
849
expect ( grid . loading ) . not . to . be . true ;
@@ -900,7 +863,7 @@ describe('wrapped grid', () => {
900
863
901
864
it ( 'should be in loading state when cache is cleared' , ( ) => {
902
865
let cb ;
903
- container . dataProvider = ( _ , callback ) => {
866
+ grid . dataProvider = ( _ , callback ) => {
904
867
cb = callback ;
905
868
} ;
906
869
cb ( Array ( 25 ) ) ;
@@ -910,27 +873,27 @@ describe('wrapped grid', () => {
910
873
} ) ;
911
874
912
875
it ( 'should set loading attribute to rows' , ( ) => {
913
- container . dataProvider = ( ) => { } ;
876
+ grid . dataProvider = ( ) => { } ;
914
877
expect ( getRows ( grid . $ . items ) [ 0 ] . hasAttribute ( 'loading' ) ) . to . be . true ;
915
878
} ) ;
916
879
917
880
it ( 'should add loading to cells part attribute' , ( ) => {
918
- container . dataProvider = ( ) => { } ;
881
+ grid . dataProvider = ( ) => { } ;
919
882
const row = getRows ( grid . $ . items ) [ 0 ] ;
920
883
getRowCells ( row ) . forEach ( ( cell ) => {
921
884
expect ( cell . getAttribute ( 'part' ) ) . to . contain ( 'loading-row-cell' ) ;
922
885
} ) ;
923
886
} ) ;
924
887
925
888
it ( 'should clear loading attribute from rows when data received' , ( ) => {
926
- container . dataProvider = ( _ , callback ) => {
889
+ grid . dataProvider = ( _ , callback ) => {
927
890
callback ( [ { } ] ) ;
928
891
} ;
929
892
expect ( getRows ( grid . $ . items ) [ 0 ] . hasAttribute ( 'loading' ) ) . to . be . false ;
930
893
} ) ;
931
894
932
895
it ( 'should remove loading from cells part attribute when data received' , ( ) => {
933
- container . dataProvider = ( _ , callback ) => {
896
+ grid . dataProvider = ( _ , callback ) => {
934
897
callback ( [ { } ] ) ;
935
898
} ;
936
899
const row = getRows ( grid . $ . items ) [ 0 ] ;
@@ -941,7 +904,7 @@ describe('wrapped grid', () => {
941
904
942
905
it ( 'should clear loading attribute from rows when scrolled to previously loaded rows' , ( ) => {
943
906
grid . pageSize = 1 ;
944
- container . dataProvider = ( params , callback ) => {
907
+ grid . dataProvider = ( params , callback ) => {
945
908
if ( params . page === 0 ) {
946
909
callback ( [ { value : 'loaded' } ] ) ;
947
910
}
0 commit comments