cronex 0.7.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,8 @@ module Cronex
5
5
  describe ExpressionDescriptor do
6
6
 
7
7
  def desc(expression, opts = {})
8
- Cronex::ExpressionDescriptor.new(expression, opts, 'en').description
8
+ opts[:locale] = 'en'
9
+ Cronex::ExpressionDescriptor.new(expression, opts).description
9
10
  end
10
11
 
11
12
  let(:opts) { { zero_based_dow: false } }
@@ -375,7 +376,27 @@ module Cronex
375
376
  end
376
377
 
377
378
  it 'year increments' do
378
- expect(desc('0 0 0 1 MAR * 2010/5')).to eq('At 0:00 AM, on day 1 of the month, only in March, every 5 years, starting in 2010')
379
+ expect(desc('0 0 0 1 MAR * 2010/5')).to eq('At 12:00 AM, on day 1 of the month, only in March, every 5 years, starting in 2010')
380
+ end
381
+ end
382
+
383
+ context 'timezone' do
384
+ it 'minute span' do
385
+ tz = TZInfo::Timezone.get('America/Los_Angeles')
386
+ hour = tz.period_for_local(Time.now).zone_identifier.to_s == 'PDT' ? 4 : 3
387
+ expect(desc('0-10 11 * * *', timezone: 'America/Los_Angeles')).to eq("Every minute between #{hour}:00 AM and #{hour}:10 AM")
388
+ end
389
+
390
+ it 'twice a day' do
391
+ tz = TZInfo::Timezone.get('America/Los_Angeles')
392
+ hour = tz.period_for_local(Time.now).zone_identifier.to_s == 'PDT' ? 5 : 4
393
+ expect(desc('0 0,12 * * *', timezone: 'America/Los_Angeles')).to eq("At #{hour}:00 PM and #{hour}:00 AM")
394
+ end
395
+
396
+ it 'ahead of GMT' do
397
+ tz = TZInfo::Timezone.get('Europe/Vienna')
398
+ hour = tz.period_for_local(Time.now).zone_identifier.to_s == 'CEST' ? 1 : 12
399
+ expect(desc('0-10 11 * * *', timezone: 'Europe/Vienna')).to eq("Every minute between #{hour}:00 PM and #{hour}:10 PM")
379
400
  end
380
401
  end
381
402
  end
@@ -5,7 +5,8 @@ module Cronex
5
5
  describe ExpressionDescriptor do
6
6
 
7
7
  def desc(expression, opts = {})
8
- Cronex::ExpressionDescriptor.new(expression, opts, 'fr').description
8
+ opts[:locale] = 'fr'
9
+ Cronex::ExpressionDescriptor.new(expression, opts).description
9
10
  end
10
11
 
11
12
  let(:opts) { { zero_based_dow: false } }
@@ -375,7 +376,7 @@ module Cronex
375
376
  end
376
377
 
377
378
  it 'year increments' do
378
- expect(desc('0 0 0 1 MAR * 2010/5')).to eq('À 0:00 AM, le 1 de chaque mois, seulement en mars, tous les 5 ans, commence en 2010')
379
+ expect(desc('0 0 0 1 MAR * 2010/5')).to eq('À 12:00 AM, le 1 de chaque mois, seulement en mars, tous les 5 ans, commence en 2010')
379
380
  end
380
381
  end
381
382
  end
@@ -0,0 +1,383 @@
1
+ # encoding: utf-8
2
+ require 'cronex'
3
+
4
+ module Cronex
5
+ describe ExpressionDescriptor do
6
+
7
+ def desc(expression, opts = {})
8
+ opts[:locale] = 'it'
9
+ Cronex::ExpressionDescriptor.new(expression, opts).description
10
+ end
11
+
12
+ let(:opts) { { zero_based_dow: false } }
13
+
14
+ it 'every second' do
15
+ expect(desc('* * * * * *')).to eq('Ogni secondo')
16
+ end
17
+
18
+ it 'every 45 seconds' do
19
+ expect(desc('*/45 * * * * *')).to eq('Ogni 45 secondi')
20
+ end
21
+
22
+ it 'minute span' do
23
+ expect(desc('0-10 11 * * *')).to eq('Ogni minuto tra le 11:00 AM e le 11:10 AM')
24
+ end
25
+
26
+ context 'every minute' do
27
+ it 'every minute' do
28
+ expect(desc('* * * * *')).to eq('Ogni minuto')
29
+ end
30
+
31
+ it 'every minute */1' do
32
+ expect(desc('*/1 * * * *')).to eq('Ogni minuto')
33
+ end
34
+
35
+ it 'every minute 0 0/1' do
36
+ expect(desc('0 0/1 * * * ?')).to eq('Ogni minuto')
37
+ end
38
+ end
39
+
40
+ context 'every X minutes:' do
41
+ it 'every 5 minuti' do
42
+ expect(desc('*/5 * * * *')).to eq('Ogni 5 minuti')
43
+ end
44
+
45
+ it 'every 5 minute 0 */5' do
46
+ expect(desc('0 */5 * * * *')).to eq('Ogni 5 minuti')
47
+ end
48
+
49
+ it 'every 10 minutes 0 0/10' do
50
+ expect(desc('0 0/10 * * * ?')).to eq('Ogni 10 minuti')
51
+ end
52
+ end
53
+
54
+ context 'every hour:' do
55
+ it 'every hour 0 0' do
56
+ expect(desc('0 0 * * * ?')).to eq('Ogni ora')
57
+ end
58
+
59
+ it 'every hour 0 0 0/1' do
60
+ expect(desc('0 0 0/1 * * ?')).to eq('Ogni ora')
61
+ end
62
+ end
63
+
64
+ context 'daily:' do
65
+ it 'daily at /\d\d/:/\d\d/' do
66
+ expect(desc('30 11 * * *')).to eq('Alle(ai) 11:30 AM')
67
+ end
68
+
69
+ it 'daily at /\d/:/\d/' do
70
+ expect(desc('9 8 * * *')).to eq('Alle(ai) 8:09 AM')
71
+ end
72
+
73
+ it 'daily at /0[89]/:/0[89]/' do
74
+ expect(desc('09 08 * * *')).to eq('Alle(ai) 8:09 AM')
75
+ end
76
+
77
+ it 'daily at /0[1-7]/ /0[1-7/' do
78
+ expect(desc('02 01 * * *')).to eq('Alle(ai) 1:02 AM')
79
+ end
80
+ end
81
+
82
+ context 'time of day certain days of week:' do
83
+ it 'time of day on MON-FRI' do
84
+ expect(desc('0 23 ? * MON-FRI')).to eq('Alle(ai) 11:00 PM, da lunedì a venerdì')
85
+ end
86
+
87
+ it 'time of day on 1-5' do
88
+ expect(desc('30 11 * * 1-5')).to eq('Alle(ai) 11:30 AM, da lunedì a venerdì')
89
+ end
90
+ end
91
+
92
+ it 'one month only' do
93
+ expect(desc('* * * 3 *')).to eq('Ogni minuto, solo a(nel) marzo')
94
+ end
95
+
96
+ it 'two months only' do
97
+ expect(desc('* * * 3,6 *')).to eq('Ogni minuto, solo a(nel) marzo e giugno')
98
+ end
99
+
100
+ it 'two times each afternoon' do
101
+ expect(desc('30 14,16 * * *')).to eq('Alle(ai) 2:30 PM e 4:30 PM')
102
+ end
103
+
104
+ it 'three times daily' do
105
+ expect(desc('30 6,14,16 * * *')).to eq('Alle(ai) 6:30 AM, 2:30 PM e 4:30 PM')
106
+ end
107
+
108
+ context 'once a week:' do
109
+ it 'once a week 0' do
110
+ expect(desc('46 9 * * 0')).to eq('Alle(ai) 9:46 AM, solo di domenica')
111
+ end
112
+
113
+ it 'once a week SUN' do
114
+ expect(desc('46 9 * * SUN')).to eq('Alle(ai) 9:46 AM, solo di domenica')
115
+ end
116
+
117
+ it 'once a week 7' do
118
+ expect(desc('46 9 * * 7')).to eq('Alle(ai) 9:46 AM, solo di domenica')
119
+ end
120
+
121
+ it 'once a week 1' do
122
+ expect(desc('46 9 * * 1')).to eq('Alle(ai) 9:46 AM, solo di lunedì')
123
+ end
124
+
125
+ it 'once a week 6' do
126
+ expect(desc('46 9 * * 6')).to eq('Alle(ai) 9:46 AM, solo di sabato')
127
+ end
128
+ end
129
+
130
+ context 'once a week non zero based:' do
131
+ it 'once a week 1' do
132
+ expect(desc('46 9 * * 1', opts)).to eq('Alle(ai) 9:46 AM, solo di domenica')
133
+ end
134
+
135
+ it 'once a week SUN' do
136
+ expect(desc('46 9 * * SUN', opts)).to eq('Alle(ai) 9:46 AM, solo di domenica')
137
+ end
138
+
139
+ it 'once a week 2' do
140
+ expect(desc('46 9 * * 2', opts)).to eq('Alle(ai) 9:46 AM, solo di lunedì')
141
+ end
142
+
143
+ it 'once a week 7' do
144
+ expect(desc('46 9 * * 7', opts)).to eq('Alle(ai) 9:46 AM, solo di sabato')
145
+ end
146
+ end
147
+
148
+ context 'twice a week:' do
149
+ it 'twice a week 1,2' do
150
+ expect(desc('46 9 * * 1,2')).to eq('Alle(ai) 9:46 AM, solo di lunedì e martedì')
151
+ end
152
+
153
+ it 'twice a week MON,TUE' do
154
+ expect(desc('46 9 * * MON,TUE')).to eq('Alle(ai) 9:46 AM, solo di lunedì e martedì')
155
+ end
156
+
157
+ it 'twice a week 0,6' do
158
+ expect(desc('46 9 * * 0,6')).to eq('Alle(ai) 9:46 AM, solo di domenica e sabato')
159
+ end
160
+
161
+ it 'twice a week 6,7' do
162
+ expect(desc('46 9 * * 6,7')).to eq('Alle(ai) 9:46 AM, solo di sabato e domenica')
163
+ end
164
+ end
165
+
166
+ context 'twice a week non zero based:' do
167
+ it 'twice a week 1,2' do
168
+ expect(desc('46 9 * * 1,2', opts)).to eq('Alle(ai) 9:46 AM, solo di domenica e lunedì')
169
+ end
170
+
171
+ it 'twice a week SUN,MON' do
172
+ expect(desc('46 9 * * SUN,MON', opts)).to eq('Alle(ai) 9:46 AM, solo di domenica e lunedì')
173
+ end
174
+
175
+ it 'twice a week 6,7' do
176
+ expect(desc('46 9 * * 6,7', opts)).to eq('Alle(ai) 9:46 AM, solo di venerdì e sabato')
177
+ end
178
+ end
179
+
180
+ it 'day of month' do
181
+ expect(desc('23 12 15 * *')).to eq('Alle(ai) 12:23 PM, il giorno 15 del mese')
182
+ end
183
+
184
+ it 'day of month with day of week' do
185
+ expect(desc('23 12 15 * SUN')).to eq('Alle(ai) 12:23 PM, il giorno 15 del mese, solo di domenica')
186
+ end
187
+
188
+ it 'month name' do
189
+ expect(desc('23 12 * JAN *')).to eq('Alle(ai) 12:23 PM, solo a(nel) gennaio')
190
+ end
191
+
192
+ it 'day of month with question mark' do
193
+ expect(desc('23 12 ? JAN *')).to eq('Alle(ai) 12:23 PM, solo a(nel) gennaio')
194
+ end
195
+
196
+ it 'month name range 2' do
197
+ expect(desc('23 12 * JAN-FEB *')).to eq('Alle(ai) 12:23 PM, da gennaio a febbraio')
198
+ end
199
+
200
+ it 'month name range 3' do
201
+ expect(desc('23 12 * JAN-MAR *')).to eq('Alle(ai) 12:23 PM, da gennaio a marzo')
202
+ end
203
+
204
+ it 'day of week name' do
205
+ expect(desc('23 12 * * SUN')).to eq('Alle(ai) 12:23 PM, solo di domenica')
206
+ end
207
+
208
+ context 'day of week range:' do
209
+ it 'day of week range MON-FRI' do
210
+ expect(desc('*/5 15 * * MON-FRI')).to eq('Ogni 5 minuti, alle(ai) 3:00 PM, da lunedì a venerdì')
211
+ end
212
+
213
+ it 'day of week range 0-6' do
214
+ expect(desc('*/5 15 * * 0-6')).to eq('Ogni 5 minuti, alle(ai) 3:00 PM, da domenica a sabato')
215
+ end
216
+
217
+ it 'day of week range 6-7' do
218
+ expect(desc('*/5 15 * * 6-7')).to eq('Ogni 5 minuti, alle(ai) 3:00 PM, da sabato a domenica')
219
+ end
220
+ end
221
+
222
+ context 'day of week once in month:' do
223
+ it 'day of week once MON#3' do
224
+ expect(desc('* * * * MON#3')).to eq('Ogni minuto, il(la) terzo(a) lunedì del mese')
225
+ end
226
+
227
+ it 'day of week once 0#3' do
228
+ expect(desc('* * * * 0#3')).to eq('Ogni minuto, il(la) terzo(a) domenica del mese')
229
+ end
230
+ end
231
+
232
+ context 'last day of week del mese:' do
233
+ it 'last day of week 4L' do
234
+ expect(desc('* * * * 4L')).to eq('Ogni minuto, l\'ultimo(a) giovedì del mese')
235
+ end
236
+
237
+ it 'last day of week 0L' do
238
+ expect(desc('* * * * 0L')).to eq('Ogni minuto, l\'ultimo(a) domenica del mese')
239
+ end
240
+ end
241
+
242
+ it 'last day of the month' do
243
+ expect(desc('*/5 * L JAN *')).to eq('Ogni 5 minuti, l\'ultimo giorno del mese, solo a(nel) gennaio')
244
+ end
245
+
246
+ it 'time of day with seconds' do
247
+ expect(desc('30 02 14 * * *')).to eq('Alle(ai) 2:02:30 PM')
248
+ end
249
+
250
+ it 'second intervals' do
251
+ expect(desc('5-10 * * * * *')).to eq('Dal secondo 5 al 10 dopo il minuto')
252
+ end
253
+
254
+ it 'second minutes hours intervals' do
255
+ expect(desc('5-10 30-35 10-12 * * *')).to eq(
256
+ 'Dal secondo 5 al 10 dopo il minuto, dal minuto 30 al 35 dopo l\'ora, tra le 10:00 AM e le 12:59 PM')
257
+ end
258
+
259
+ it 'every 5 minutes at 30 seconds' do
260
+ expect(desc('30 */5 * * * *')).to eq('A 30 secondi dopo il minuto, ogni 5 minuti')
261
+ end
262
+
263
+ it 'minutes past the hour range' do
264
+ expect(desc('0 30 10-13 ? * WED,FRI')).to eq(
265
+ 'Alle(ai) 30 minuti dopo l\'ora, tra le 10:00 AM e le 1:59 PM, solo di mercoledì e venerdì')
266
+ end
267
+
268
+ it 'seconds past the minute interval' do
269
+ expect(desc('10 0/5 * * * ?')).to eq('A 10 secondi dopo il minuto, ogni 5 minuti')
270
+ end
271
+
272
+ it 'between with interval' do
273
+ expect(desc('2-59/3 1,9,22 11-26 1-6 ?')).to eq(
274
+ 'Ogni 3 minuti, dal minuto 02 al 59 dopo l\'ora, alle(ai) 1:00 AM, 9:00 AM e 10:00 PM, tra il giorno 11 e il giorno 26 del mese, da gennaio a giugno')
275
+ end
276
+
277
+ it 'recurring first of month' do
278
+ expect(desc('0 0 6 1/1 * ?')).to eq('Alle(ai) 6:00 AM')
279
+ end
280
+
281
+ it 'minutes past the hour' do
282
+ expect(desc('0 5 0/1 * * ?')).to eq('Alle(ai) 05 minuti dopo l\'ora')
283
+ end
284
+
285
+ it 'every past the hour' do
286
+ expect(desc('0 0,5,10,15,20,25,30,35,40,45,50,55 * ? * *')).to eq(
287
+ 'Alle(ai) 00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50 e 55 minuti dopo l\'ora')
288
+ end
289
+
290
+ it 'every x minute past the hour with interval' do
291
+ expect(desc('0 0-30/2 17 ? * MON-FRI')).to eq(
292
+ 'Ogni 2 minuti, dal minuto 00 al 30 dopo l\'ora, alle(ai) 5:00 PM, da lunedì a venerdì')
293
+ end
294
+
295
+ it 'one year only with seconds' do
296
+ expect(desc('* * * * * * 2013')).to eq('Ogni secondo, solo a(nel) 2013')
297
+ end
298
+
299
+ it 'one year only without seconds' do
300
+ expect(desc('* * * * * 2013')).to eq('Ogni minuto, solo a(nel) 2013')
301
+ end
302
+
303
+ it 'two years only' do
304
+ expect(desc('* * * * * 2013,2014')).to eq('Ogni minuto, solo a(nel) 2013 e 2014')
305
+ end
306
+
307
+ it 'year range 2' do
308
+ expect(desc('23 12 * JAN-FEB * 2013-2014')).to eq('Alle(ai) 12:23 PM, da gennaio a febbraio, da 2013 a 2014')
309
+ end
310
+
311
+ it 'year range 3' do
312
+ expect(desc('23 12 * JAN-MAR * 2013-2015')).to eq('Alle(ai) 12:23 PM, da gennaio a marzo, da 2013 a 2015')
313
+ end
314
+
315
+ context 'multi part range seconds:' do
316
+ it 'multi part range seconds 2,4-5' do
317
+ expect(desc('2,4-5 1 * * *')).to eq('Dal minuto 02,04 al 05 dopo l\'ora, alle(ai) 1:00 AM')
318
+ end
319
+
320
+ it 'multi part range seconds 2,26-28' do
321
+ expect(desc('2,26-28 18 * * *')).to eq('Dal minuto 02,26 al 28 dopo l\'ora, alle(ai) 6:00 PM')
322
+ end
323
+ end
324
+
325
+ context 'minutes past the hour:' do
326
+ it 'minutes past the hour 5,10' do
327
+ expect(desc('5,10 0 * * *')).to eq('Alle(ai) 05 e 10 minuti dopo l\'ora')
328
+ end
329
+
330
+ it 'minutes past the hour 5,10 day 2' do
331
+ expect(desc('5,10 0 2 * *')).to eq('Alle(ai) 05 e 10 minuti dopo l\'ora, il giorno 2 del mese')
332
+ end
333
+
334
+ it 'minutes past the hour 5/10 day 2' do
335
+ expect(desc('5/10 0 2 * *')).to eq('Ogni 10 minuti, a partire da alle(ai) 05 minuti dopo l\'ora, il giorno 2 del mese')
336
+ end
337
+ end
338
+
339
+ context 'seconds past the minute:' do
340
+ it 'seconds past the minute 5,6' do
341
+ expect(desc('5,6 0 0 * * *')).to eq('A 5 e 6 secondi dopo il minuto')
342
+ end
343
+
344
+ it 'seconds past the minute 5,6 at 1' do
345
+ expect(desc('5,6 0 1 * * *')).to eq('A 5 e 6 secondi dopo il minuto, alle(ai) 1:00 AM')
346
+ end
347
+
348
+ it 'seconds past the minute 5,6 day 2' do
349
+ expect(desc('5,6 0 0 2 * *')).to eq('A 5 e 6 secondi dopo il minuto, il giorno 2 del mese')
350
+ end
351
+ end
352
+
353
+ context 'increments starting at X > 1:' do
354
+ it 'second increments' do
355
+ expect(desc('5/15 0 * * * *')).to eq('Ogni 15 secondi, a partire da a 5 secondi dopo il minuto')
356
+ end
357
+
358
+ it 'minute increments' do
359
+ expect(desc('30/10 * * * *')).to eq('Ogni 10 minuti, a partire da alle(ai) 30 minuti dopo l\'ora')
360
+ end
361
+
362
+ it 'hour increments' do
363
+ expect(desc('0 30 2/6 * * ?')).to eq('Alle(ai) 30 minuti dopo l\'ora, ogni 6 ore, a partire da alle(ai) 2:00 AM')
364
+ end
365
+
366
+ it 'day of month increments' do
367
+ expect(desc('0 30 8 2/7 * *')).to eq('Alle(ai) 8:30 AM, ogni 7 giorni, a partire da il giorno 2 del mese')
368
+ end
369
+
370
+ it 'day of week increments' do
371
+ expect(desc('0 30 11 * * 2/2')).to eq('Alle(ai) 11:30 AM, 2 giorni alla settimana, a partire da il martedì')
372
+ end
373
+
374
+ it 'month increments' do
375
+ expect(desc('0 20 10 * 2/3 THU')).to eq('Alle(ai) 10:20 AM, solo di giovedì, ogni 3 mesi, a partire da febbraio')
376
+ end
377
+
378
+ it 'year increments' do
379
+ expect(desc('0 0 0 1 MAR * 2010/5')).to eq('Alle(ai) 12:00 AM, il giorno 1 del mese, solo a(nel) marzo, ogni 5 anni, a partire da 2010')
380
+ end
381
+ end
382
+ end
383
+ end
@@ -5,7 +5,8 @@ module Cronex
5
5
  describe ExpressionDescriptor do
6
6
 
7
7
  def desc(expression, opts = {})
8
- Cronex::ExpressionDescriptor.new(expression, opts, 'pt_BR').description
8
+ opts[:locale] = 'pt_BR'
9
+ Cronex::ExpressionDescriptor.new(expression, opts).description
9
10
  end
10
11
 
11
12
  let(:opts) { { zero_based_dow: false } }
@@ -375,7 +376,7 @@ module Cronex
375
376
  end
376
377
 
377
378
  it 'year increments' do
378
- expect(desc('0 0 0 1 MAR * 2010/5')).to eq('Às 0:00 AM, no dia 1 do mês, em março, a cada 5 anos, iniciando em 2010')
379
+ expect(desc('0 0 0 1 MAR * 2010/5')).to eq('Às 12:00 AM, no dia 1 do mês, em março, a cada 5 anos, iniciando em 2010')
379
380
  end
380
381
  end
381
382
  end