X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=t%2Fwh%2Ftransfer.t;h=8d88fb1787355a579d04ea5b505965e4c45a31fb;hb=3424bf80214aede7a8318c39b754290738e4aea0;hp=d519ac30966fc407b101c29d66e3ebd98f088045;hpb=4fcb6449e33f19651a26c71034598c836ecd1771;p=kivitendo-erp.git diff --git a/t/wh/transfer.t b/t/wh/transfer.t index d519ac309..8d88fb178 100644 --- a/t/wh/transfer.t +++ b/t/wh/transfer.t @@ -8,10 +8,16 @@ use_ok 'SL::DB::Part'; use_ok 'SL::DB::Warehouse'; use_ok 'SL::WH'; +use_ok('SL::DB::Inventory'); + + Support::TestSetup::login(); -my $part = SL::DB::Manager::Part->get_first; -is(ref $part, 'SL::DB::Part', 'loading a part to test with id ' . $part->id); +my $part = SL::DB::Part->new(unit => 'mg', description => 'TestObject'); +$part->save(); + +is(ref($part), 'SL::DB::Part', 'loading a part to test with id ' . $part->id); + my $wh = SL::DB::Manager::Warehouse->get_first; is(ref $wh, 'SL::DB::Warehouse', 'loading a warehouse to test with id ' . $wh->id); @@ -35,9 +41,19 @@ my $report = sub { return $result; }; -my $r1 = $report->(); +sub test (&@) { + my ($arg_sub, @transfers) = @_; + my $before = $report->(); + + WH->transfer(@transfers); + + my $after = $report->(); + my @args = $arg_sub->($before, $after); -WH->transfer({ + is $args[0], $args[1], $args[2]; +} + +test { shift->{qty}, shift->{qty} + 4, 'transfer one way' } { transfer_type => 'transfer', parts_id => $part->id, src_warehouse_id => $wh->id, @@ -46,15 +62,11 @@ WH->transfer({ dst_bin_id => $bin2->id, qty => 4, chargenumber => '', -}); - -my $r2 = $report->(); - -is $r1->{qty}, $r2->{qty} + 4, 'transfer one way'; +}; ################################################# -WH->transfer({ +test { shift->{qty}, shift->{qty} - 4, 'and back' } { transfer_type => 'transfer', parts_id => $part->id, src_warehouse_id => $wh->id, @@ -63,12 +75,21 @@ WH->transfer({ dst_bin_id => $bin1->id, qty => 4, chargenumber => '', -}); - +}; -my $r3 = $report->(); +################################################# -is $r2->{qty}, $r3->{qty} - 4, 'and back'; +test {shift->{qty}, shift->{qty} + 4000000000, 'transfer one way with unit'} { + transfer_type => 'transfer', + parts_id => $part->id, + src_warehouse_id => $wh->id, + dst_warehouse_id => $wh->id, + src_bin_id => $bin1->id, + dst_bin_id => $bin2->id, + qty => 4, + unit => 't', + chargenumber => '', +}; ############################################## @@ -76,22 +97,18 @@ use_ok 'SL::DB::TransferType'; # object interface test -WH->transfer({ +test { shift->{qty}, shift->{qty} + 6.2, 'object transfer one way' } { transfer_type => SL::DB::Manager::TransferType->find_by(description => 'transfer'), parts => $part, src_bin => $bin1, dst_bin => $bin2, qty => 6.2, chargenumber => '', -}); - -my $r4 = $report->(); - -is $r3->{qty}, $r4->{qty} + 6.2, 'object transfer one way'; +}; ############################################# -WH->transfer({ +test { shift->{qty}, shift->{qty} - 6.2, 'full object transfer back' } { transfer_type => SL::DB::Manager::TransferType->find_by(description => 'transfer'), parts => $part, src_bin => $bin2, @@ -100,15 +117,11 @@ WH->transfer({ dst_warehouse => $wh, qty => 6.2, chargenumber => '', -}); - -my $r5 = $report->(); - -is $r4->{qty}, $r5->{qty} - 6.2, 'full object transfer back'; +}; ############################################# -WH->transfer({ +test { shift->{qty}, shift->{qty}, 'back and forth in one transaction' } { transfer_type => SL::DB::Manager::TransferType->find_by(description => 'transfer'), parts => $part, src_bin => $bin2, @@ -125,16 +138,30 @@ WH->transfer({ dst_bin => $bin2, dst_warehouse => $wh, qty => 1, -}); - -my $r6 = $report->(); +}; -is $r5->{qty}, $r6->{qty}, 'back and forth in one transaction'; +############################################# -done_testing; +test { shift->{qty}, shift->{qty}, 'warehouse reduced interface' } { + transfer_type => SL::DB::Manager::TransferType->find_by(description => 'transfer'), + parts => $part, + src_bin => $bin2, + dst_bin => $bin1, + qty => 1, +}, +{ + transfer_type => SL::DB::Manager::TransferType->find_by(description => 'transfer'), + parts => $part, + src_bin => $bin1, + dst_bin => $bin2, + qty => 1, +}; +SL::DB::Manager::Inventory->delete_objects(where => [parts_id => $part->id]); +$part->delete(); +done_testing; 1;