cronex 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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