Revision ae87c27e
Von Moritz Bunkus vor fast 9 Jahren hinzugefügt
t/db_helper/attr_duration.t | ||
---|---|---|
4 | 4 |
|
5 | 5 |
__PACKAGE__->meta->setup( |
6 | 6 |
table => 'dummy', |
7 |
columns => [ dummy => { type => 'numeric', precision => 2, scale => 12 }, ] |
|
7 |
columns => [ |
|
8 |
dummy => { type => 'numeric', precision => 2, scale => 12 }, |
|
9 |
inty => { type => 'integer' }, |
|
10 |
] |
|
8 | 11 |
); |
9 | 12 |
|
10 | 13 |
use SL::DB::Helper::AttrDuration; |
11 | 14 |
|
12 | 15 |
__PACKAGE__->attr_duration('dummy'); |
16 |
__PACKAGE__->attr_duration_minutes('inty'); |
|
13 | 17 |
|
14 | 18 |
package main; |
15 | 19 |
|
16 |
use Test::More tests => 91; |
|
20 |
use Test::More; # tests => 91;
|
|
17 | 21 |
use Test::Exception; |
18 | 22 |
|
19 | 23 |
use strict; |
... | ... | |
31 | 35 |
Support::TestSetup::login(); |
32 | 36 |
my $item; |
33 | 37 |
|
38 |
### attr_duration |
|
39 |
|
|
34 | 40 |
# Wenn das Attribut undef ist: |
35 | 41 |
is(new_item->dummy, undef, 'uninitialized: raw'); |
36 | 42 |
is(new_item->dummy_as_hours, 0, 'uninitialized: as_hours'); |
... | ... | |
165 | 171 |
lives_ok { new_item()->dummy_as_man_days_unit('hour') } 'known unit hour'; |
166 | 172 |
lives_ok { new_item()->dummy_as_man_days_unit('man_day') } 'known unit man_day'; |
167 | 173 |
|
174 |
### attr_duration_minutes |
|
175 |
|
|
176 |
# Wenn das Attribut undef ist: |
|
177 |
is(new_item->inty, undef, 'uninitialized: raw'); |
|
178 |
is(new_item->inty_as_hours, 0, 'uninitialized: as_hours'); |
|
179 |
is(new_item->inty_as_minutes, 0, 'uninitialized: as_minutes'); |
|
180 |
is(new_item->inty_as_duration_string, undef, 'uninitialized: as_duration_string'); |
|
181 |
|
|
182 |
# Auslesen kleiner 60 Minuten: |
|
183 |
is(new_item(inty => 37)->inty, 37, 'initialized < 60: raw'); |
|
184 |
is(new_item(inty => 37)->inty_as_hours, 0, 'initialized < 60: as_hours'); |
|
185 |
is(new_item(inty => 37)->inty_as_minutes, 37, 'initialized < 60: as_minutes'); |
|
186 |
is(new_item(inty => 37)->inty_as_duration_string, '0:37', 'initialized < 60: as_duration_string'); |
|
187 |
|
|
188 |
# Auslesen größer 60 Minuten: |
|
189 |
is(new_item(inty => 145)->inty, 145, 'initialized > 60: raw'); |
|
190 |
is(new_item(inty => 145)->inty_as_hours, 2, 'initialized > 60: as_hours'); |
|
191 |
is(new_item(inty => 145)->inty_as_minutes, 25, 'initialized > 60: as_minutes'); |
|
192 |
is(new_item(inty => 145)->inty_as_duration_string, '2:25', 'initialized > 60: as_duration_string'); |
|
193 |
|
|
194 |
$item = new_item(inty => 145); $item->inty_as_duration_string(undef); |
|
195 |
is($item->inty, undef, 'write as_duration_string undef read raw'); |
|
196 |
is($item->inty_as_minutes, 0, 'write as_duration_string undef read as_minutes'); |
|
197 |
is($item->inty_as_hours, 0, 'write as_duration_string undef read as_hours'); |
|
198 |
is($item->inty_as_duration_string, undef, 'write as_duration_string undef read as_duration_string'); |
|
199 |
|
|
200 |
$item = new_item(inty => 145); $item->inty_as_duration_string(''); |
|
201 |
is($item->inty, undef, 'write as_duration_string "" read raw'); |
|
202 |
is($item->inty_as_minutes, 0, 'write as_duration_string "" read as_minutes'); |
|
203 |
is($item->inty_as_hours, 0, 'write as_duration_string "" read as_hours'); |
|
204 |
is($item->inty_as_duration_string, undef, 'write as_duration_string "" read as_duration_string'); |
|
205 |
|
|
206 |
$item = new_item(inty => 145); $item->inty_as_duration_string("3:21"); |
|
207 |
is($item->inty, 201, 'write as_duration_string 3:21 read raw'); |
|
208 |
is($item->inty_as_minutes, 21, 'write as_duration_string 3:21 read as_minutes'); |
|
209 |
is($item->inty_as_hours, 3, 'write as_duration_string 3:21 read as_hours'); |
|
210 |
is($item->inty_as_duration_string, "3:21", 'write as_duration_string 3:21 read as_duration_string'); |
|
211 |
|
|
212 |
$item = new_item(inty => 145); $item->inty_as_duration_string("03:1"); |
|
213 |
is($item->inty, 181, 'write as_duration_string 03:1 read raw'); |
|
214 |
is($item->inty_as_minutes, 1, 'write as_duration_string 03:1 read as_minutes'); |
|
215 |
is($item->inty_as_hours, 3, 'write as_duration_string 03:1 read as_hours'); |
|
216 |
is($item->inty_as_duration_string, "3:01", 'write as_duration_string 03:1 read as_duration_string'); |
|
217 |
|
|
218 |
# Parametervalidierung |
|
219 |
throws_ok { new_item()->inty_as_duration_string('invalid') } qr/invalid.*format/i, 'invalid duration format'; |
|
220 |
|
|
168 | 221 |
done_testing(); |
Auch abrufbar als: Unified diff
AttrDuration: Implementation für Spalten, die Dauer in Minuten speichern