11import _ from 'lodash' ;
2- import uut from '../Packer' ;
2+ import * as uut from '../Packer' ;
33
44describe ( 'Timeline Packer utils' , ( ) => {
55 const events = [
@@ -23,29 +23,34 @@ describe('Timeline Packer utils', () => {
2323 }
2424 ] ;
2525 it ( 'should sort events by start and end times' , ( ) => {
26- const packedEvents = uut ( events , { screenWidth : 300 , dayStart : 0 } ) ;
26+ const packedEvents = uut . populateEvents ( events , { screenWidth : 300 , dayStart : 0 } ) ;
2727 expect ( packedEvents [ 0 ] . id ) . toBe ( 'event_1' ) ;
2828 expect ( packedEvents [ 1 ] . id ) . toBe ( 'event_3' ) ;
2929 expect ( packedEvents [ 2 ] . id ) . toBe ( 'event_2' ) ;
3030 } ) ;
3131
3232 describe ( 'should set events block size' , ( ) => {
3333 it ( 'should set event block height based on their duration' , ( ) => {
34- const packedEvents = uut ( events , { screenWidth : 300 , dayStart : 0 } ) ;
34+ const packedEvents = uut . populateEvents ( events , { screenWidth : 300 , dayStart : 0 } ) ;
3535 expect ( packedEvents [ 0 ] . height ) . toBe ( 100 ) ; // event 1
3636 expect ( packedEvents [ 1 ] . height ) . toBeCloseTo ( 108.333 ) ; // event 3
3737 expect ( packedEvents [ 2 ] . height ) . toBe ( 50 ) ; // event 2
3838 } ) ;
3939
4040 it ( 'should set event block width based on overlaps of 3 events' , ( ) => {
41- const packedEvents = uut ( events , { screenWidth : 310 , dayStart : 0 , rightEdgeSpacing : 10 , overlapEventsSpacing : 10 } ) ;
41+ const packedEvents = uut . populateEvents ( events , {
42+ screenWidth : 310 ,
43+ dayStart : 0 ,
44+ rightEdgeSpacing : 10 ,
45+ overlapEventsSpacing : 10
46+ } ) ;
4247 expect ( packedEvents [ 0 ] . width ) . toBe ( 90 ) ; // event 1
4348 expect ( packedEvents [ 1 ] . width ) . toBe ( 90 ) ; // event 3
4449 expect ( packedEvents [ 2 ] . width ) . toBe ( 100 ) ; // event 2
4550 } ) ;
4651
4752 it ( 'should set event block width based on overlaps of 2 events' , ( ) => {
48- const packedEvents = uut ( [ events [ 0 ] , events [ 1 ] ] , {
53+ const packedEvents = uut . populateEvents ( [ events [ 0 ] , events [ 1 ] ] , {
4954 screenWidth : 300 ,
5055 dayStart : 0 ,
5156 overlapEventsSpacing : 10 ,
@@ -56,7 +61,7 @@ describe('Timeline Packer utils', () => {
5661 } ) ;
5762
5863 it ( 'should set event block width when there is not overlaps' , ( ) => {
59- const packedEvents = uut ( [ events [ 0 ] ] , { screenWidth : 300 , dayStart : 0 } ) ;
64+ const packedEvents = uut . populateEvents ( [ events [ 0 ] ] , { screenWidth : 300 , dayStart : 0 } ) ;
6065 expect ( packedEvents [ 0 ] . width ) . toBe ( 290 ) ; // event 1
6166 } ) ;
6267
@@ -87,7 +92,11 @@ describe('Timeline Packer utils', () => {
8792 end : `2017-09-06 05:30:00`
8893 }
8994 ] ;
90- let packedEvents = uut ( overlappingEvents , { screenWidth : 310 , dayStart : 0 , overlapEventsSpacing : 4 } ) ;
95+ let packedEvents = uut . populateEvents ( overlappingEvents , {
96+ screenWidth : 310 ,
97+ dayStart : 0 ,
98+ overlapEventsSpacing : 4
99+ } ) ;
91100 packedEvents = _ . sortBy ( packedEvents , 'index' ) ;
92101 expect ( packedEvents [ 0 ] . width ) . toBe ( 96 ) ;
93102 expect ( packedEvents [ 1 ] . width ) . toBe ( 96 ) ;
@@ -100,21 +109,26 @@ describe('Timeline Packer utils', () => {
100109
101110 describe ( 'should set events block position' , ( ) => {
102111 it ( 'should set top position base on the event start time' , ( ) => {
103- const packedEvents = uut ( events , { screenWidth : 300 , dayStart : 0 } ) ;
112+ const packedEvents = uut . populateEvents ( events , { screenWidth : 300 , dayStart : 0 } ) ;
104113 expect ( packedEvents [ 0 ] . top ) . toBe ( 150 ) ; // event 1
105114 expect ( packedEvents [ 1 ] . top ) . toBeCloseTo ( 191.666 ) ; // event 3
106115 expect ( packedEvents [ 2 ] . top ) . toBe ( 225 ) ; // event 2
107116 } ) ;
108117
109118 it ( 'should set left position base when the 3 events overlap' , ( ) => {
110- const packedEvents = uut ( events , { screenWidth : 300 , dayStart : 0 , overlapEventsSpacing : 10 , rightEdgeSpacing : 10 } ) ;
119+ const packedEvents = uut . populateEvents ( events , {
120+ screenWidth : 300 ,
121+ dayStart : 0 ,
122+ overlapEventsSpacing : 10 ,
123+ rightEdgeSpacing : 10
124+ } ) ;
111125 expect ( packedEvents [ 0 ] . left ) . toBe ( 0 ) ; // event 1
112126 expect ( packedEvents [ 1 ] . left ) . toBeCloseTo ( 96.666 ) ; // event 3
113127 expect ( packedEvents [ 2 ] . left ) . toBeCloseTo ( 193.333 ) ; // event 2
114128 } ) ;
115129
116130 it ( 'should set left position base when the 2 events overlap' , ( ) => {
117- const packedEvents = uut ( [ events [ 0 ] , events [ 1 ] ] , {
131+ const packedEvents = uut . populateEvents ( [ events [ 0 ] , events [ 1 ] ] , {
118132 screenWidth : 300 ,
119133 dayStart : 0 ,
120134 overlapEventsSpacing : 10 ,
@@ -124,4 +138,54 @@ describe('Timeline Packer utils', () => {
124138 expect ( packedEvents [ 1 ] . left ) . toBe ( 145 ) ; // event 3
125139 } ) ;
126140 } ) ;
141+
142+ describe ( 'buildUnavailableHoursBlocks' , ( ) => {
143+ it ( 'should build unavailable blocks with default options' , ( ) => {
144+ const blocks = uut . buildUnavailableHoursBlocks ( [
145+ { start : 0 , end : 9 } ,
146+ { start : 19 , end : 24 }
147+ ] ) ;
148+ expect ( blocks [ 0 ] ) . toEqual ( {
149+ top : 0 ,
150+ height : 900
151+ } ) ;
152+ expect ( blocks [ 1 ] ) . toEqual ( {
153+ top : 1900 ,
154+ height : 500
155+ } ) ;
156+ } ) ;
157+
158+ it ( 'should not return blocks for invalid hours' , ( ) => {
159+ const blocks = uut . buildUnavailableHoursBlocks ( [
160+ { start : - 2 , end : 7 } ,
161+ { start : 3 , end : 7 } ,
162+ { start : 22 , end : 25 }
163+ ] ) ;
164+
165+ expect ( blocks . length ) . toBe ( 1 ) ;
166+ expect ( blocks [ 0 ] ) . toEqual ( {
167+ top : 300 ,
168+ height : 400
169+ } ) ;
170+ } ) ;
171+
172+ it ( 'should handle different start/end day hours' , ( ) => {
173+ const blocks = uut . buildUnavailableHoursBlocks (
174+ [
175+ { start : 0 , end : 9 } ,
176+ { start : 19 , end : 24 }
177+ ] ,
178+ { dayStart : 8 , dayEnd : 20 }
179+ ) ;
180+
181+ expect ( blocks [ 0 ] ) . toEqual ( {
182+ top : 0 ,
183+ height : 100
184+ } ) ;
185+ expect ( blocks [ 1 ] ) . toEqual ( {
186+ top : 1100 ,
187+ height : 100
188+ } ) ;
189+ } ) ;
190+ } ) ;
127191} ) ;
0 commit comments