View | Details | Raw Unified | Return to bug 14778
Collapse All | Expand All

(-)a/t/ItemType.t (-44 / +26 lines)
Lines 1-59 Link Here
1
#!/usr/bin/perl
1
#!/usr/bin/perl
2
2
3
use Modern::Perl;
3
use Modern::Perl;
4
use DBI;
4
use Test::More tests => 25;
5
use Test::More tests => 27;
5
use t::lib::Mocks;
6
use Test::MockModule;
6
7
7
use_ok('C4::ItemType');
8
BEGIN {
8
9
    use_ok('C4::ItemType');
9
use Test::DBIx::Class {
10
    schema_class => 'Koha::Schema',
11
    connect_info => ['dbi:SQLite:dbname=:memory:','',''],
12
    connect_opts => { name_sep => '.', quote_char => '`', },
13
    fixture_class => '::Populate',
14
}, 'Itemtype' ;
15
16
sub fixtures {
17
    my ( $data ) = @_;
18
    fixtures_ok [
19
        Itemtype => [
20
            [
21
                'itemtype', 'description', 'rentalcharge', 'notforloan',
22
                'imageurl', 'summary', 'checkinmsg'
23
            ],
24
            @$data,
25
        ],
26
    ], 'add fixtures';
10
}
27
}
11
28
12
my $module = new Test::MockModule('C4::Context');
29
my $db = Test::MockModule->new('Koha::Database');
13
$module->mock(
30
$db->mock( _new_schema => sub { return Schema(); } );
14
    '_new_dbh',
15
    sub {
16
        my $dbh = DBI->connect( 'DBI:Mock:', '', '' )
17
          || die "Cannot create handle: $DBI::errstr\n";
18
        return $dbh;
19
    }
20
);
21
31
22
# Mock data
32
# Mock data
23
my $itemtypes = [
33
my $itemtypes = [
24
    [
25
        'itemtype', 'description', 'rentalcharge', 'notforloan',
26
        'imageurl', 'summary', 'checkinmsg'
27
    ],
28
    [ 'BK', 'Books', 0, 0, '', '', 'foo' ],
34
    [ 'BK', 'Books', 0, 0, '', '', 'foo' ],
29
    [ 'CD', 'CDRom', 0, 0, '', '', 'bar' ]
35
    [ 'CD', 'CDRom', 0, 0, '', '', 'bar' ]
30
];
36
];
31
37
32
my $itemtypes_empty = [
33
    [
34
        'itemtype', 'description', 'rentalcharge', 'notforloan',
35
        'imageurl', 'summary', 'checkinmsg'
36
    ],
37
];
38
39
my $dbh = C4::Context->dbh();
40
$dbh->{mock_add_resultset} = $itemtypes_empty;
41
42
my @itemtypes = C4::ItemType->all();
38
my @itemtypes = C4::ItemType->all();
43
is( @itemtypes, 0, 'Testing all itemtypes is empty' );
39
is( @itemtypes, 0, 'Testing all itemtypes is empty' );
44
40
45
# This should run exactly one query so we can test
46
my $history = $dbh->{mock_all_history};
47
is( scalar( @{$history} ), 1, 'Correct number of statements executed' );
48
49
# Now lets mock some data
41
# Now lets mock some data
50
$dbh->{mock_add_resultset} = $itemtypes;
42
fixtures($itemtypes);
51
43
52
@itemtypes = C4::ItemType->all();
44
@itemtypes = C4::ItemType->all();
53
45
54
$history = $dbh->{mock_all_history};
55
is( scalar( @{$history} ), 2, 'Correct number of statements executed' );
56
57
is( @itemtypes, 2, 'ItemType->all should return an array with 2 elements' );
46
is( @itemtypes, 2, 'ItemType->all should return an array with 2 elements' );
58
47
59
is( $itemtypes[0]->fish, undef, 'Calling a bad descriptor gives undef' );
48
is( $itemtypes[0]->fish, undef, 'Calling a bad descriptor gives undef' );
Lines 82-96 is( $itemtypes[0]->checkinmsg, 'foo', 'first checkinmsg is foo' ); Link Here
82
71
83
is( $itemtypes[1]->checkinmsg, 'bar', 'second checkinmsg is bar' );
72
is( $itemtypes[1]->checkinmsg, 'bar', 'second checkinmsg is bar' );
84
73
85
# Mock the data again
86
$dbh->{mock_add_resultset} = $itemtypes;
87
88
# Test get(), which should return one itemtype
74
# Test get(), which should return one itemtype
89
my $itemtype = C4::ItemType->get( 'BK' );
75
my $itemtype = C4::ItemType->get( 'BK' );
90
76
91
$history = $dbh->{mock_all_history};
92
is( scalar( @{$history} ), 3, 'Correct number of statements executed' );
93
94
is( $itemtype->fish, undef, 'Calling a bad descriptor gives undef' );
77
is( $itemtype->fish, undef, 'Calling a bad descriptor gives undef' );
95
78
96
is( $itemtype->itemtype, 'BK', 'itemtype is bk' );
79
is( $itemtype->itemtype, 'BK', 'itemtype is bk' );
97
- 

Return to bug 14778