nickel 0.1.1 → 0.1.2
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/Rakefile +5 -1
- data/lib/nickel/construct.rb +31 -36
- data/lib/nickel/construct_finder.rb +442 -360
- data/lib/nickel/construct_interpreter.rb +50 -52
- data/lib/nickel/nlp.rb +18 -21
- data/lib/nickel/nlp_query.rb +471 -471
- data/lib/nickel/nlp_query_constants.rb +1 -1
- data/lib/nickel/occurrence.rb +7 -8
- data/lib/nickel/version.rb +1 -1
- data/lib/nickel/zdate.rb +86 -77
- data/lib/nickel/ztime.rb +58 -54
- data/spec/lib/nickel/construct_spec.rb +66 -0
- data/spec/lib/nickel/nlp_spec.rb +7 -7
- data/spec/lib/nickel/occurrence_spec.rb +20 -21
- data/spec/lib/nickel/zdate_spec.rb +49 -29
- data/spec/lib/nickel/ztime_spec.rb +174 -158
- data/spec/lib/nickel_spec.rb +687 -609
- data/spec/spec_helper.rb +2 -2
- metadata +4 -2
data/lib/nickel/ztime.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'time'
|
2
2
|
|
3
3
|
module Nickel
|
4
|
-
|
5
4
|
class ZTime
|
6
5
|
include Comparable
|
7
6
|
|
@@ -11,10 +10,12 @@ module Nickel
|
|
11
10
|
# \@time is always stored on 24 hour clock, but we could initialize a Time object with ZTime.new("1020", :pm)
|
12
11
|
# we will convert this to 24 hour clock and set \@firm = true
|
13
12
|
def initialize(hhmmss = nil, am_pm = nil)
|
14
|
-
t = hhmmss ? hhmmss : ::Time.new.strftime(
|
15
|
-
t.gsub!(/:/,'') # remove any hyphens, so a user can initialize with something like "2008-10-23"
|
13
|
+
t = hhmmss ? hhmmss : ::Time.new.strftime('%H%M%S')
|
14
|
+
t.gsub!(/:/, '') # remove any hyphens, so a user can initialize with something like "2008-10-23"
|
16
15
|
self.time = t
|
17
|
-
if am_pm
|
16
|
+
if am_pm
|
17
|
+
adjust_for(am_pm)
|
18
|
+
end
|
18
19
|
end
|
19
20
|
|
20
21
|
def time
|
@@ -33,7 +34,7 @@ module Nickel
|
|
33
34
|
|
34
35
|
# @deprecated Please use {#min_str} instead
|
35
36
|
def minute_str
|
36
|
-
warn
|
37
|
+
warn '[DEPRECATION] `minute_str` is deprecated. Please use `min_str` instead.'
|
37
38
|
min_str
|
38
39
|
end
|
39
40
|
|
@@ -43,7 +44,7 @@ module Nickel
|
|
43
44
|
|
44
45
|
# @deprecated Please use {#sec_str} instead
|
45
46
|
def second_str
|
46
|
-
warn
|
47
|
+
warn '[DEPRECATION] `second_str` is deprecated. Please use `sec_str` instead.'
|
47
48
|
sec_str
|
48
49
|
end
|
49
50
|
|
@@ -57,7 +58,7 @@ module Nickel
|
|
57
58
|
|
58
59
|
# @deprecated Please use {#min} instead
|
59
60
|
def minute
|
60
|
-
warn
|
61
|
+
warn '[DEPRECATION] `minute` is deprecated. Please use `min` instead.'
|
61
62
|
min
|
62
63
|
end
|
63
64
|
|
@@ -67,7 +68,7 @@ module Nickel
|
|
67
68
|
|
68
69
|
# @deprecated Please use {#sec} instead
|
69
70
|
def second
|
70
|
-
warn
|
71
|
+
warn '[DEPRECATION] `second` is deprecated. Please use `sec` instead.'
|
71
72
|
sec
|
72
73
|
end
|
73
74
|
|
@@ -82,25 +83,24 @@ module Nickel
|
|
82
83
|
def add_minutes(number, &block)
|
83
84
|
# new minute is going to be (current minute + number) % 60
|
84
85
|
# number of hours to add is (current minute + number) / 60
|
85
|
-
hours_to_add = (
|
86
|
+
hours_to_add = (min + number) / 60
|
86
87
|
# note add_hours returns a new time object
|
87
88
|
if block_given?
|
88
|
-
o =
|
89
|
+
o = add_hours(hours_to_add, &block)
|
89
90
|
else
|
90
|
-
o =
|
91
|
+
o = add_hours(hours_to_add)
|
91
92
|
end
|
92
93
|
o.change_minute_to((o.min + number) % 60) # modifies self
|
93
94
|
end
|
94
95
|
|
95
96
|
def add_hours(number, &block)
|
96
|
-
o =
|
97
|
+
o = dup
|
97
98
|
if block_given?
|
98
99
|
yield((o.hour + number) / 24)
|
99
100
|
end
|
100
101
|
o.change_hour_to((o.hour + number) % 24)
|
101
102
|
end
|
102
103
|
|
103
|
-
|
104
104
|
# NOTE: change_ methods modify self.
|
105
105
|
def change_hour_to(h)
|
106
106
|
self.time = ZTime.format_time(h, min_str, sec_str)
|
@@ -118,11 +118,11 @@ module Nickel
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def readable
|
121
|
-
@time[0..1] +
|
121
|
+
@time[0..1] + ':' + @time[2..3] + ':' + @time[4..5]
|
122
122
|
end
|
123
123
|
|
124
124
|
def readable_12hr
|
125
|
-
hour_on_12hr_clock +
|
125
|
+
hour_on_12hr_clock + ':' + @time[2..3] + " #{am_pm}"
|
126
126
|
end
|
127
127
|
|
128
128
|
def hour_on_12hr_clock
|
@@ -132,19 +132,24 @@ module Nickel
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def is_am?
|
135
|
+
warn '[DEPRECATION] `is_am?` is deprecated. Please use `am?` instead.'
|
136
|
+
am?
|
137
|
+
end
|
138
|
+
|
139
|
+
def am?
|
135
140
|
hour < 12 # 0 through 11 on 24hr clock
|
136
141
|
end
|
137
142
|
|
138
143
|
def am_pm
|
139
|
-
|
144
|
+
am? ? 'am' : 'pm'
|
140
145
|
end
|
141
146
|
|
142
|
-
def <=>(
|
143
|
-
return nil unless [:hour, :min, :sec].all?{|m|
|
147
|
+
def <=>(other)
|
148
|
+
return nil unless [:hour, :min, :sec].all? { |m| other.respond_to?(m) }
|
144
149
|
|
145
|
-
if before?(
|
150
|
+
if before?(other)
|
146
151
|
-1
|
147
|
-
elsif after?(
|
152
|
+
elsif after?(other)
|
148
153
|
1
|
149
154
|
else
|
150
155
|
0
|
@@ -160,13 +165,12 @@ module Nickel
|
|
160
165
|
end
|
161
166
|
|
162
167
|
class << self
|
163
|
-
|
164
168
|
# send an array of ZTime objects, this will make a guess at whether they should be am/pm if the user did not specify
|
165
169
|
# NOTE ORDER IS IMPORTANT: times[0] is assumed to be BEFORE times[1]
|
166
170
|
def am_pm_modifier(*time_array)
|
167
171
|
# find firm time indices
|
168
172
|
firm_time_indices = []
|
169
|
-
time_array.each_with_index {|t,i| firm_time_indices << i if t.firm}
|
173
|
+
time_array.each_with_index { |t, i| firm_time_indices << i if t.firm }
|
170
174
|
|
171
175
|
if firm_time_indices.empty?
|
172
176
|
# pure guess
|
@@ -174,22 +178,22 @@ module Nickel
|
|
174
178
|
time_array.each_index do |i|
|
175
179
|
# user gave us nothing
|
176
180
|
next if i == 0
|
177
|
-
time_array[i].guess_modify_such_that_is_after(time_array[i-1])
|
181
|
+
time_array[i].guess_modify_such_that_is_after(time_array[i - 1])
|
178
182
|
end
|
179
183
|
else
|
180
184
|
# first handle soft times up to first firm time
|
181
185
|
min_boundary = 0
|
182
186
|
max_boundary = firm_time_indices[0]
|
183
187
|
(min_boundary...max_boundary).to_a.reverse.each do |i| # this says, iterate backwards starting from max_boundary, but not including it, until the min boundary
|
184
|
-
time_array[i].modify_such_that_is_before(time_array[i+1])
|
188
|
+
time_array[i].modify_such_that_is_before(time_array[i + 1])
|
185
189
|
end
|
186
190
|
|
187
191
|
firm_time_indices.each_index do |j|
|
188
192
|
# now handle all times after first firm time until the next firm time
|
189
193
|
min_boundary = firm_time_indices[j]
|
190
|
-
max_boundary = firm_time_indices[j+1] || time_array.size
|
194
|
+
max_boundary = firm_time_indices[j + 1] || time_array.size
|
191
195
|
(min_boundary + 1...max_boundary).each do |i| # any boundary problems here? What if there is only 1 time? Nope.
|
192
|
-
time_array[i].modify_such_that_is_after(time_array[i-1])
|
196
|
+
time_array[i].modify_such_that_is_after(time_array[i - 1])
|
193
197
|
end
|
194
198
|
end
|
195
199
|
end
|
@@ -217,7 +221,7 @@ module Nickel
|
|
217
221
|
end
|
218
222
|
|
219
223
|
# formats the hours, minutes and seconds into the format expected by the ZTime constructor
|
220
|
-
def format_time(hours, minutes=0, seconds=0)
|
224
|
+
def format_time(hours, minutes = 0, seconds = 0)
|
221
225
|
format_hour(hours) + format_minute(minutes) + format_second(seconds)
|
222
226
|
end
|
223
227
|
|
@@ -239,7 +243,7 @@ module Nickel
|
|
239
243
|
if mdata[1].length <= 2
|
240
244
|
# e.g. "11" means 11:00
|
241
245
|
hstr = mdata[1]
|
242
|
-
mstr =
|
246
|
+
mstr = '0'
|
243
247
|
elsif mdata[1].length == 3
|
244
248
|
# e.g. "530" means 5:30
|
245
249
|
hstr = mdata[1][0..0]
|
@@ -263,8 +267,8 @@ module Nickel
|
|
263
267
|
|
264
268
|
# this can very easily be cleaned up
|
265
269
|
def modify_such_that_is_before(time2)
|
266
|
-
|
267
|
-
|
270
|
+
fail 'ZTime#modify_such_that_is_before says: trying to modify time that has @firm set' if @firm
|
271
|
+
fail 'ZTime#modify_such_that_is_before says: time2 does not have @firm set' unless time2.firm
|
268
272
|
# self cannot have @firm set, so all hours will be between 1 and 12
|
269
273
|
# time2 is an end time, self could be its current setting, or off by 12 hours
|
270
274
|
|
@@ -274,30 +278,30 @@ module Nickel
|
|
274
278
|
# 1220 to 12am --> 1220 to 0000
|
275
279
|
# 11 to 2am or 1100 to 0200
|
276
280
|
if self > time2
|
277
|
-
if
|
281
|
+
if hour == 12 && time2.hour == 0
|
278
282
|
# do nothing
|
279
283
|
else
|
280
|
-
|
284
|
+
hour == 12 ? change_hour_to(0) : change_hour_to(hour + 12)
|
281
285
|
end
|
282
286
|
elsif self < time2
|
283
287
|
if time2.hour >= 12 && ZTime.new(ZTime.format_time(time2.hour - 12, time2.min_str, time2.sec_str)) > self
|
284
288
|
# 4 to 5pm or 0400 to 1700
|
285
|
-
change_hour_to(
|
289
|
+
change_hour_to(hour + 12)
|
286
290
|
else
|
287
291
|
# 4 to 1pm or 0400 to 1300
|
288
292
|
# do nothing
|
289
293
|
end
|
290
294
|
else
|
291
295
|
# the times are equal, and self can only be between 0100 and 1200, so move self forward 12 hours, unless hour is 12
|
292
|
-
|
296
|
+
hour == 12 ? change_hour_to(0) : change_hour_to(hour + 12)
|
293
297
|
end
|
294
298
|
self.firm = true
|
295
299
|
self
|
296
300
|
end
|
297
301
|
|
298
302
|
def modify_such_that_is_after(time1)
|
299
|
-
|
300
|
-
|
303
|
+
fail 'ZTime#modify_such_that_is_after says: trying to modify time that has @firm set' if @firm
|
304
|
+
fail 'ZTime#modify_such_that_is_after says: time1 does not have @firm set' unless time1.firm
|
301
305
|
# time1 to self --> time1 to self
|
302
306
|
# 8pm to 835 --> 2000 to 835
|
303
307
|
# 835pm to 835 --> 2035 to 835
|
@@ -307,7 +311,7 @@ module Nickel
|
|
307
311
|
# 930pm to 5 ---> 2130 to 0500
|
308
312
|
if self < time1
|
309
313
|
unless time1.hour >= 12 && ZTime.new(ZTime.format_time(time1.hour - 12, time1.min_str, time1.sec_str)) >= self
|
310
|
-
|
314
|
+
hour == 12 ? change_hour_to(0) : change_hour_to(hour + 12)
|
311
315
|
end
|
312
316
|
elsif self > time1
|
313
317
|
# # time1 to self --> time1 to self
|
@@ -320,7 +324,7 @@ module Nickel
|
|
320
324
|
# end
|
321
325
|
else
|
322
326
|
# the times are equal, and self can only be between 0100 and 1200, so move self forward 12 hours, unless hour is 12
|
323
|
-
|
327
|
+
hour == 12 ? change_hour_to(0) : change_hour_to(hour + 12)
|
324
328
|
end
|
325
329
|
self.firm = true
|
326
330
|
self
|
@@ -335,18 +339,18 @@ module Nickel
|
|
335
339
|
# 12 to 6 ---> 1200 to 0600
|
336
340
|
if time1 >= self
|
337
341
|
# crossed boundary at noon
|
338
|
-
|
342
|
+
hour == 12 ? change_hour_to(0) : change_hour_to(hour + 12)
|
339
343
|
end
|
340
344
|
end
|
341
345
|
|
342
346
|
private
|
343
347
|
|
344
|
-
def before?(
|
345
|
-
(hour <
|
348
|
+
def before?(other)
|
349
|
+
(hour < other.hour) || (hour == other.hour && (min < other.min || (min == other.min && sec < other.sec)))
|
346
350
|
end
|
347
351
|
|
348
|
-
def after?(
|
349
|
-
(hour >
|
352
|
+
def after?(other)
|
353
|
+
(hour > other.hour) || (hour == other.hour && (min > other.min || (min == other.min && sec > other.sec)))
|
350
354
|
end
|
351
355
|
|
352
356
|
def adjust_for(am_pm)
|
@@ -354,19 +358,19 @@ module Nickel
|
|
354
358
|
# perform validation on the new time. That won't catch something like this though: ZTime.new("2215", :am)
|
355
359
|
# so we will check for that here.
|
356
360
|
# If user is providing :am or :pm, the hour must be between 1 and 12
|
357
|
-
|
361
|
+
fail 'ZTime#adjust_for says: you specified am or pm with 1 > hour > 12' unless hour >= 1 && hour <= 12
|
358
362
|
if am_pm == :am || am_pm == 'am'
|
359
|
-
change_hour_to(ZTime.am_to_24hr(
|
363
|
+
change_hour_to(ZTime.am_to_24hr(hour))
|
360
364
|
elsif am_pm == :pm || am_pm == 'pm'
|
361
|
-
change_hour_to(ZTime.pm_to_24hr(
|
365
|
+
change_hour_to(ZTime.pm_to_24hr(hour))
|
362
366
|
else
|
363
|
-
|
367
|
+
fail 'ZTime#adjust_for says: you passed an invalid value for am_pm, use :am or :pm'
|
364
368
|
end
|
365
369
|
@firm = true
|
366
370
|
end
|
367
371
|
|
368
372
|
def validate
|
369
|
-
|
373
|
+
fail 'ZTime#validate says: invalid time' unless valid
|
370
374
|
end
|
371
375
|
|
372
376
|
def valid
|
@@ -374,23 +378,23 @@ module Nickel
|
|
374
378
|
end
|
375
379
|
|
376
380
|
def valid_hour
|
377
|
-
hour >= 0
|
381
|
+
hour >= 0 && hour < 24
|
378
382
|
end
|
379
383
|
|
380
384
|
def valid_minute
|
381
|
-
min >= 0
|
385
|
+
min >= 0 && min < 60
|
382
386
|
end
|
383
387
|
|
384
388
|
def valid_second
|
385
|
-
sec >= 0
|
389
|
+
sec >= 0 && sec < 60
|
386
390
|
end
|
387
391
|
|
388
392
|
def lazy(s)
|
389
393
|
# someone isn't following directions, but we will let it slide
|
390
394
|
s.length == 1 && s = "0#{s}0000" # only provided h
|
391
|
-
s.length == 2 && s <<
|
392
|
-
s.length == 4 && s <<
|
393
|
-
|
395
|
+
s.length == 2 && s << '0000' # only provided hh
|
396
|
+
s.length == 4 && s << '00' # only provided hhmm
|
397
|
+
s
|
394
398
|
end
|
395
399
|
end
|
396
400
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require_relative '../../../lib/nickel/construct'
|
3
|
+
|
4
|
+
module Nickel
|
5
|
+
describe RecurrenceConstruct do
|
6
|
+
describe '#get_interval', :deprecated do
|
7
|
+
it 'is 1 when the recurrence is daily' do
|
8
|
+
expect(RecurrenceConstruct.new(repeats: :daily).get_interval).to eq(1)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#interval' do
|
13
|
+
it 'is 1 when the recurrence is daily' do
|
14
|
+
expect(RecurrenceConstruct.new(repeats: :daily).interval).to eq(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'is 2 when the recurrence is every other day' do
|
18
|
+
expect(RecurrenceConstruct.new(repeats: :altdaily).interval).to eq(2)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'is 3 when the recurrence is every three days' do
|
22
|
+
expect(RecurrenceConstruct.new(repeats: :threedaily).interval).to eq(3)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'is 1 when the recurrence is weekly' do
|
26
|
+
expect(RecurrenceConstruct.new(repeats: :weekly).interval).to eq(1)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'is 2 when the recurrence is every other week' do
|
30
|
+
expect(RecurrenceConstruct.new(repeats: :altweekly).interval).to eq(2)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'is 3 when the recurrence is every three weeks' do
|
34
|
+
expect(RecurrenceConstruct.new(repeats: :threeweekly).interval).to eq(3)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'is 1 when the recurrence is on a specific weekday each month' do
|
38
|
+
expect(RecurrenceConstruct.new(repeats: :daymonthly).interval).to eq(1)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'is 2 when the recurrence is on a specific weekday every other month' do
|
42
|
+
expect(RecurrenceConstruct.new(repeats: :altdaymonthly).interval).to eq(2)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'is 3 when the recurrence is on a specific weekday every three months' do
|
46
|
+
expect(RecurrenceConstruct.new(repeats: :threedaymonthly).interval).to eq(3)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'is 1 when the recurrence is on a specific date each month' do
|
50
|
+
expect(RecurrenceConstruct.new(repeats: :datemonthly).interval).to eq(1)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'is 2 when the recurrence is on a specific date every other month' do
|
54
|
+
expect(RecurrenceConstruct.new(repeats: :altdatemonthly).interval).to eq(2)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'is 3 when the recurrence is on a specific date every three months' do
|
58
|
+
expect(RecurrenceConstruct.new(repeats: :threedatemonthly).interval).to eq(3)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'raises a StandardError if the recurrence is not recognised' do
|
62
|
+
expect{ RecurrenceConstruct.new(repeats: :fortnightly).interval }.to raise_error(StandardError)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/spec/lib/nickel/nlp_spec.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
require
|
2
|
-
require_relative
|
1
|
+
require 'spec_helper'
|
2
|
+
require_relative '../../../lib/nickel/nlp'
|
3
3
|
|
4
4
|
module Nickel
|
5
5
|
describe NLP do
|
6
|
-
describe
|
7
|
-
it
|
8
|
-
expect
|
9
|
-
NLP.new
|
10
|
-
|
6
|
+
describe '#new' do
|
7
|
+
it 'raises an error if the current time argument is not a datetime or time object' do
|
8
|
+
expect do
|
9
|
+
NLP.new 'lunch 3 days from now', Date.new(2009, 05, 28)
|
10
|
+
end.to raise_error('You must pass in a ruby DateTime or Time class object')
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -1,48 +1,47 @@
|
|
1
|
-
require
|
2
|
-
require_relative
|
3
|
-
require_relative
|
1
|
+
require 'spec_helper'
|
2
|
+
require_relative '../../../lib/nickel/occurrence'
|
3
|
+
require_relative '../../../lib/nickel/zdate'
|
4
4
|
|
5
5
|
module Nickel
|
6
6
|
describe Occurrence do
|
7
|
-
describe
|
8
|
-
let(:occ) { Occurrence.new(type: :daily, start_date: ZDate.new(
|
7
|
+
describe '#==' do
|
8
|
+
let(:occ) { Occurrence.new(type: :daily, start_date: ZDate.new('20140128')) }
|
9
9
|
|
10
|
-
it
|
10
|
+
it 'is true when comparing to itself' do
|
11
11
|
expect(occ).to eq occ
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
14
|
+
it 'is false when comparing to nil' do
|
15
15
|
expect(occ).to_not eq nil
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
19
|
-
expect(occ).to_not eq
|
18
|
+
it 'is false when comparing to a string' do
|
19
|
+
expect(occ).to_not eq 'occ'
|
20
20
|
end
|
21
21
|
|
22
|
-
it
|
23
|
-
expect(occ).to_not eq Occurrence.new(type: :daily, start_date: ZDate.new(
|
22
|
+
it 'is false when comparing to an occurence with different dates' do
|
23
|
+
expect(occ).to_not eq Occurrence.new(type: :daily, start_date: ZDate.new('20080825'))
|
24
24
|
end
|
25
25
|
|
26
|
-
it
|
27
|
-
expect(occ).to_not eq Occurrence.new(type: :weekly, start_date: ZDate.new(
|
26
|
+
it 'is false when comparing to an occurrence with a different type' do
|
27
|
+
expect(occ).to_not eq Occurrence.new(type: :weekly, start_date: ZDate.new('20140128'))
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
31
|
-
expect(occ).to_not eq Occurrence.new(type: :daily, start_date: ZDate.new(
|
30
|
+
it 'is false when comparing to an occurence with a different interval' do
|
31
|
+
expect(occ).to_not eq Occurrence.new(type: :daily, start_date: ZDate.new('20140128'), interval: 3)
|
32
32
|
end
|
33
33
|
|
34
|
-
it
|
35
|
-
expect(occ).to eq Occurrence.new(type: :daily, start_date: ZDate.new(
|
34
|
+
it 'is true when comparing to an occurence with the same values' do
|
35
|
+
expect(occ).to eq Occurrence.new(type: :daily, start_date: ZDate.new('20140128'))
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
describe
|
40
|
-
let(:occ) { Occurrence.new(type: :daily, start_date: ZDate.new(
|
39
|
+
describe '#inspect' do
|
40
|
+
let(:occ) { Occurrence.new(type: :daily, start_date: ZDate.new('20140128'), end_date: ZDate.new('20140209'), interval: 2) }
|
41
41
|
|
42
|
-
it
|
42
|
+
it 'shows only members that have been set' do
|
43
43
|
expect(occ.inspect).to eq '#<Occurrence type: daily, start_date: 20140128, end_date: 20140209, interval: 2>'
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|