@@ -25,8 +25,109 @@ describe('WithinViewport()(Component)', () => {
2525 } )
2626
2727 describe ( 'when composing with a custom transform function' , ( ) => {
28+ const Decorated = WithinViewport ( { transform : ( v ) => ( { insideViewport : v } ) } ) ( Header )
29+
30+ beforeEach ( ( ) => { subject = mount ( < Decorated title = { 'My title' } /> ) } )
31+
32+ it ( 'injects property insideViewport' , ( ) => {
33+ expect ( subject . find ( Header ) . prop ( 'insideViewport' ) ) . not . toBeUndefined ( )
34+ } )
2835 } )
2936
30- describe ( 'when composing with a different default value' , ( ) => {
37+ describe ( 'when composing with a diferent default value' , ( ) => {
38+ const Decorated = WithinViewport ( { defaultAnswer : false } ) ( Header )
39+
40+ beforeEach ( ( ) => {
41+ subject = mount ( < Decorated title = { 'My title' } /> )
42+ subject . setState ( { updated : false } )
43+ } )
44+
45+ it ( 'changes the default answer' , ( ) => {
46+ expect ( subject . find ( Header ) . prop ( 'inViewport' ) ) . toBe ( false )
47+ } )
48+ } )
49+
50+ describe ( 'when composed is smaller than viewport' , ( ) => {
51+ describe ( 'and inside viewport' , ( ) => {
52+ const Decorated = WithinViewport ( {
53+ getHeight : ( ) => 20 ,
54+ getWidth : ( ) => 20 ,
55+ getTop : ( ) => 0 ,
56+ getLeft : ( ) => 0 ,
57+ getViewportHeight : ( ) => 200 ,
58+ getViewportWidth : ( ) => 200 ,
59+ } ) ( Header )
60+ beforeEach ( ( ) => { subject = mount ( < Decorated title = { 'My title' } /> ) } )
61+
62+ it ( 'flags inViewport true' , ( ) => {
63+ expect ( subject . find ( Header ) . prop ( 'inViewport' ) ) . toBe ( true )
64+ } )
65+ } )
66+
67+ describe ( 'and outside (top left) of viewport' , ( ) => {
68+ const Decorated = WithinViewport ( {
69+ getHeight : ( ) => 20 ,
70+ getWidth : ( ) => 20 ,
71+ getTop : ( ) => - 30 ,
72+ getLeft : ( ) => - 30 ,
73+ getViewportHeight : ( ) => 200 ,
74+ getViewportWidth : ( ) => 200 ,
75+ } ) ( Header )
76+ beforeEach ( ( ) => { subject = mount ( < Decorated title = { 'My title' } /> ) } )
77+
78+ it ( 'flags inViewport false' , ( ) => {
79+ expect ( subject . find ( Header ) . prop ( 'inViewport' ) ) . toBe ( false )
80+ } )
81+ } )
82+
83+ describe ( 'and outside (far right) of viewport' , ( ) => {
84+ const Decorated = WithinViewport ( {
85+ getHeight : ( ) => 20 ,
86+ getWidth : ( ) => 20 ,
87+ getTop : ( ) => 0 ,
88+ getLeft : ( ) => 300 ,
89+ getViewportHeight : ( ) => 200 ,
90+ getViewportWidth : ( ) => 200 ,
91+ } ) ( Header )
92+ beforeEach ( ( ) => { subject = mount ( < Decorated title = { 'My title' } /> ) } )
93+
94+ it ( 'flags inViewport false' , ( ) => {
95+ expect ( subject . find ( Header ) . prop ( 'inViewport' ) ) . toBe ( false )
96+ } )
97+ } )
98+
99+ describe ( 'and outside (far bottom) of viewport' , ( ) => {
100+ const Decorated = WithinViewport ( {
101+ getHeight : ( ) => 20 ,
102+ getWidth : ( ) => 20 ,
103+ getTop : ( ) => 300 ,
104+ getLeft : ( ) => 0 ,
105+ getViewportHeight : ( ) => 200 ,
106+ getViewportWidth : ( ) => 200 ,
107+ } ) ( Header )
108+ beforeEach ( ( ) => { subject = mount ( < Decorated title = { 'My title' } /> ) } )
109+
110+ it ( 'flags inViewport false' , ( ) => {
111+ expect ( subject . find ( Header ) . prop ( 'inViewport' ) ) . toBe ( false )
112+ } )
113+ } )
114+ } )
115+
116+ describe ( 'when composed is bigger than viewport' , ( ) => {
117+ describe ( 'and inside viewport' , ( ) => {
118+ const Decorated = WithinViewport ( {
119+ getHeight : ( ) => 300 ,
120+ getWidth : ( ) => 300 ,
121+ getTop : ( ) => - 50 ,
122+ getLeft : ( ) => - 50 ,
123+ getViewportHeight : ( ) => 200 ,
124+ getViewportWidth : ( ) => 200 ,
125+ } ) ( Header )
126+ beforeEach ( ( ) => { subject = mount ( < Decorated title = { 'My title' } /> ) } )
127+
128+ it ( 'flags inViewport true' , ( ) => {
129+ expect ( subject . find ( Header ) . prop ( 'inViewport' ) ) . toBe ( true )
130+ } )
131+ } )
31132 } )
32133} )
0 commit comments