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.
- checksums.yaml +5 -13
- data/.travis.yml +3 -0
- data/CHANGELOG.md +6 -2
- data/README.md +13 -2
- data/lib/cronex/errors.rb +1 -1
- data/lib/cronex/version.rb +1 -1
- data/resources/resources_en.yml +19 -19
- data/resources/resources_fr.yml +24 -24
- data/resources/resources_pt_BR.yml +19 -19
- data/resources/resources_ro.yml +75 -0
- data/resources/resources_ru.yml +75 -0
- data/spec/exp_descriptor_en_spec.rb +5 -0
- data/spec/exp_descriptor_fr_spec.rb +87 -83
- data/spec/exp_descriptor_pt_BR_spec.rb +87 -83
- data/spec/exp_descriptor_ro_spec.rb +382 -0
- data/spec/exp_descriptor_ru_spec.rb +382 -0
- data/spec/spec_helper.rb +0 -8
- metadata +23 -16
@@ -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
|