Showing 2 changed files with 6 additions and 91 deletions
+6 -9
lib/DBIx/Custom.pm
... ...
@@ -20,18 +20,15 @@ __PACKAGE__->class_attr(_query_cache_keys => sub { [] });
20 20
 __PACKAGE__->class_attr('query_cache_max', default => 50,
21 21
                                            inherit => 'scalar_copy');
22 22
 
23
-__PACKAGE__->dual_attr([qw/user password data_source/], inherit => 'scalar_copy');
24
-__PACKAGE__->dual_attr([qw/database host port/],        inherit => 'scalar_copy');
25
-__PACKAGE__->dual_attr([qw/bind_filter fetch_filter/],  inherit => 'scalar_copy');
23
+__PACKAGE__->attr([qw/user password data_source/]);
24
+__PACKAGE__->attr([qw/database host port/]);
25
+__PACKAGE__->attr([qw/bind_filter fetch_filter options/]);
26 26
 
27
-__PACKAGE__->dual_attr([qw/options filters formats/],
27
+__PACKAGE__->dual_attr([qw/ filters formats/],
28 28
                        default => sub { {} }, inherit => 'hash_copy');
29 29
 
30
-__PACKAGE__->dual_attr('result_class', default => 'DBIx::Custom::Result',
31
-                                       inherit => 'scalar_copy');
32
-
33
-__PACKAGE__->dual_attr('sql_tmpl', default => sub {DBIx::Custom::SQL::Template->new},
34
-                                   inherit   => sub {$_[0] ? $_[0]->clone : undef});
30
+__PACKAGE__->attr(result_class => 'DBIx::Custom::Result');
31
+__PACKAGE__->attr(sql_tmpl => sub { DBIx::Custom::SQL::Template->new });
35 32
 
36 33
 sub add_filter {
37 34
     my $invocant = shift;
-82
t/dbix-custom-core.t
... ...
@@ -48,62 +48,25 @@ test 'Sub class constructor';
48 48
     use base 'DBIx::Custom';
49 49
     
50 50
     __PACKAGE__
51
-      ->user('a')
52
-      ->database('a')
53
-      ->password('b')
54
-      ->data_source('c')
55
-      ->options({d => 1, e => 2})
56 51
       ->filters({f => 3})
57 52
       ->formats({f => 3})
58
-      ->bind_filter('f')
59
-      ->fetch_filter('g')
60
-      ->result_class('DBIx::Custom::Result')
61
-      ->sql_tmpl($SQL_TMPL->{0})
62 53
     ;
63 54
 }
64 55
 $dbi = DBIx::Custom::T1->new(
65
-    user => 'ao',
66
-    database => 'ao',
67
-    password => 'bo',
68
-    data_source => 'co',
69
-    options => {do => 10, eo => 20},
70 56
     filters => {
71 57
         fo => 30,
72 58
     },
73 59
     formats => {
74 60
         fo => 30,
75 61
     },
76
-    bind_filter => 'fo',
77
-    fetch_filter => 'go',
78
-    result_class => 'ho',
79
-    sql_tmpl => $SQL_TMPL->{0},
80 62
 );
81
-is($dbi->user, 'ao', "$test : user");
82
-is($dbi->database, 'ao', "$test : database");
83
-is($dbi->password, 'bo', "$test : passowr");
84
-is($dbi->data_source, 'co', "$test : data_source");
85
-is_deeply($dbi->options, {do => 10, eo => 20}, "$test : options");
86 63
 is_deeply(scalar $dbi->filters, {fo => 30}, "$test : filters");
87 64
 is_deeply(scalar $dbi->formats, {fo => 30}, "$test : formats");
88
-is($dbi->bind_filter, 'fo', "$test : bind_filter");
89
-is($dbi->fetch_filter, 'go', "$test : fetch_filter");
90
-is($dbi->result_class, 'ho', "$test : result_class");
91
-is($dbi->sql_tmpl->tag_start, 0, "$test : sql_tmpl");
92
-isa_ok($dbi, 'DBIx::Custom::T1');
93 65
 
94 66
 test 'Sub class constructor default';
95 67
 $dbi = DBIx::Custom::T1->new;
96
-is($dbi->user, 'a', "$test : user");
97
-is($dbi->database, 'a', "$test : database");
98
-is($dbi->password, 'b', "$test : password");
99
-is($dbi->data_source, 'c', "$test : data_source");
100
-is_deeply($dbi->options, {d => 1, e => 2}, "$test : options");
101 68
 is_deeply($dbi->filters, {f => 3}, "$test : filters");
102 69
 is_deeply($dbi->formats, {f => 3}, "$test : formats");
103
-is($dbi->bind_filter, 'f', "$test : bind_filter");
104
-is($dbi->fetch_filter, 'g', "$test : fetch_filter");
105
-is($dbi->result_class, 'DBIx::Custom::Result', "$test : result_class");
106
-is($dbi->sql_tmpl->tag_start, 0, "$test : sql_tmpl");
107 70
 isa_ok($dbi, 'DBIx::Custom::T1');
108 71
 
109 72
 
... ...
@@ -113,17 +76,8 @@ test 'Sub sub class constructor default';
113 76
     use base 'DBIx::Custom::T1';
114 77
 }
115 78
 $dbi = DBIx::Custom::T1_2->new;
116
-is($dbi->user, 'a', "$test : user");
117
-is($dbi->database, 'a', "$test : database");
118
-is($dbi->password, 'b', "$test : passowrd");
119
-is($dbi->data_source, 'c', "$test : data_source");
120
-is_deeply($dbi->options, {d => 1, e => 2}, "$test : options");
121 79
 is_deeply(scalar $dbi->filters, {f => 3}, "$test : filters");
122 80
 is_deeply(scalar $dbi->formats, {f => 3}, "$test : formats");
123
-is($dbi->bind_filter, 'f', "$test : bind_filter");
124
-is($dbi->fetch_filter, 'g', "$test : fetch_filter");
125
-is($dbi->result_class, 'DBIx::Custom::Result', "$test : result_class");
126
-is($dbi->sql_tmpl->tag_start, 0, "$test sql_tmpl");
127 81
 isa_ok($dbi, 'DBIx::Custom::T1_2');
128 82
 
129 83
 
... ...
@@ -133,63 +87,27 @@ test 'Customized sub class constructor default';
133 87
     use base 'DBIx::Custom::T1';
134 88
     
135 89
     __PACKAGE__
136
-      ->user('ao')
137
-      ->database('ao')
138
-      ->password('bo')
139
-      ->data_source('co')
140
-      ->options({do => 10, eo => 20})
141 90
       ->filters({fo => 30})
142 91
       ->formats({fo => 30})
143
-      ->bind_filter('fo')
144
-      ->fetch_filter('go')
145
-      ->result_class('ho')
146
-      ->sql_tmpl($SQL_TMPL->{1})
147 92
     ;
148 93
 }
149 94
 $dbi = DBIx::Custom::T1_3->new;
150
-is($dbi->user, 'ao', "$test : user");
151
-is($dbi->database, 'ao', "$test : database");
152
-is($dbi->password, 'bo', "$test : password");
153
-is($dbi->data_source, 'co', "$test : data_source");
154
-is_deeply($dbi->options, {do => 10, eo => 20}, "$test : options");
155 95
 is_deeply(scalar $dbi->filters, {fo => 30}, "$test : filters");
156 96
 is_deeply(scalar $dbi->formats, {fo => 30}, "$test : formats");
157
-is($dbi->bind_filter, 'fo', "$test : bind_filter");
158
-is($dbi->fetch_filter, 'go', "$test : fetch_filter");
159
-is($dbi->result_class, 'ho', "$test : result_class");
160
-is($dbi->sql_tmpl->tag_start, 1, "$test : sql_tmpl");
161 97
 isa_ok($dbi, 'DBIx::Custom::T1_3');
162 98
 
163 99
 
164 100
 test 'Customized sub class constructor';
165 101
 $dbi = DBIx::Custom::T1_3->new(
166
-    user => 'a',
167
-    database => 'a',
168
-    password => 'b',
169
-    data_source => 'c',
170
-    options => {d => 1, e => 2},
171 102
     filters => {
172 103
         f => 3,
173 104
     },
174 105
     formats => {
175 106
         f => 3,
176 107
     },
177
-    bind_filter => 'f',
178
-    fetch_filter => 'g',
179
-    result_class => 'h',
180
-    sql_tmpl => $SQL_TMPL->{2},
181 108
 );
182
-is($dbi->user, 'a', "$test : user");
183
-is($dbi->database, 'a', "$test : database");
184
-is($dbi->password, 'b', "$test : password");
185
-is($dbi->data_source, 'c', "$test : data_source");
186
-is_deeply($dbi->options, {d => 1, e => 2}, "$test : options");
187 109
 is_deeply($dbi->filters, {f => 3}, "$test : filters");
188 110
 is_deeply($dbi->formats, {f => 3}, "$test : formats");
189
-is($dbi->bind_filter, 'f', "$test : bind_filter");
190
-is($dbi->fetch_filter, 'g', "$test : fetch_filter");
191
-is($dbi->result_class, 'h', "$test : result_class");
192
-is($dbi->sql_tmpl->tag_start, 2, "$test : sql_tmpl");
193 111
 isa_ok($dbi, 'DBIx::Custom');
194 112
 
195 113