one_inch_punch 0.1.0 → 0.1.1
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.
- data/History.txt +8 -0
- data/bin/punch +50 -25
- data/lib/punch.rb +8 -4
- data/lib/punch/version.rb +1 -1
- data/spec/punch_command_spec.rb +153 -79
- data/spec/punch_spec.rb +8 -6
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 0.1.1 2008-08-28
|
2
|
+
|
3
|
+
* 3 enhancements:
|
4
|
+
* Can format total time as "elapsed time" instead of only getting the number of seconds
|
5
|
+
* punch command gives improved output for some commands:
|
6
|
+
* in/out/log: either silent or gives a message explaining a failure
|
7
|
+
* total: shows "elapsed time" instead of number of seconds
|
8
|
+
|
1
9
|
== 0.1.0 2008-08-26
|
2
10
|
|
3
11
|
* 1 enhancement:
|
data/bin/punch
CHANGED
@@ -18,9 +18,7 @@ MANDATORY_OPTIONS = %w[]
|
|
18
18
|
|
19
19
|
parser = OptionParser.new do |opts|
|
20
20
|
opts.banner = <<BANNER
|
21
|
-
|
22
|
-
|
23
|
-
Usage: #{File.basename($0)} [options]
|
21
|
+
Usage: #{File.basename($0)} [command] <project>
|
24
22
|
|
25
23
|
Options are:
|
26
24
|
BANNER
|
@@ -50,30 +48,57 @@ end
|
|
50
48
|
project = ARGV[1]
|
51
49
|
|
52
50
|
Punch.load
|
53
|
-
|
54
|
-
|
55
|
-
puts Punch.status(project).inspect
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
Punch.write if result = Punch.log(project, message)
|
51
|
+
|
52
|
+
commands = {
|
53
|
+
'status' => lambda { |project| puts Punch.status(project).inspect },
|
54
|
+
'total' => lambda { |project| puts Punch.total(project, OPTIONS.merge(:format => true)).inspect },
|
55
|
+
'in' => lambda do |project|
|
56
|
+
if project
|
57
|
+
if Punch.in(project)
|
58
|
+
Punch.write
|
59
|
+
else
|
60
|
+
puts "Already punched in to '#{project}'"
|
61
|
+
end
|
62
|
+
else
|
63
|
+
puts "Project required"
|
64
|
+
end
|
65
|
+
end,
|
66
|
+
'delete' => lambda do |project|
|
67
|
+
if project
|
68
|
+
Punch.write if result = Punch.delete(project)
|
72
69
|
puts result.inspect
|
73
70
|
else
|
74
|
-
puts "
|
71
|
+
puts "Project required"
|
72
|
+
end
|
73
|
+
end,
|
74
|
+
'out' => lambda do |project|
|
75
|
+
if Punch.out(project)
|
76
|
+
Punch.write
|
77
|
+
else
|
78
|
+
message = 'Already punched out of '
|
79
|
+
message += project ? "'#{project}'" : 'all projects'
|
80
|
+
puts message
|
81
|
+
end
|
82
|
+
end,
|
83
|
+
'log' => lambda do |project|
|
84
|
+
if project
|
85
|
+
if message = ARGV[2]
|
86
|
+
if Punch.log(project, message)
|
87
|
+
Punch.write
|
88
|
+
else
|
89
|
+
puts "Not punched in to '#{project}'"
|
90
|
+
end
|
91
|
+
else
|
92
|
+
puts "Message required"
|
93
|
+
end
|
94
|
+
else
|
95
|
+
puts "Project required"
|
75
96
|
end
|
76
|
-
else
|
77
|
-
puts "Project required"
|
78
97
|
end
|
98
|
+
}
|
99
|
+
|
100
|
+
if command_code = commands[command]
|
101
|
+
command_code.call(project)
|
102
|
+
else
|
103
|
+
puts "Command '#{command}' unknown"
|
79
104
|
end
|
data/lib/punch.rb
CHANGED
@@ -2,6 +2,7 @@ $:.unshift(File.dirname(__FILE__)) unless
|
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
4
|
require 'yaml'
|
5
|
+
require 'punch/core_ext'
|
5
6
|
|
6
7
|
module Punch
|
7
8
|
class << self
|
@@ -83,12 +84,13 @@ module Punch
|
|
83
84
|
end
|
84
85
|
|
85
86
|
def total(*args)
|
87
|
+
options = args.last.is_a?(Hash) ? args.last : {}
|
86
88
|
list_data = list(*args)
|
87
89
|
if list_data.is_a?(Hash)
|
88
|
-
list_data.inject({}) { |hash, (project, project_data)| hash.merge(project => do_total_time(project_data)) }
|
90
|
+
list_data.inject({}) { |hash, (project, project_data)| hash.merge(project => do_total_time(project_data, options)) }
|
89
91
|
else
|
90
92
|
return nil unless list_data
|
91
|
-
do_total_time(list_data)
|
93
|
+
do_total_time(list_data, options)
|
92
94
|
end
|
93
95
|
end
|
94
96
|
|
@@ -117,8 +119,10 @@ module Punch
|
|
117
119
|
project_data
|
118
120
|
end
|
119
121
|
|
120
|
-
def do_total_time(list_data)
|
121
|
-
list_data.collect { |t| ((t['out'] || Time.now) - t['in']).to_i }.inject(0) { |sum, t| sum + t }
|
122
|
+
def do_total_time(list_data, options)
|
123
|
+
total = list_data.collect { |t| ((t['out'] || Time.now) - t['in']).to_i }.inject(0) { |sum, t| sum + t }
|
124
|
+
return total unless options[:format]
|
125
|
+
total.elapsed_time
|
122
126
|
end
|
123
127
|
end
|
124
128
|
end
|
data/lib/punch/version.rb
CHANGED
data/spec/punch_command_spec.rb
CHANGED
@@ -14,11 +14,15 @@ describe 'punch command' do
|
|
14
14
|
Object.send(:remove_const, const) if Object.const_defined?(const)
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
@states = {}
|
18
|
+
%w[puts load write].each do |state|
|
19
|
+
@states[state] = states(state).starts_as('setup')
|
20
|
+
end
|
21
|
+
|
22
|
+
self.stubs(:puts).when(@states['puts'].is('setup'))
|
23
|
+
Punch.stubs(:load).when(@states['load'].is('setup'))
|
24
|
+
Punch.stubs(:write).when(@states['write'].is('setup'))
|
18
25
|
|
19
|
-
Punch.stubs(:load)
|
20
|
-
@test = states('test').starts_as('setup')
|
21
|
-
Punch.stubs(:write).when(@test.is('setup'))
|
22
26
|
@project = 'myproj'
|
23
27
|
end
|
24
28
|
|
@@ -59,8 +63,8 @@ describe 'punch command' do
|
|
59
63
|
end
|
60
64
|
|
61
65
|
it 'should not write the data' do
|
62
|
-
@
|
63
|
-
Punch.expects(:write).never.when(@
|
66
|
+
@states['write'].become('test')
|
67
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
64
68
|
run_command('total')
|
65
69
|
end
|
66
70
|
|
@@ -92,10 +96,16 @@ describe 'punch command' do
|
|
92
96
|
Punch.expects(:total).with(nil, has_entry(:before => time))
|
93
97
|
run_command('total', '--before', time_option)
|
94
98
|
end
|
99
|
+
|
100
|
+
it 'should also pass the formatting option' do
|
101
|
+
time_option = '2008-08-26 09:47'
|
102
|
+
Punch.expects(:total).with(@project, has_entry(:format => true))
|
103
|
+
run_command('total', @project, '--before', time_option)
|
104
|
+
end
|
95
105
|
end
|
96
106
|
|
97
|
-
it 'should pass
|
98
|
-
Punch.expects(:total).with(@project, {})
|
107
|
+
it 'should pass only the formatting option if no options specified' do
|
108
|
+
Punch.expects(:total).with(@project, {:format => true})
|
99
109
|
run_command('total', @project)
|
100
110
|
end
|
101
111
|
end
|
@@ -128,15 +138,16 @@ describe 'punch command' do
|
|
128
138
|
end
|
129
139
|
|
130
140
|
it 'should not write the data' do
|
131
|
-
@
|
132
|
-
Punch.expects(:write).never.when(@
|
141
|
+
@states['write'].become('test')
|
142
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
133
143
|
run_command('status')
|
134
144
|
end
|
135
145
|
end
|
136
146
|
|
137
147
|
describe "when the command is 'in'" do
|
138
148
|
before :each do
|
139
|
-
|
149
|
+
@states['in'] = states('in').starts_as('setup')
|
150
|
+
Punch.stubs(:in).when(@states['write'].is('setup'))
|
140
151
|
end
|
141
152
|
|
142
153
|
it 'should load punch data' do
|
@@ -145,33 +156,40 @@ describe 'punch command' do
|
|
145
156
|
end
|
146
157
|
|
147
158
|
it 'should punch in to the given project' do
|
148
|
-
|
149
|
-
Punch.stubs(:write)
|
150
|
-
Punch.expects(:in).with(@project).when(@test.is('test'))
|
151
|
-
run_command('in', @project)
|
152
|
-
end
|
153
|
-
|
154
|
-
it 'should output the result' do
|
155
|
-
result = 'result'
|
156
|
-
Punch.stubs(:in).returns(result)
|
157
|
-
self.expects(:puts).with(result.inspect)
|
159
|
+
Punch.expects(:in).with(@project)
|
158
160
|
run_command('in', @project)
|
159
161
|
end
|
160
162
|
|
161
163
|
describe 'when punched in successfully' do
|
162
|
-
|
163
|
-
@test.become('test')
|
164
|
+
before :each do
|
164
165
|
Punch.stubs(:in).returns(true)
|
165
|
-
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'should write the data' do
|
169
|
+
Punch.expects(:write)
|
170
|
+
run_command('in', @project)
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'should not print anything' do
|
174
|
+
@states['puts'].become('test')
|
175
|
+
self.expects(:puts).never.when(@states['puts'].is('test'))
|
166
176
|
run_command('in', @project)
|
167
177
|
end
|
168
178
|
end
|
169
179
|
|
170
180
|
describe 'when not punched in successfully' do
|
171
|
-
|
172
|
-
@test.become('test')
|
181
|
+
before :each do
|
173
182
|
Punch.stubs(:in).returns(false)
|
174
|
-
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'should not write the data' do
|
186
|
+
@states['write'].become('test')
|
187
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
188
|
+
run_command('in', @project)
|
189
|
+
end
|
190
|
+
|
191
|
+
it 'should print a message' do
|
192
|
+
self.expects(:puts).with(regexp_matches(/already.+in/i))
|
175
193
|
run_command('in', @project)
|
176
194
|
end
|
177
195
|
end
|
@@ -183,15 +201,15 @@ describe 'punch command' do
|
|
183
201
|
end
|
184
202
|
|
185
203
|
it 'should not punch in' do
|
186
|
-
@
|
204
|
+
@states['in'].become('test')
|
187
205
|
Punch.stubs(:write)
|
188
|
-
Punch.expects(:in).never.when(@
|
206
|
+
Punch.expects(:in).never.when(@states['in'].is('test'))
|
189
207
|
run_command('in')
|
190
208
|
end
|
191
209
|
|
192
210
|
it 'should not write the data' do
|
193
|
-
@
|
194
|
-
Punch.expects(:write).never.when(@
|
211
|
+
@states['write'].become('test')
|
212
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
195
213
|
run_command('in')
|
196
214
|
end
|
197
215
|
end
|
@@ -217,35 +235,60 @@ describe 'punch command' do
|
|
217
235
|
run_command('out')
|
218
236
|
end
|
219
237
|
|
220
|
-
it 'should output the result' do
|
221
|
-
result = 'result'
|
222
|
-
Punch.stubs(:out).returns(result)
|
223
|
-
self.expects(:puts).with(result.inspect)
|
224
|
-
run_command('out', @project)
|
225
|
-
end
|
226
|
-
|
227
238
|
describe 'when punched out successfully' do
|
228
|
-
|
229
|
-
@test.become('test')
|
239
|
+
before :each do
|
230
240
|
Punch.stubs(:out).returns(true)
|
231
|
-
|
241
|
+
end
|
242
|
+
|
243
|
+
it 'should write the data' do
|
244
|
+
Punch.expects(:write)
|
232
245
|
run_command('out', @project)
|
233
246
|
end
|
247
|
+
|
248
|
+
it 'should not print anything' do
|
249
|
+
@states['puts'].become('test')
|
250
|
+
self.expects(:puts).never.when(@states['puts'].is('test'))
|
251
|
+
run_command('out', @project)
|
252
|
+
end
|
253
|
+
|
254
|
+
describe 'and no project given' do
|
255
|
+
it 'should not print anything' do
|
256
|
+
@states['puts'].become('test')
|
257
|
+
self.expects(:puts).never.when(@states['puts'].is('test'))
|
258
|
+
run_command('out')
|
259
|
+
end
|
260
|
+
end
|
234
261
|
end
|
235
262
|
|
236
263
|
describe 'when not punched out successfully' do
|
237
|
-
|
238
|
-
@test.become('test')
|
264
|
+
before :each do
|
239
265
|
Punch.stubs(:out).returns(false)
|
240
|
-
|
266
|
+
end
|
267
|
+
|
268
|
+
it 'should not write the data' do
|
269
|
+
@states['write'].become('test')
|
270
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
241
271
|
run_command('out', @project)
|
242
272
|
end
|
273
|
+
|
274
|
+
it 'should print a message' do
|
275
|
+
self.expects(:puts).with(regexp_matches(/already.+out/i))
|
276
|
+
run_command('out', @project)
|
277
|
+
end
|
278
|
+
|
279
|
+
describe 'and no project given' do
|
280
|
+
it 'should print a message' do
|
281
|
+
self.expects(:puts).with(regexp_matches(/already.+out/i))
|
282
|
+
run_command('out')
|
283
|
+
end
|
284
|
+
end
|
243
285
|
end
|
244
286
|
end
|
245
287
|
|
246
288
|
describe "when the command is 'delete'" do
|
247
289
|
before :each do
|
248
|
-
|
290
|
+
@states['delete'] = states('delete').starts_as('setup')
|
291
|
+
Punch.stubs(:delete).when(@states['write'].is('setup'))
|
249
292
|
end
|
250
293
|
|
251
294
|
it 'should load punch data' do
|
@@ -254,9 +297,8 @@ describe 'punch command' do
|
|
254
297
|
end
|
255
298
|
|
256
299
|
it 'should delete the given project' do
|
257
|
-
@test.become('test')
|
258
300
|
Punch.stubs(:write)
|
259
|
-
Punch.expects(:delete).with(@project)
|
301
|
+
Punch.expects(:delete).with(@project)
|
260
302
|
run_command('delete', @project)
|
261
303
|
end
|
262
304
|
|
@@ -269,18 +311,17 @@ describe 'punch command' do
|
|
269
311
|
|
270
312
|
describe 'when deleted successfully' do
|
271
313
|
it 'should write the data' do
|
272
|
-
@test.become('test')
|
273
314
|
Punch.stubs(:delete).returns(true)
|
274
|
-
Punch.expects(:write)
|
315
|
+
Punch.expects(:write)
|
275
316
|
run_command('delete', @project)
|
276
317
|
end
|
277
318
|
end
|
278
319
|
|
279
320
|
describe 'when not deleted successfully' do
|
280
321
|
it 'should not write the data' do
|
281
|
-
@
|
322
|
+
@states['write'].become('test')
|
282
323
|
Punch.stubs(:delete).returns(nil)
|
283
|
-
Punch.expects(:write).never.when(@
|
324
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
284
325
|
run_command('delete', @project)
|
285
326
|
end
|
286
327
|
end
|
@@ -292,15 +333,15 @@ describe 'punch command' do
|
|
292
333
|
end
|
293
334
|
|
294
335
|
it 'should not delete' do
|
295
|
-
@
|
336
|
+
@states['delete'].become('test')
|
296
337
|
Punch.stubs(:write)
|
297
|
-
Punch.expects(:delete).never.when(@
|
338
|
+
Punch.expects(:delete).never.when(@states['delete'].is('test'))
|
298
339
|
run_command('delete')
|
299
340
|
end
|
300
341
|
|
301
342
|
it 'should not write the data' do
|
302
|
-
@
|
303
|
-
Punch.expects(:write).never.when(@
|
343
|
+
@states['write'].become('test')
|
344
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
304
345
|
run_command('delete')
|
305
346
|
end
|
306
347
|
end
|
@@ -308,7 +349,8 @@ describe 'punch command' do
|
|
308
349
|
|
309
350
|
describe "when the command is 'log'" do
|
310
351
|
before :each do
|
311
|
-
|
352
|
+
@states['log'] = states('log').starts_as('setup')
|
353
|
+
Punch.stubs(:log).when(@states['log'].is('setup'))
|
312
354
|
@message = 'log message'
|
313
355
|
end
|
314
356
|
|
@@ -318,33 +360,41 @@ describe 'punch command' do
|
|
318
360
|
end
|
319
361
|
|
320
362
|
it 'should log a message for the given project' do
|
321
|
-
@test.become('test')
|
322
363
|
Punch.stubs(:write)
|
323
|
-
Punch.expects(:log).with(@project, @message)
|
324
|
-
run_command('log', @project, @message)
|
325
|
-
end
|
326
|
-
|
327
|
-
it 'should output the result' do
|
328
|
-
result = 'result'
|
329
|
-
Punch.stubs(:log).returns(result)
|
330
|
-
self.expects(:puts).with(result.inspect)
|
364
|
+
Punch.expects(:log).with(@project, @message)
|
331
365
|
run_command('log', @project, @message)
|
332
366
|
end
|
333
367
|
|
334
368
|
describe 'when logged successfully' do
|
335
|
-
|
336
|
-
@test.become('test')
|
369
|
+
before :each do
|
337
370
|
Punch.stubs(:log).returns(true)
|
338
|
-
|
371
|
+
end
|
372
|
+
|
373
|
+
it 'should write the data' do
|
374
|
+
Punch.expects(:write)
|
375
|
+
run_command('log', @project, @message)
|
376
|
+
end
|
377
|
+
|
378
|
+
it 'should not print anything' do
|
379
|
+
@states['puts'].become('test')
|
380
|
+
self.expects(:puts).never.when(@states['write'].is('test'))
|
339
381
|
run_command('log', @project, @message)
|
340
382
|
end
|
341
383
|
end
|
342
384
|
|
343
385
|
describe 'when not deleted successfully' do
|
344
|
-
|
345
|
-
@test.become('test')
|
386
|
+
before :each do
|
346
387
|
Punch.stubs(:log).returns(false)
|
347
|
-
|
388
|
+
end
|
389
|
+
|
390
|
+
it 'should not write the data' do
|
391
|
+
@states['write'].become('test')
|
392
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
393
|
+
run_command('log', @project, @message)
|
394
|
+
end
|
395
|
+
|
396
|
+
it 'should print a message' do
|
397
|
+
self.expects(:puts).with(regexp_matches(/not.+in/i))
|
348
398
|
run_command('log', @project, @message)
|
349
399
|
end
|
350
400
|
end
|
@@ -356,15 +406,15 @@ describe 'punch command' do
|
|
356
406
|
end
|
357
407
|
|
358
408
|
it 'should not log' do
|
359
|
-
@
|
409
|
+
@states['log'].become('test')
|
360
410
|
Punch.stubs(:write)
|
361
|
-
Punch.expects(:log).never.when(@
|
411
|
+
Punch.expects(:log).never.when(@states['log'].is('test'))
|
362
412
|
run_command('log')
|
363
413
|
end
|
364
414
|
|
365
415
|
it 'should not write the data' do
|
366
|
-
@
|
367
|
-
Punch.expects(:write).never.when(@
|
416
|
+
@states['write'].become('test')
|
417
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
368
418
|
run_command('log')
|
369
419
|
end
|
370
420
|
end
|
@@ -376,17 +426,41 @@ describe 'punch command' do
|
|
376
426
|
end
|
377
427
|
|
378
428
|
it 'should not log' do
|
379
|
-
@
|
429
|
+
@states['log'].become('test')
|
380
430
|
Punch.stubs(:write)
|
381
|
-
Punch.expects(:log).never.when(@
|
431
|
+
Punch.expects(:log).never.when(@states['log'].is('test'))
|
382
432
|
run_command('log', @project)
|
383
433
|
end
|
384
434
|
|
385
435
|
it 'should not write the data' do
|
386
|
-
@
|
387
|
-
Punch.expects(:write).never.when(@
|
436
|
+
@states['write'].become('test')
|
437
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
388
438
|
run_command('log', @project)
|
389
439
|
end
|
390
440
|
end
|
391
441
|
end
|
442
|
+
|
443
|
+
describe 'when the command is unknown' do
|
444
|
+
it 'should not error' do
|
445
|
+
lambda { run_command('bunk') }.should_not raise_error
|
446
|
+
end
|
447
|
+
|
448
|
+
it 'should print a message' do
|
449
|
+
self.expects(:puts).with(regexp_matches(/command.+unknown/i))
|
450
|
+
run_command('bunk')
|
451
|
+
end
|
452
|
+
|
453
|
+
it 'should not write the data' do
|
454
|
+
@states['write'].become('test')
|
455
|
+
Punch.expects(:write).never.when(@states['write'].is('test'))
|
456
|
+
run_command('bunk')
|
457
|
+
end
|
458
|
+
|
459
|
+
it 'should not run any punch command' do
|
460
|
+
[:in, :out, :delete, :status, :total, :log].each do |command|
|
461
|
+
Punch.expects(command).never
|
462
|
+
end
|
463
|
+
run_command('bunk')
|
464
|
+
end
|
465
|
+
end
|
392
466
|
end
|
data/spec/punch_spec.rb
CHANGED
@@ -375,9 +375,6 @@ describe Punch do
|
|
375
375
|
end
|
376
376
|
end
|
377
377
|
Punch.data = @data
|
378
|
-
|
379
|
-
@test = states('test').starts_as('setup')
|
380
|
-
Punch.stubs(:write).when(@test.is('setup'))
|
381
378
|
end
|
382
379
|
|
383
380
|
it 'should accept a project name' do
|
@@ -496,9 +493,6 @@ describe Punch do
|
|
496
493
|
end
|
497
494
|
end
|
498
495
|
Punch.data = @data
|
499
|
-
|
500
|
-
@test = states('test').starts_as('setup')
|
501
|
-
Punch.stubs(:write).when(@test.is('setup'))
|
502
496
|
end
|
503
497
|
|
504
498
|
it 'should accept a project name' do
|
@@ -668,6 +662,10 @@ describe Punch do
|
|
668
662
|
Punch.total(@project, :after => @now - 2001, :before => @now - 999).should == 1000
|
669
663
|
end
|
670
664
|
|
665
|
+
it 'should format the time spent if passed a format option' do
|
666
|
+
Punch.total(@project, :format => true).should == "1:05:00"
|
667
|
+
end
|
668
|
+
|
671
669
|
describe 'and is punched in' do
|
672
670
|
before :each do
|
673
671
|
@data[@project].push({ 'in' => @now - 25 })
|
@@ -708,6 +706,10 @@ describe Punch do
|
|
708
706
|
it 'should respect options' do
|
709
707
|
Punch.total(:after => @now - 51).should == { @projects[0] => 25, @projects[1] => 20, @projects[2] => 15}
|
710
708
|
end
|
709
|
+
|
710
|
+
it 'should format the time spent if passed a format option' do
|
711
|
+
Punch.total(:format => true).should == { @projects[0] => "00:25", @projects[1] => "01:10", @projects[2] => "00:15"}
|
712
|
+
end
|
711
713
|
end
|
712
714
|
end
|
713
715
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: one_inch_punch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yossef Mendelssohn
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-08-
|
12
|
+
date: 2008-08-28 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|