calc_working_hours 0.1.5 → 0.1.6
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.
@@ -6,7 +6,11 @@ module CalcWorkingHours
|
|
6
6
|
|
7
7
|
class TimeCardRow
|
8
8
|
attr_reader :starting_time, :ending_time, :break_time, :working_hours, :date_string, :time_point, :working_hours_in_range, :overtime, :id
|
9
|
-
def initialize(starting_time, ending_time, *break_time)
|
9
|
+
def initialize(date_string, starting_time, ending_time, *break_time)
|
10
|
+
unless date_string.class == String
|
11
|
+
raise "failure set_date (date should string class)! TimeCardRow class"
|
12
|
+
end
|
13
|
+
|
10
14
|
unless CalcHelper.valid_time_format?(starting_time) && CalcHelper.valid_time_format?(ending_time)
|
11
15
|
raise "failure initialize (invalid time format! TimeCardRow class)"
|
12
16
|
end
|
@@ -31,7 +35,7 @@ module CalcWorkingHours
|
|
31
35
|
unless break_time.empty?
|
32
36
|
total_break_time_string = CalcHelper.total_break_time(break_time).time_string
|
33
37
|
end
|
34
|
-
|
38
|
+
@date_string = date_string
|
35
39
|
@starting_time = starting_time
|
36
40
|
@ending_time = ending_time
|
37
41
|
@break_time = break_time
|
@@ -59,14 +63,6 @@ module CalcWorkingHours
|
|
59
63
|
self
|
60
64
|
end
|
61
65
|
|
62
|
-
def set_date(date)
|
63
|
-
unless date.class == String
|
64
|
-
raise "failure set_date (date should string class)! TimeCardRow class"
|
65
|
-
end
|
66
|
-
@date_string = date
|
67
|
-
self
|
68
|
-
end
|
69
|
-
|
70
66
|
def working_hours_in_range(start_range, end_range)
|
71
67
|
i = @time_point.size / 2
|
72
68
|
starting_time, ending_time = ""
|
@@ -5,7 +5,7 @@ module CalcWorkingHours
|
|
5
5
|
|
6
6
|
class TimeRecorder
|
7
7
|
attr_reader :time_cards
|
8
|
-
def initialize(path_to_csv, set_encode, id_row, card_id_row, starting_time_row, ending_time_row,
|
8
|
+
def initialize(path_to_csv, set_encode, id_row, card_id_row, date_row, starting_time_row, ending_time_row, *break_time_rows)
|
9
9
|
|
10
10
|
csv_data = File.read(path_to_csv) if set_encode == nil || set_encode == false
|
11
11
|
csv_data = File.read(path_to_csv, :encoding => set_encode + ":UTF-8") if set_encode
|
@@ -27,10 +27,10 @@ module CalcWorkingHours
|
|
27
27
|
|
28
28
|
if time_cards.has_key?(row[card_id_row])
|
29
29
|
raise "id mismatching! (TimeRecorder class)" unless time_cards[row[card_id_row]].id == row[id_row]
|
30
|
-
time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[starting_time_row], row[ending_time_row], *break_times)
|
30
|
+
time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], *break_times))
|
31
31
|
else
|
32
32
|
time_cards[row[card_id_row]] = TimeCard.new(row[card_id_row], row[id_row])
|
33
|
-
time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[starting_time_row], row[ending_time_row], *break_times)
|
33
|
+
time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], *break_times))
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -6,7 +6,7 @@ include CalcWorkingHours
|
|
6
6
|
describe TimeCardRow do
|
7
7
|
context "始業9:00、終業19:00、休憩11:00〜12:00、15:00〜16:00のとき" do
|
8
8
|
before do
|
9
|
-
@time_card_row = TimeCardRow.new("9:00", "19:00", ["11:00", "12:00"], ["15:00", "16:00"])
|
9
|
+
@time_card_row = TimeCardRow.new("2013/5/12", "9:00", "19:00", ["11:00", "12:00"], ["15:00", "16:00"])
|
10
10
|
end
|
11
11
|
|
12
12
|
it "始業時間は9:00となっている" do
|
@@ -21,14 +21,6 @@ describe TimeCardRow do
|
|
21
21
|
@time_card_row.working_hours.time_string.should == "8:00"
|
22
22
|
end
|
23
23
|
|
24
|
-
it "set_dateに日付(任意の文字列)を設定できる" do
|
25
|
-
@time_card_row.set_date("2013/8/1").date_string.class.should == String
|
26
|
-
end
|
27
|
-
|
28
|
-
it "set_dateにString以外を設定すると例外が発生する" do
|
29
|
-
proc { @time_card_row.set_date(Date.new(2013,8,1)) }.should raise_error
|
30
|
-
end
|
31
|
-
|
32
24
|
it "time_pointは9:00,11:00,12:00,15:00,16:00,19:00" do
|
33
25
|
@time_card_row.time_point.should == ["9:00", "11:00", "12:00", "15:00", "16:00", "19:00"]
|
34
26
|
end
|
@@ -57,7 +49,7 @@ describe TimeCardRow do
|
|
57
49
|
|
58
50
|
context "始業11:30、終業23:34、休憩15:38〜17:14のとき" do
|
59
51
|
before do
|
60
|
-
@time_card_row = TimeCardRow.new("11:30", "23:34", ["15:38", "17:14"])
|
52
|
+
@time_card_row = TimeCardRow.new("2013/5/12", "11:30", "23:34", ["15:38", "17:14"])
|
61
53
|
end
|
62
54
|
|
63
55
|
it "所定労働時間を8:00とすると、残業時間は2:28となる" do
|
@@ -67,36 +59,40 @@ describe TimeCardRow do
|
|
67
59
|
|
68
60
|
|
69
61
|
context "適正な時間設定と、不適な設定時間を設定したとき" do
|
62
|
+
it "set_dateにString以外を設定すると例外が発生する" do
|
63
|
+
proc { TimeCardRow.new(Date.new(2013, 5, 12), "22:00", "28:00") }.should raise_error
|
64
|
+
end
|
65
|
+
|
70
66
|
it "始業22:00、終業28:00は適正な始業・終業時間設定(0:00〜48:00)なので、エラーは発生しないこと" do
|
71
|
-
proc{ TimeCardRow.new("22:00", "28:00") }.should_not raise_error
|
67
|
+
proc{ TimeCardRow.new("2013/5/12", "22:00", "28:00") }.should_not raise_error
|
72
68
|
end
|
73
69
|
|
74
70
|
it "始業44:00、終業50:00は不適正な始業・終業時間設定なので、エラーが発生すること" do
|
75
|
-
proc{ TimeCardRow.new("44:00", "50:00") }.should raise_error
|
71
|
+
proc{ TimeCardRow.new("2013/5/12", "44:00", "50:00") }.should raise_error
|
76
72
|
end
|
77
73
|
|
78
74
|
it "始業四:00、終業5:00は不適正な時間フォーマットなので、エラーが発生すること" do
|
79
|
-
proc{ TimeCardRow.new("四:00", "5:00") }.should raise_error
|
75
|
+
proc{ TimeCardRow.new("2013/5/12", "四:00", "5:00") }.should raise_error
|
80
76
|
end
|
81
77
|
|
82
78
|
it "始業9:00、終業19:00の時系列に誤りが無いので、エラーは発生しないこと" do
|
83
|
-
proc { TimeCardRow.new("9:00", "19:00") }.should_not raise_error
|
79
|
+
proc { TimeCardRow.new("2013/5/12", "9:00", "19:00") }.should_not raise_error
|
84
80
|
end
|
85
81
|
|
86
82
|
it "始業18:00、終業8:00は時系列が誤っているので、エラーが発生すること" do
|
87
|
-
proc { TimeCardRow.new("18:00", "9:00") }.should raise_error
|
83
|
+
proc { TimeCardRow.new("2013/5/12", "18:00", "9:00") }.should raise_error
|
88
84
|
end
|
89
85
|
|
90
86
|
it "始業8:00、終業19:00、休憩12:00〜11:00は時系列が誤っているので、エラーが発生すること" do
|
91
|
-
proc { TimeCardRow.new("8:00", "19:00", ["12:00", "10:00"]) }.should raise_error
|
87
|
+
proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", ["12:00", "10:00"]) }.should raise_error
|
92
88
|
end
|
93
89
|
|
94
90
|
it "始業8:00、終業19:00、休憩12:00は休憩時間設定が誤っているので、エラーが発生すること" do
|
95
|
-
proc { TimeCardRow.new("8:00", "19:00", "12:00") }.should raise_error
|
91
|
+
proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", "12:00") }.should raise_error
|
96
92
|
end
|
97
93
|
|
98
94
|
it "始業8:00、終業19:00、休憩7:00〜11:00は時系列が誤っているので、エラーが発生すること" do
|
99
|
-
proc { TimeCardRow.new("8:00", "19:00", ["7:00", "10:00"]) }.should raise_error
|
95
|
+
proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", ["7:00", "10:00"]) }.should raise_error
|
100
96
|
end
|
101
97
|
|
102
98
|
end
|
@@ -7,7 +7,7 @@ describe TimeRecorder do
|
|
7
7
|
context "data_sample.csv(Shift_JIS)の通りTimeRecorderが与えられている場合" do
|
8
8
|
before do
|
9
9
|
path_to_csv = File.expand_path(File.dirname(__FILE__)) + "/data_sample.csv"
|
10
|
-
@time_recorder = TimeRecorder.new(path_to_csv, "Shift_JIS", "従業員番号", "カード番号", "
|
10
|
+
@time_recorder = TimeRecorder.new(path_to_csv, "Shift_JIS", "従業員番号", "カード番号", "年/月/日", "出勤打刻", "退勤打刻", ["外出打刻", "戻打刻"])
|
11
11
|
end
|
12
12
|
|
13
13
|
it "タイムカードのデータが5件あること" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: calc_working_hours
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-09-23 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement: &
|
16
|
+
requirement: &70203738463680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.3'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70203738463680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70203738462920 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70203738462920
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70203738462180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70203738462180
|
47
47
|
description: 例えば、173:08のような表記の時間を計算するライブラリです
|
48
48
|
email:
|
49
49
|
- ''
|
@@ -89,7 +89,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
89
|
version: '0'
|
90
90
|
segments:
|
91
91
|
- 0
|
92
|
-
hash:
|
92
|
+
hash: 2883912784685005867
|
93
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
version: '0'
|
99
99
|
segments:
|
100
100
|
- 0
|
101
|
-
hash:
|
101
|
+
hash: 2883912784685005867
|
102
102
|
requirements: []
|
103
103
|
rubyforge_project:
|
104
104
|
rubygems_version: 1.8.10
|