bug 5327 updated test file
[koha.git] / t / lib / KohaTest / Members / AttributeTypes.pm
1 package KohaTest::Members::AttributeTypes;
2 use base qw( KohaTest );
3
4 use strict;
5 use warnings;
6
7 use Test::More;
8
9 use C4::Members::AttributeTypes;
10 sub testing_class { 'C4::Members::AttributeTypes' };
11
12 sub methods : Test( 1 ) {
13     my $self = shift;
14     my @methods = qw( 
15                     new
16                     fetch
17                     GetAttributeTypes
18                     code
19                     description
20                     repeatable
21                     unique_id
22                     opac_display
23                     password_allowed
24                     staff_searchable
25                     authorised_value_category
26                     store
27                     delete
28                 );
29     
30     can_ok( $self->testing_class, @methods );    
31 }
32
33 sub startup_50_create_types : Test( startup => 28 ) {
34     my $self = shift;
35
36     my $type1 = C4::Members::AttributeTypes->new('CAMPUSID', 'institution ID');
37     isa_ok($type1,  'C4::Members::AttributeTypes');
38     is($type1->code(), 'CAMPUSID', "set code in constructor");
39     is($type1->description(), 'institution ID', "set description in constructor");
40     ok(!$type1->repeatable(), "repeatable defaults to false");
41     ok(!$type1->unique_id(), "unique_id defaults to false");
42     ok(!$type1->opac_display(), "opac_display defaults to false");
43     ok(!$type1->password_allowed(), "password_allowed defaults to false");
44     ok(!$type1->staff_searchable(), "staff_searchable defaults to false");
45     is($type1->authorised_value_category(), '', "authorised_value_category defaults to ''");
46
47     $type1->repeatable('foobar');
48     ok($type1->repeatable(), "repeatable now true");
49     cmp_ok($type1->repeatable(), '==', 1, "repeatable not set to 'foobar'");
50     $type1->repeatable(0);
51     ok(!$type1->repeatable(), "repeatable now false");
52     
53     $type1->unique_id('foobar');
54     ok($type1->unique_id(), "unique_id now true");
55     cmp_ok($type1->unique_id(), '==', 1, "unique_id not set to 'foobar'");
56     $type1->unique_id(0);
57     ok(!$type1->unique_id(), "unique_id now false");
58     
59     $type1->opac_display('foobar');
60     ok($type1->opac_display(), "opac_display now true");
61     cmp_ok($type1->opac_display(), '==', 1, "opac_display not set to 'foobar'");
62     $type1->opac_display(0);
63     ok(!$type1->opac_display(), "opac_display now false");
64     
65     $type1->password_allowed('foobar');
66     ok($type1->password_allowed(), "password_allowed now true");
67     cmp_ok($type1->password_allowed(), '==', 1, "password_allowed not set to 'foobar'");
68     $type1->password_allowed(0);
69     ok(!$type1->password_allowed(), "password_allowed now false");
70     
71     $type1->staff_searchable('foobar');
72     ok($type1->staff_searchable(), "staff_searchable now true");
73     cmp_ok($type1->staff_searchable(), '==', 1, "staff_searchable not set to 'foobar'");
74     $type1->staff_searchable(0);
75     ok(!$type1->staff_searchable(), "staff_searchable now false");
76
77     $type1->code('INSTID');
78     is($type1->code(), 'CAMPUSID', 'code() allows retrieving but not setting');    
79     $type1->description('student ID');
80     is($type1->description(), 'student ID', 'set description');    
81     $type1->authorised_value_category('CAT');
82     is($type1->authorised_value_category(), 'CAT', 'set authorised_value_category');    
83     
84     $type1->repeatable(1);
85     $type1->staff_searchable(1);
86     $type1->store();
87     is($type1->num_patrons(), 0, 'no patrons using the new attribute type yet');
88
89     my $type2 = C4::Members::AttributeTypes->new('ABC', 'ABC ID');
90     $type2->store();
91 }
92
93 sub shutdown_50_list_and_remove_types : Test( shutdown => 11 ) {
94     my $self = shift;
95
96     my @list = C4::Members::AttributeTypes::GetAttributeTypes();    
97     is_deeply(\@list, [ { code => 'ABC', description => 'ABC ID' },
98                         { code => 'CAMPUSID', description => 'student ID' } ], "retrieved list of types");
99
100     my $type1 = C4::Members::AttributeTypes->fetch($list[1]->{code}); 
101     isa_ok($type1, 'C4::Members::AttributeTypes');
102     is($type1->code(), 'CAMPUSID', 'fetched code');    
103     is($type1->description(), 'student ID', 'fetched description');    
104     is($type1->authorised_value_category(), 'CAT', 'fetched authorised_value_category');    
105     ok($type1->repeatable(), "fetched repeatable");
106     ok(!$type1->unique_id(), "fetched unique_id");
107     ok(!$type1->opac_display(), "fetched opac_display");
108     ok(!$type1->password_allowed(), "fetched password_allowed");
109     ok($type1->staff_searchable(), "fetched staff_searchable");
110
111     $type1->delete();
112     C4::Members::AttributeTypes->delete('ABC');
113
114     my @newlist = C4::Members::AttributeTypes::GetAttributeTypes();    
115     is(scalar(@newlist), 0, "no types left after deletion");   
116     
117 }
118
119 1;