@@ -102,26 +102,97 @@ const tiers5 = [
102102
103103test ( 'Price For Volume' , ( ) => {
104104 expect ( pricesForUsageOnTier ( 0 , tiers1 , 'volume' ) ) . toEqual ( { EUR : 0 } ) ;
105- expect ( pricesForUsageOnTier ( 2 , tiers1 , 'volume' ) ) . toEqual ( { EUR : 500 } ) ;
106- expect ( pricesForUsageOnTier ( 3 , tiers1 , 'volume' ) ) . toEqual ( { EUR : 750 } ) ;
107- expect ( pricesForUsageOnTier ( 20 , tiers1 , 'volume' ) ) . toEqual ( { EUR : 400 } ) ;
108- expect ( pricesForUsageOnTier ( 40 , tiers1 , 'volume' ) ) . toEqual ( { EUR : 800 } ) ;
109-
105+ expect ( pricesForUsageOnTier ( 2 , tiers1 , 'volume' ) ) . toEqual ( { EUR : 0 } ) ; // 2 are still free
106+ expect ( pricesForUsageOnTier ( 3 , tiers1 , 'volume' ) ) . toEqual ( { EUR : 250 } ) ; // we pay for 1
107+ expect ( pricesForUsageOnTier ( 20 , tiers1 , 'volume' ) ) . toEqual ( { EUR : 360 } ) ; // 20$ bracket but 2 free
108+ expect ( pricesForUsageOnTier ( 40 , tiers1 , 'volume' ) ) . toEqual ( { EUR : 760 } ) ; // 20$ bracket but 2 free
110109 expect ( pricesForUsageOnTier ( 3 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 0 } ) ;
111110 expect ( pricesForUsageOnTier ( 14 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 0 } ) ;
112- expect ( pricesForUsageOnTier ( 15 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 7500 } ) ;
113- expect ( pricesForUsageOnTier ( 16 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 8000 } ) ;
114- expect ( pricesForUsageOnTier ( 30 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 9000 } ) ;
115- expect ( pricesForUsageOnTier ( 31 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 9300 } ) ;
116- expect ( pricesForUsageOnTier ( 40 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 4000 } ) ;
117- expect ( pricesForUsageOnTier ( 41 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 4100 } ) ;
118- expect ( pricesForUsageOnTier ( 131 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 13100 } ) ;
111+ expect ( pricesForUsageOnTier ( 15 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 0 } ) ;
112+ expect ( pricesForUsageOnTier ( 16 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 500 } ) ;
113+ expect ( pricesForUsageOnTier ( 30 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 4500 } ) ;
114+ expect ( pricesForUsageOnTier ( 31 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 4800 } ) ;
115+ expect ( pricesForUsageOnTier ( 40 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 2500 } ) ;
116+ expect ( pricesForUsageOnTier ( 41 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 2600 } ) ;
117+ expect ( pricesForUsageOnTier ( 131 , tiers2 , 'volume' ) ) . toEqual ( { EUR : 11600 } ) ;
119118} ) ;
120119
121- test ( 'Price For Graduated' , ( ) => {
120+ test . only ( 'Price For Graduated' , ( ) => {
122121 expect ( pricesForUsageOnTier ( 4 , tiers3 , 'graduated' ) ) . toEqual ( { EUR : 19 } ) ;
123- expect ( pricesForUsageOnTier ( 211 , tiers3 , 'graduated' ) ) . toEqual ( { EUR : 368 } ) ;
122+ expect ( pricesForUsageOnTier ( 211 , tiers3 , 'graduated' ) ) . toEqual ( { EUR : 304 } ) ;
124123 expect ( pricesForUsageOnTier ( 14 , tiers4 , 'graduated' ) ) . toEqual ( { EUR : 0 } ) ;
125124 expect ( pricesForUsageOnTier ( 15 , tiers5 , 'graduated' ) ) . toEqual ( { EUR : 0 } ) ;
126- expect ( pricesForUsageOnTier ( 25 , tiers5 , 'graduated' ) ) . toEqual ( { EUR : 2 } ) ;
125+ expect ( pricesForUsageOnTier ( 25 , tiers5 , 'graduated' ) ) . toEqual ( { EUR : 0 } ) ;
126+ expect ( pricesForUsageOnTier ( 26 , tiers5 , 'graduated' ) ) . toEqual ( { EUR : 2 } ) ;
127+ } ) ;
128+
129+ test ( 'Test 3/21/2024 - with existing minimum' , ( ) => {
130+ const tiers = [
131+ {
132+ threshold : 0 ,
133+ price : 0 ,
134+ currency : 'EUR' ,
135+ } ,
136+ {
137+ threshold : 10 ,
138+ price : 5 ,
139+ currency : 'EUR' ,
140+ } ,
141+ {
142+ threshold : 30 ,
143+ price : 3 ,
144+ currency : 'EUR' ,
145+ } ,
146+ ] ;
147+ expect ( pricesForUsageOnTier ( 42 , tiers , 'graduated' ) ) . toEqual ( { EUR : 136 } ) ;
148+ expect ( pricesForUsageOnTier ( 42 , tiers , 'volume' ) ) . toEqual ( { EUR : 96 } ) ;
149+ } ) ;
150+
151+ test ( 'Test 3/21/2024 - without existing minimum' , ( ) => {
152+ const tiers = [
153+ {
154+ threshold : 10 ,
155+ price : 5 ,
156+ currency : 'EUR' ,
157+ } ,
158+ {
159+ threshold : 30 ,
160+ price : 3 ,
161+ currency : 'EUR' ,
162+ } ,
163+ ] ;
164+ expect ( pricesForUsageOnTier ( 42 , tiers , 'graduated' ) ) . toEqual ( { EUR : 136 } ) ;
165+ expect ( pricesForUsageOnTier ( 42 , tiers , 'volume' ) ) . toEqual ( { EUR : 96 } ) ;
166+ } ) ;
167+
168+ test ( 'Test 3/21/2024 - with many free tiers and existing minimum' , ( ) => {
169+ const tiers = [
170+ {
171+ threshold : 0 ,
172+ price : 0 ,
173+ currency : 'EUR' ,
174+ } ,
175+ {
176+ threshold : 2 ,
177+ price : 0 ,
178+ currency : 'EUR' ,
179+ } ,
180+ {
181+ threshold : 8 ,
182+ price : 0 ,
183+ currency : 'EUR' ,
184+ } ,
185+ {
186+ threshold : 10 ,
187+ price : 5 ,
188+ currency : 'EUR' ,
189+ } ,
190+ {
191+ threshold : 30 ,
192+ price : 3 ,
193+ currency : 'EUR' ,
194+ } ,
195+ ] ;
196+ expect ( pricesForUsageOnTier ( 42 , tiers , 'graduated' ) ) . toEqual ( { EUR : 136 } ) ;
197+ expect ( pricesForUsageOnTier ( 42 , tiers , 'volume' ) ) . toEqual ( { EUR : 96 } ) ;
127198} ) ;
0 commit comments