Revision b9cd11d7
Von Moritz Bunkus vor mehr als 3 Jahren hinzugefügt
t/db_helper/attr_duration.t | ||
---|---|---|
7 | 7 |
columns => [ |
8 | 8 |
dummy => { type => 'numeric', precision => 2, scale => 12 }, |
9 | 9 |
inty => { type => 'integer' }, |
10 |
miny => { type => 'integer' }, |
|
10 | 11 |
] |
11 | 12 |
); |
12 | 13 |
|
13 | 14 |
use SL::DB::Helper::AttrDuration; |
14 | 15 |
|
15 | 16 |
__PACKAGE__->attr_duration('dummy'); |
16 |
__PACKAGE__->attr_duration_minutes('inty'); |
|
17 |
__PACKAGE__->attr_duration_minutes('inty', 'miny');
|
|
17 | 18 |
|
18 | 19 |
package main; |
19 | 20 |
|
20 |
use Test::More tests => 120;
|
|
21 |
use Test::More tests => 130;
|
|
21 | 22 |
use Test::Exception; |
22 | 23 |
|
23 | 24 |
use strict; |
... | ... | |
218 | 219 |
is($item->inty_as_hours, 3, 'write as_duration_string 03:1 read as_hours'); |
219 | 220 |
is($item->inty_as_duration_string, "3:01", 'write as_duration_string 03:1 read as_duration_string'); |
220 | 221 |
|
222 |
local %::myconfig = (numberformat => "1.000,00"); |
|
223 |
|
|
224 |
$item = new_item(miny_in_hours => 2.5); |
|
225 |
is($item->miny, 150, 'write in_hours 2.5 read raw'); |
|
226 |
is($item->miny_as_minutes, 30, 'write in_hours 2.5 read as_minutes'); |
|
227 |
is($item->miny_as_hours, 2, 'write in_hours 2.5 read as_hours'); |
|
228 |
is($item->miny_in_hours, 2.5, 'write in_hours 2.5 read in_hours'); |
|
229 |
is($item->miny_in_hours_as_number, '2,50', 'write in_hours 2.5 read in_hours_as_number'); |
|
230 |
|
|
231 |
$item = new_item(miny_in_hours_as_number => '4,25'); |
|
232 |
is($item->miny, 255, 'write in_hours_as_number 4,25 read raw'); |
|
233 |
is($item->miny_as_minutes, 15, 'write in_hours_as_number 4,25 read as_minutes'); |
|
234 |
is($item->miny_as_hours, 4, 'write in_hours_as_number 4,25 read as_hours'); |
|
235 |
is($item->miny_in_hours, 4.25, 'write in_hours_as_number 4,25 read in_hours'); |
|
236 |
is($item->miny_in_hours_as_number, '4,25', 'write in_hours_as_number 4,25 read in_hours_as_number'); |
|
237 |
|
|
221 | 238 |
# Parametervalidierung |
222 | 239 |
throws_ok { new_item()->inty_as_duration_string('invalid') } qr/invalid.*format/i, 'invalid duration format'; |
223 | 240 |
|
Auch abrufbar als: Unified diff
AttrDuration für minutes: _in_hours und _in_hours_as_number
Generierte Helfer-Methoden für Attribute, die normalerweise Minuten
speichern. Die Funktion `attribute_in_hours` rechnet die Minuten in
Stunden um (beim Lesen) und umgekehrt (beim Schreiben).
`attribute_in_hours_as_number` formatiert zusätzlich den Wert in
Stunden zusätzlich in das Zahlenformat der Anwender*in bzw. parst
dieses Format beim Schreiben.