cronex 0.5.0 → 0.6.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.
@@ -0,0 +1,382 @@
1
+ # encoding: utf-8
2
+ require 'cronex'
3
+
4
+ module Cronex
5
+ describe ExpressionDescriptor do
6
+
7
+ def desc(expression, opts = {})
8
+ Cronex::ExpressionDescriptor.new(expression, opts, 'ro').description
9
+ end
10
+
11
+ let(:opts) { { zero_based_dow: false } }
12
+
13
+ it 'every second' do
14
+ expect(desc('* * * * * *')).to eq('În fiecare secundă')
15
+ end
16
+
17
+ it 'every 45 seconds' do
18
+ expect(desc('*/45 * * * * *')).to eq('La fiecare 45 secunde')
19
+ end
20
+
21
+ it 'minute span' do
22
+ expect(desc('0-10 11 * * *')).to eq('În fiecare minut între 11:00 AM și 11:10 AM')
23
+ end
24
+
25
+ context 'every minute' do
26
+ it 'every minute' do
27
+ expect(desc('* * * * *')).to eq('În fiecare minut')
28
+ end
29
+
30
+ it 'every minute */1' do
31
+ expect(desc('*/1 * * * *')).to eq('În fiecare minut')
32
+ end
33
+
34
+ it 'every minute 0 0/1' do
35
+ expect(desc('0 0/1 * * * ?')).to eq('În fiecare minut')
36
+ end
37
+ end
38
+
39
+ context 'every X minutes:' do
40
+ it 'every 5 minutes' do
41
+ expect(desc('*/5 * * * *')).to eq('La fiecare 5 minute')
42
+ end
43
+
44
+ it 'every 5 minute 0 */5' do
45
+ expect(desc('0 */5 * * * *')).to eq('La fiecare 5 minute')
46
+ end
47
+
48
+ it 'every 10 minutes 0 0/10' do
49
+ expect(desc('0 0/10 * * * ?')).to eq('La fiecare 10 minute')
50
+ end
51
+ end
52
+
53
+ context 'every hour:' do
54
+ it 'every hour 0 0' do
55
+ expect(desc('0 0 * * * ?')).to eq('În fiecare oră')
56
+ end
57
+
58
+ it 'every hour 0 0 0/1' do
59
+ expect(desc('0 0 0/1 * * ?')).to eq('În fiecare oră')
60
+ end
61
+ end
62
+
63
+ context 'daily:' do
64
+ it 'daily at /\d\d/:/\d\d/' do
65
+ expect(desc('30 11 * * *')).to eq('La 11:30 AM')
66
+ end
67
+
68
+ it 'daily at /\d/:/\d/' do
69
+ expect(desc('9 8 * * *')).to eq('La 8:09 AM')
70
+ end
71
+
72
+ it 'daily at /0[89]/:/0[89]/' do
73
+ expect(desc('09 08 * * *')).to eq('La 8:09 AM')
74
+ end
75
+
76
+ it 'daily at /0[1-7]/ /0[1-7/' do
77
+ expect(desc('02 01 * * *')).to eq('La 1:02 AM')
78
+ end
79
+ end
80
+
81
+ context 'time of day certain days of week:' do
82
+ it 'time of day on MON-FRI' do
83
+ expect(desc('0 23 ? * MON-FRI')).to eq('La 11:00 PM, de luni până vineri')
84
+ end
85
+
86
+ it 'time of day on 1-5' do
87
+ expect(desc('30 11 * * 1-5')).to eq('La 11:30 AM, de luni până vineri')
88
+ end
89
+ end
90
+
91
+ it 'one month only' do
92
+ expect(desc('* * * 3 *')).to eq('În fiecare minut, numai în martie')
93
+ end
94
+
95
+ it 'two months only' do
96
+ expect(desc('* * * 3,6 *')).to eq('În fiecare minut, numai în martie și iunie')
97
+ end
98
+
99
+ it 'two times each afternoon' do
100
+ expect(desc('30 14,16 * * *')).to eq('La 2:30 PM și 4:30 PM')
101
+ end
102
+
103
+ it 'three times daily' do
104
+ expect(desc('30 6,14,16 * * *')).to eq('La 6:30 AM, 2:30 PM și 4:30 PM')
105
+ end
106
+
107
+ context 'once a week:' do
108
+ it 'once a week 0' do
109
+ expect(desc('46 9 * * 0')).to eq('La 9:46 AM, numai duminică')
110
+ end
111
+
112
+ it 'once a week SUN' do
113
+ expect(desc('46 9 * * SUN')).to eq('La 9:46 AM, numai duminică')
114
+ end
115
+
116
+ it 'once a week 7' do
117
+ expect(desc('46 9 * * 7')).to eq('La 9:46 AM, numai duminică')
118
+ end
119
+
120
+ it 'once a week 1' do
121
+ expect(desc('46 9 * * 1')).to eq('La 9:46 AM, numai luni')
122
+ end
123
+
124
+ it 'once a week 6' do
125
+ expect(desc('46 9 * * 6')).to eq('La 9:46 AM, numai sâmbătă')
126
+ end
127
+ end
128
+
129
+ context 'once a week non zero based:' do
130
+ it 'once a week 1' do
131
+ expect(desc('46 9 * * 1', opts)).to eq('La 9:46 AM, numai duminică')
132
+ end
133
+
134
+ it 'once a week SUN' do
135
+ expect(desc('46 9 * * SUN', opts)).to eq('La 9:46 AM, numai duminică')
136
+ end
137
+
138
+ it 'once a week 2' do
139
+ expect(desc('46 9 * * 2', opts)).to eq('La 9:46 AM, numai luni')
140
+ end
141
+
142
+ it 'once a week 7' do
143
+ expect(desc('46 9 * * 7', opts)).to eq('La 9:46 AM, numai sâmbătă')
144
+ end
145
+ end
146
+
147
+ context 'twice a week:' do
148
+ it 'twice a week 1,2' do
149
+ expect(desc('46 9 * * 1,2')).to eq('La 9:46 AM, numai luni și marți')
150
+ end
151
+
152
+ it 'twice a week MON,TUE' do
153
+ expect(desc('46 9 * * MON,TUE')).to eq('La 9:46 AM, numai luni și marți')
154
+ end
155
+
156
+ it 'twice a week 0,6' do
157
+ expect(desc('46 9 * * 0,6')).to eq('La 9:46 AM, numai duminică și sâmbătă')
158
+ end
159
+
160
+ it 'twice a week 6,7' do
161
+ expect(desc('46 9 * * 6,7')).to eq('La 9:46 AM, numai sâmbătă și duminică')
162
+ end
163
+ end
164
+
165
+ context 'twice a week non zero based:' do
166
+ it 'twice a week 1,2' do
167
+ expect(desc('46 9 * * 1,2', opts)).to eq('La 9:46 AM, numai duminică și luni')
168
+ end
169
+
170
+ it 'twice a week SUN,MON' do
171
+ expect(desc('46 9 * * SUN,MON', opts)).to eq('La 9:46 AM, numai duminică și luni')
172
+ end
173
+
174
+ it 'twice a week 6,7' do
175
+ expect(desc('46 9 * * 6,7', opts)).to eq('La 9:46 AM, numai vineri și sâmbătă')
176
+ end
177
+ end
178
+
179
+ it 'day of month' do
180
+ expect(desc('23 12 15 * *')).to eq('La 12:23 PM, în a 15-a zi a lunii')
181
+ end
182
+
183
+ it 'day of month ignores day of week' do
184
+ expect(desc('23 12 15 * SUN')).to eq('La 12:23 PM, în a 15-a zi a lunii')
185
+ end
186
+
187
+ it 'month name' do
188
+ expect(desc('23 12 * JAN *')).to eq('La 12:23 PM, numai în ianuarie')
189
+ end
190
+
191
+ it 'day of month with question mark' do
192
+ expect(desc('23 12 ? JAN *')).to eq('La 12:23 PM, numai în ianuarie')
193
+ end
194
+
195
+ it 'month name range 2' do
196
+ expect(desc('23 12 * JAN-FEB *')).to eq('La 12:23 PM, din ianuarie până în februarie')
197
+ end
198
+
199
+ it 'month name range 3' do
200
+ expect(desc('23 12 * JAN-MAR *')).to eq('La 12:23 PM, din ianuarie până în martie')
201
+ end
202
+
203
+ it 'day of week name' do
204
+ expect(desc('23 12 * * SUN')).to eq('La 12:23 PM, numai duminică')
205
+ end
206
+
207
+ context 'day of week range:' do
208
+ it 'day of week range MON-FRI' do
209
+ expect(desc('*/5 15 * * MON-FRI')).to eq('La fiecare 5 minute, la 3:00 PM, de luni până vineri')
210
+ end
211
+
212
+ it 'day of week range 0-6' do
213
+ expect(desc('*/5 15 * * 0-6')).to eq('La fiecare 5 minute, la 3:00 PM, de duminică până sâmbătă')
214
+ end
215
+
216
+ it 'day of week range 6-7' do
217
+ expect(desc('*/5 15 * * 6-7')).to eq('La fiecare 5 minute, la 3:00 PM, de sâmbătă până duminică')
218
+ end
219
+ end
220
+
221
+ context 'day of week once in month:' do
222
+ it 'day of week once MON#3' do
223
+ expect(desc('* * * * MON#3')).to eq('În fiecare minut, în a treia luni a lunii')
224
+ end
225
+
226
+ it 'day of week once 0#3' do
227
+ expect(desc('* * * * 0#3')).to eq('În fiecare minut, în a treia duminică a lunii')
228
+ end
229
+ end
230
+
231
+ context 'last day of week of the month:' do
232
+ it 'last day of week 4L' do
233
+ expect(desc('* * * * 4L')).to eq('În fiecare minut, în ultima joi din lună')
234
+ end
235
+
236
+ it 'last day of week 0L' do
237
+ expect(desc('* * * * 0L')).to eq('În fiecare minut, în ultima duminică din lună')
238
+ end
239
+ end
240
+
241
+ it 'last day of the month' do
242
+ expect(desc('*/5 * L JAN *')).to eq('La fiecare 5 minute, în ultima zi a lunii, numai în ianuarie')
243
+ end
244
+
245
+ it 'time of day with seconds' do
246
+ expect(desc('30 02 14 * * *')).to eq('La 2:02:30 PM')
247
+ end
248
+
249
+ it 'second intervals' do
250
+ expect(desc('5-10 * * * * *')).to eq('Între secundele 5 și 10')
251
+ end
252
+
253
+ it 'second minutes hours intervals' do
254
+ expect(desc('5-10 30-35 10-12 * * *')).to eq(
255
+ 'Între secundele 5 și 10, între minutele 30 și 35, între 10:00 AM și 12:59 PM')
256
+ end
257
+
258
+ it 'every 5 minutes at 30 seconds' do
259
+ expect(desc('30 */5 * * * *')).to eq('La secunda 30, la fiecare 5 minute')
260
+ end
261
+
262
+ it 'minutes past the hour range' do
263
+ expect(desc('0 30 10-13 ? * WED,FRI')).to eq(
264
+ 'La 30 minute în fiecare oră, între 10:00 AM și 1:59 PM, numai miercuri și vineri')
265
+ end
266
+
267
+ it 'seconds past the minute interval' do
268
+ expect(desc('10 0/5 * * * ?')).to eq('La secunda 10, la fiecare 5 minute')
269
+ end
270
+
271
+ it 'between with interval' do
272
+ expect(desc('2-59/3 1,9,22 11-26 1-6 ?')).to eq(
273
+ 'La fiecare 3 minute, între minutele 02 și 59, la 1:00 AM, 9:00 AM și 10:00 PM, între a 11-a și a 26-a zi a lunii, din ianuarie până în iunie')
274
+ end
275
+
276
+ it 'recurring first of month' do
277
+ expect(desc('0 0 6 1/1 * ?')).to eq('La 6:00 AM')
278
+ end
279
+
280
+ it 'minutes past the hour' do
281
+ expect(desc('0 5 0/1 * * ?')).to eq('La 05 minute în fiecare oră')
282
+ end
283
+
284
+ it 'every past the hour' do
285
+ expect(desc('0 0,5,10,15,20,25,30,35,40,45,50,55 * ? * *')).to eq(
286
+ 'La 00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50 și 55 minute în fiecare oră')
287
+ end
288
+
289
+ it 'every x minute past the hour with interval' do
290
+ expect(desc('0 0-30/2 17 ? * MON-FRI')).to eq(
291
+ 'La fiecare 2 minute, între minutele 00 și 30, la 5:00 PM, de luni până vineri')
292
+ end
293
+
294
+ it 'one year only with seconds' do
295
+ expect(desc('* * * * * * 2013')).to eq('În fiecare secundă, numai în 2013')
296
+ end
297
+
298
+ it 'one year only without seconds' do
299
+ expect(desc('* * * * * 2013')).to eq('În fiecare minut, numai în 2013')
300
+ end
301
+
302
+ it 'two years only' do
303
+ expect(desc('* * * * * 2013,2014')).to eq('În fiecare minut, numai în 2013 și 2014')
304
+ end
305
+
306
+ it 'year range 2' do
307
+ expect(desc('23 12 * JAN-FEB * 2013-2014')).to eq('La 12:23 PM, din ianuarie până în februarie, din 2013 până în 2014')
308
+ end
309
+
310
+ it 'year range 3' do
311
+ expect(desc('23 12 * JAN-MAR * 2013-2015')).to eq('La 12:23 PM, din ianuarie până în martie, din 2013 până în 2015')
312
+ end
313
+
314
+ context 'multi part range seconds:' do
315
+ it 'multi part range seconds 2,4-5' do
316
+ expect(desc('2,4-5 1 * * *')).to eq('Între minutele 02,04 și 05, la 1:00 AM')
317
+ end
318
+
319
+ it 'multi part range seconds 2,26-28' do
320
+ expect(desc('2,26-28 18 * * *')).to eq('Între minutele 02,26 și 28, la 6:00 PM')
321
+ end
322
+ end
323
+
324
+ context 'minutes past the hour:' do
325
+ it 'minutes past the hour 5,10' do
326
+ expect(desc('5,10 0 * * *')).to eq('La 05 și 10 minute în fiecare oră')
327
+ end
328
+
329
+ it 'minutes past the hour 5,10 day 2' do
330
+ expect(desc('5,10 0 2 * *')).to eq('La 05 și 10 minute în fiecare oră, în a 2-a zi a lunii')
331
+ end
332
+
333
+ it 'minutes past the hour 5/10 day 2' do
334
+ expect(desc('5/10 0 2 * *')).to eq('La fiecare 10 minute, pornire la 05 minute în fiecare oră, în a 2-a zi a lunii')
335
+ end
336
+ end
337
+
338
+ context 'seconds past the minute:' do
339
+ it 'seconds past the minute 5,6' do
340
+ expect(desc('5,6 0 0 * * *')).to eq('La secunda 5 și 6')
341
+ end
342
+
343
+ it 'seconds past the minute 5,6 at 1' do
344
+ expect(desc('5,6 0 1 * * *')).to eq('La secunda 5 și 6, la 1:00 AM')
345
+ end
346
+
347
+ it 'seconds past the minute 5,6 day 2' do
348
+ expect(desc('5,6 0 0 2 * *')).to eq('La secunda 5 și 6, în a 2-a zi a lunii')
349
+ end
350
+ end
351
+
352
+ context 'increments starting at X > 1:' do
353
+ it 'second increments' do
354
+ expect(desc('5/15 0 * * * *')).to eq('La fiecare 15 secunde, pornire la secunda 5')
355
+ end
356
+
357
+ it 'minute increments' do
358
+ expect(desc('30/10 * * * *')).to eq('La fiecare 10 minute, pornire la 30 minute în fiecare oră')
359
+ end
360
+
361
+ it 'hour increments' do
362
+ expect(desc('0 30 2/6 * * ?')).to eq('La 30 minute în fiecare oră, la fiecare 6 ore, pornire la 2:00 AM')
363
+ end
364
+
365
+ it 'day of month increments' do
366
+ expect(desc('0 30 8 2/7 * *')).to eq('La 8:30 AM, la fiecare 7 zile, pornire în a 2-a zi a lunii')
367
+ end
368
+
369
+ it 'day of week increments' do
370
+ expect(desc('0 30 11 * * 2/2')).to eq('La 11:30 AM, în fiecare 2 zile din săptămână, pornire de marți')
371
+ end
372
+
373
+ it 'month increments' do
374
+ expect(desc('0 20 10 * 2/3 THU')).to eq('La 10:20 AM, numai joi, la fiecare 3 luni, pornire în februarie')
375
+ end
376
+
377
+ it 'year increments' do
378
+ expect(desc('0 0 0 1 MAR * 2010/5')).to eq('La 0:00 AM, în a 1-a zi a lunii, numai în martie, la fiecare 5 ani, pornire în 2010')
379
+ end
380
+ end
381
+ end
382
+ end
@@ -0,0 +1,382 @@
1
+ # encoding: utf-8
2
+ require 'cronex'
3
+
4
+ module Cronex
5
+ describe ExpressionDescriptor do
6
+
7
+ def desc(expression, opts = {})
8
+ Cronex::ExpressionDescriptor.new(expression, opts, 'ru').description
9
+ end
10
+
11
+ let(:opts) { { zero_based_dow: false } }
12
+
13
+ it 'every second' do
14
+ expect(desc('* * * * * *')).to eq('Каждую секунду')
15
+ end
16
+
17
+ it 'every 45 seconds' do
18
+ expect(desc('*/45 * * * * *')).to eq('Каждые 45 секунд')
19
+ end
20
+
21
+ it 'minute span' do
22
+ expect(desc('0-10 11 * * *')).to eq('Каждую минуту с 11:00 AM по 11:10 AM')
23
+ end
24
+
25
+ context 'every minute' do
26
+ it 'every minute' do
27
+ expect(desc('* * * * *')).to eq('Каждую минуту')
28
+ end
29
+
30
+ it 'every minute */1' do
31
+ expect(desc('*/1 * * * *')).to eq('Каждую минуту')
32
+ end
33
+
34
+ it 'every minute 0 0/1' do
35
+ expect(desc('0 0/1 * * * ?')).to eq('Каждую минуту')
36
+ end
37
+ end
38
+
39
+ context 'every X minutes:' do
40
+ it 'every 5 minutes' do
41
+ expect(desc('*/5 * * * *')).to eq('Каждые 5 минут')
42
+ end
43
+
44
+ it 'every 5 minute 0 */5' do
45
+ expect(desc('0 */5 * * * *')).to eq('Каждые 5 минут')
46
+ end
47
+
48
+ it 'every 10 minutes 0 0/10' do
49
+ expect(desc('0 0/10 * * * ?')).to eq('Каждые 10 минут')
50
+ end
51
+ end
52
+
53
+ context 'every hour:' do
54
+ it 'every hour 0 0' do
55
+ expect(desc('0 0 * * * ?')).to eq('Каждый час')
56
+ end
57
+
58
+ it 'every hour 0 0 0/1' do
59
+ expect(desc('0 0 0/1 * * ?')).to eq('Каждый час')
60
+ end
61
+ end
62
+
63
+ context 'daily:' do
64
+ it 'daily at /\d\d/:/\d\d/' do
65
+ expect(desc('30 11 * * *')).to eq('В 11:30 AM')
66
+ end
67
+
68
+ it 'daily at /\d/:/\d/' do
69
+ expect(desc('9 8 * * *')).to eq('В 8:09 AM')
70
+ end
71
+
72
+ it 'daily at /0[89]/:/0[89]/' do
73
+ expect(desc('09 08 * * *')).to eq('В 8:09 AM')
74
+ end
75
+
76
+ it 'daily at /0[1-7]/ /0[1-7/' do
77
+ expect(desc('02 01 * * *')).to eq('В 1:02 AM')
78
+ end
79
+ end
80
+
81
+ context 'time of day certain days of week:' do
82
+ it 'time of day on MON-FRI' do
83
+ expect(desc('0 23 ? * MON-FRI')).to eq('В 11:00 PM, понедельник - пятница')
84
+ end
85
+
86
+ it 'time of day on 1-5' do
87
+ expect(desc('30 11 * * 1-5')).to eq('В 11:30 AM, понедельник - пятница')
88
+ end
89
+ end
90
+
91
+ it 'one month only' do
92
+ expect(desc('* * * 3 *')).to eq('Каждую минуту, только март')
93
+ end
94
+
95
+ it 'two months only' do
96
+ expect(desc('* * * 3,6 *')).to eq('Каждую минуту, только март и июнь')
97
+ end
98
+
99
+ it 'two times each afternoon' do
100
+ expect(desc('30 14,16 * * *')).to eq('В 2:30 PM и 4:30 PM')
101
+ end
102
+
103
+ it 'three times daily' do
104
+ expect(desc('30 6,14,16 * * *')).to eq('В 6:30 AM, 2:30 PM и 4:30 PM')
105
+ end
106
+
107
+ context 'once a week:' do
108
+ it 'once a week 0' do
109
+ expect(desc('46 9 * * 0')).to eq('В 9:46 AM, только воскресенье')
110
+ end
111
+
112
+ it 'once a week SUN' do
113
+ expect(desc('46 9 * * SUN')).to eq('В 9:46 AM, только воскресенье')
114
+ end
115
+
116
+ it 'once a week 7' do
117
+ expect(desc('46 9 * * 7')).to eq('В 9:46 AM, только воскресенье')
118
+ end
119
+
120
+ it 'once a week 1' do
121
+ expect(desc('46 9 * * 1')).to eq('В 9:46 AM, только понедельник')
122
+ end
123
+
124
+ it 'once a week 6' do
125
+ expect(desc('46 9 * * 6')).to eq('В 9:46 AM, только суббота')
126
+ end
127
+ end
128
+
129
+ context 'once a week non zero based:' do
130
+ it 'once a week 1' do
131
+ expect(desc('46 9 * * 1', opts)).to eq('В 9:46 AM, только воскресенье')
132
+ end
133
+
134
+ it 'once a week SUN' do
135
+ expect(desc('46 9 * * SUN', opts)).to eq('В 9:46 AM, только воскресенье')
136
+ end
137
+
138
+ it 'once a week 2' do
139
+ expect(desc('46 9 * * 2', opts)).to eq('В 9:46 AM, только понедельник')
140
+ end
141
+
142
+ it 'once a week 7' do
143
+ expect(desc('46 9 * * 7', opts)).to eq('В 9:46 AM, только суббота')
144
+ end
145
+ end
146
+
147
+ context 'twice a week:' do
148
+ it 'twice a week 1,2' do
149
+ expect(desc('46 9 * * 1,2')).to eq('В 9:46 AM, только понедельник и вторник')
150
+ end
151
+
152
+ it 'twice a week MON,TUE' do
153
+ expect(desc('46 9 * * MON,TUE')).to eq('В 9:46 AM, только понедельник и вторник')
154
+ end
155
+
156
+ it 'twice a week 0,6' do
157
+ expect(desc('46 9 * * 0,6')).to eq('В 9:46 AM, только воскресенье и суббота')
158
+ end
159
+
160
+ it 'twice a week 6,7' do
161
+ expect(desc('46 9 * * 6,7')).to eq('В 9:46 AM, только суббота и воскресенье')
162
+ end
163
+ end
164
+
165
+ context 'twice a week non zero based:' do
166
+ it 'twice a week 1,2' do
167
+ expect(desc('46 9 * * 1,2', opts)).to eq('В 9:46 AM, только воскресенье и понедельник')
168
+ end
169
+
170
+ it 'twice a week SUN,MON' do
171
+ expect(desc('46 9 * * SUN,MON', opts)).to eq('В 9:46 AM, только воскресенье и понедельник')
172
+ end
173
+
174
+ it 'twice a week 6,7' do
175
+ expect(desc('46 9 * * 6,7', opts)).to eq('В 9:46 AM, только пятница и суббота')
176
+ end
177
+ end
178
+
179
+ it 'day of month' do
180
+ expect(desc('23 12 15 * *')).to eq('В 12:23 PM, 15 число месяца')
181
+ end
182
+
183
+ it 'day of month ignores day of week' do
184
+ expect(desc('23 12 15 * SUN')).to eq('В 12:23 PM, 15 число месяца')
185
+ end
186
+
187
+ it 'month name' do
188
+ expect(desc('23 12 * JAN *')).to eq('В 12:23 PM, только январь')
189
+ end
190
+
191
+ it 'day of month with question mark' do
192
+ expect(desc('23 12 ? JAN *')).to eq('В 12:23 PM, только январь')
193
+ end
194
+
195
+ it 'month name range 2' do
196
+ expect(desc('23 12 * JAN-FEB *')).to eq('В 12:23 PM, январь - февраль')
197
+ end
198
+
199
+ it 'month name range 3' do
200
+ expect(desc('23 12 * JAN-MAR *')).to eq('В 12:23 PM, январь - март')
201
+ end
202
+
203
+ it 'day of week name' do
204
+ expect(desc('23 12 * * SUN')).to eq('В 12:23 PM, только воскресенье')
205
+ end
206
+
207
+ context 'day of week range:' do
208
+ it 'day of week range MON-FRI' do
209
+ expect(desc('*/5 15 * * MON-FRI')).to eq('Каждые 5 минут, в 3:00 PM, понедельник - пятница')
210
+ end
211
+
212
+ it 'day of week range 0-6' do
213
+ expect(desc('*/5 15 * * 0-6')).to eq('Каждые 5 минут, в 3:00 PM, воскресенье - суббота')
214
+ end
215
+
216
+ it 'day of week range 6-7' do
217
+ expect(desc('*/5 15 * * 6-7')).to eq('Каждые 5 минут, в 3:00 PM, суббота - воскресенье')
218
+ end
219
+ end
220
+
221
+ context 'day of week once in month:' do
222
+ it 'day of week once MON#3' do
223
+ expect(desc('* * * * MON#3')).to eq('Каждую минуту, в третий понедельник месяца')
224
+ end
225
+
226
+ it 'day of week once 0#3' do
227
+ expect(desc('* * * * 0#3')).to eq('Каждую минуту, в третий воскресенье месяца')
228
+ end
229
+ end
230
+
231
+ context 'last day of week of the month:' do
232
+ it 'last day of week 4L' do
233
+ expect(desc('* * * * 4L')).to eq('Каждую минуту, в последний четверг месяца')
234
+ end
235
+
236
+ it 'last day of week 0L' do
237
+ expect(desc('* * * * 0L')).to eq('Каждую минуту, в последний воскресенье месяца')
238
+ end
239
+ end
240
+
241
+ it 'last day of the month' do
242
+ expect(desc('*/5 * L JAN *')).to eq('Каждые 5 минут, в последний день месяца, только январь')
243
+ end
244
+
245
+ it 'time of day with seconds' do
246
+ expect(desc('30 02 14 * * *')).to eq('В 2:02:30 PM')
247
+ end
248
+
249
+ it 'second intervals' do
250
+ expect(desc('5-10 * * * * *')).to eq('Секунды с 5 по 10')
251
+ end
252
+
253
+ it 'second minutes hours intervals' do
254
+ expect(desc('5-10 30-35 10-12 * * *')).to eq(
255
+ 'Секунды с 5 по 10, минуты с 30 по 35, с 10:00 AM по 12:59 PM')
256
+ end
257
+
258
+ it 'every 5 minutes at 30 seconds' do
259
+ expect(desc('30 */5 * * * *')).to eq('В 30 секунд, каждые 5 минут')
260
+ end
261
+
262
+ it 'minutes past the hour range' do
263
+ expect(desc('0 30 10-13 ? * WED,FRI')).to eq(
264
+ 'В 30 минут часа, с 10:00 AM по 1:59 PM, только среда и пятница')
265
+ end
266
+
267
+ it 'seconds past the minute interval' do
268
+ expect(desc('10 0/5 * * * ?')).to eq('В 10 секунд, каждые 5 минут')
269
+ end
270
+
271
+ it 'between with interval' do
272
+ expect(desc('2-59/3 1,9,22 11-26 1-6 ?')).to eq(
273
+ 'Каждые 3 минут, минуты с 02 по 59, в 1:00 AM, 9:00 AM и 10:00 PM, с 11 по 26 число месяца, январь - июнь')
274
+ end
275
+
276
+ it 'recurring first of month' do
277
+ expect(desc('0 0 6 1/1 * ?')).to eq('В 6:00 AM')
278
+ end
279
+
280
+ it 'minutes past the hour' do
281
+ expect(desc('0 5 0/1 * * ?')).to eq('В 05 минут часа')
282
+ end
283
+
284
+ it 'every past the hour' do
285
+ expect(desc('0 0,5,10,15,20,25,30,35,40,45,50,55 * ? * *')).to eq(
286
+ 'В 00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50 и 55 минут часа')
287
+ end
288
+
289
+ it 'every x minute past the hour with interval' do
290
+ expect(desc('0 0-30/2 17 ? * MON-FRI')).to eq(
291
+ 'Каждые 2 минут, минуты с 00 по 30, в 5:00 PM, понедельник - пятница')
292
+ end
293
+
294
+ it 'one year only with seconds' do
295
+ expect(desc('* * * * * * 2013')).to eq('Каждую секунду, только 2013')
296
+ end
297
+
298
+ it 'one year only without seconds' do
299
+ expect(desc('* * * * * 2013')).to eq('Каждую минуту, только 2013')
300
+ end
301
+
302
+ it 'two years only' do
303
+ expect(desc('* * * * * 2013,2014')).to eq('Каждую минуту, только 2013 и 2014')
304
+ end
305
+
306
+ it 'year range 2' do
307
+ expect(desc('23 12 * JAN-FEB * 2013-2014')).to eq('В 12:23 PM, январь - февраль, 2013 - 2014')
308
+ end
309
+
310
+ it 'year range 3' do
311
+ expect(desc('23 12 * JAN-MAR * 2013-2015')).to eq('В 12:23 PM, январь - март, 2013 - 2015')
312
+ end
313
+
314
+ context 'multi part range seconds:' do
315
+ it 'multi part range seconds 2,4-5' do
316
+ expect(desc('2,4-5 1 * * *')).to eq('Минуты с 02,04 по 05, в 1:00 AM')
317
+ end
318
+
319
+ it 'multi part range seconds 2,26-28' do
320
+ expect(desc('2,26-28 18 * * *')).to eq('Минуты с 02,26 по 28, в 6:00 PM')
321
+ end
322
+ end
323
+
324
+ context 'minutes past the hour:' do
325
+ it 'minutes past the hour 5,10' do
326
+ expect(desc('5,10 0 * * *')).to eq('В 05 и 10 минут часа')
327
+ end
328
+
329
+ it 'minutes past the hour 5,10 day 2' do
330
+ expect(desc('5,10 0 2 * *')).to eq('В 05 и 10 минут часа, 2 число месяца')
331
+ end
332
+
333
+ it 'minutes past the hour 5/10 day 2' do
334
+ expect(desc('5/10 0 2 * *')).to eq('Каждые 10 минут, начало в 05 минут часа, 2 число месяца')
335
+ end
336
+ end
337
+
338
+ context 'seconds past the minute:' do
339
+ it 'seconds past the minute 5,6' do
340
+ expect(desc('5,6 0 0 * * *')).to eq('В 5 и 6 секунд')
341
+ end
342
+
343
+ it 'seconds past the minute 5,6 at 1' do
344
+ expect(desc('5,6 0 1 * * *')).to eq('В 5 и 6 секунд, в 1:00 AM')
345
+ end
346
+
347
+ it 'seconds past the minute 5,6 day 2' do
348
+ expect(desc('5,6 0 0 2 * *')).to eq('В 5 и 6 секунд, 2 число месяца')
349
+ end
350
+ end
351
+
352
+ context 'increments starting at X > 1:' do
353
+ it 'second increments' do
354
+ expect(desc('5/15 0 * * * *')).to eq('Каждые 15 секунд, начало в 5 секунд')
355
+ end
356
+
357
+ it 'minute increments' do
358
+ expect(desc('30/10 * * * *')).to eq('Каждые 10 минут, начало в 30 минут часа')
359
+ end
360
+
361
+ it 'hour increments' do
362
+ expect(desc('0 30 2/6 * * ?')).to eq('В 30 минут часа, каждые 6 часов, начало в 2:00 AM')
363
+ end
364
+
365
+ it 'day of month increments' do
366
+ expect(desc('0 30 8 2/7 * *')).to eq('В 8:30 AM, каждые 7 дня(ей), начало 2 число месяца')
367
+ end
368
+
369
+ it 'day of week increments' do
370
+ expect(desc('0 30 11 * * 2/2')).to eq('В 11:30 AM, каждые 2 дня(ей) недели, начало в вторник')
371
+ end
372
+
373
+ it 'month increments' do
374
+ expect(desc('0 20 10 * 2/3 THU')).to eq('В 10:20 AM, только четверг, каждые 3 месяцев, начало в февраль')
375
+ end
376
+
377
+ it 'year increments' do
378
+ expect(desc('0 0 0 1 MAR * 2010/5')).to eq('В 0:00 AM, 1 число месяца, только март, каждые 5 лет, начало в 2010')
379
+ end
380
+ end
381
+ end
382
+ end