1 package KohaTest::Members::AttributeTypes;
2 use base qw( KohaTest );
9 use C4::Members::AttributeTypes;
10 sub testing_class { 'C4::Members::AttributeTypes' };
12 sub methods : Test( 1 ) {
25 authorised_value_category
30 can_ok( $self->testing_class, @methods );
33 sub startup_50_create_types : Test( startup => 28 ) {
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 ''");
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");
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'");
57 ok(!$type1->unique_id(), "unique_id now false");
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");
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");
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");
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');
84 $type1->repeatable(1);
85 $type1->staff_searchable(1);
87 is($type1->num_patrons(), 0, 'no patrons using the new attribute type yet');
89 my $type2 = C4::Members::AttributeTypes->new('ABC', 'ABC ID');
93 sub shutdown_50_list_and_remove_types : Test( shutdown => 11 ) {
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");
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");
112 C4::Members::AttributeTypes->delete('ABC');
114 my @newlist = C4::Members::AttributeTypes::GetAttributeTypes();
115 is(scalar(@newlist), 0, "no types left after deletion");