@@ -106,3 +106,139 @@ def test_unknown_query(self, mocked_db):
106106
107107 # Internal function, this should never happen
108108 self .assertIsNone (actual_value )
109+
110+
111+ @mock .patch ('flask_phpbb3.backends.psycopg2.Psycopg2Backend._db' )
112+ class TestPreparedCustomFieldsStatements (unittest .TestCase ):
113+ def test_empty (self , mocked_db ):
114+ connection = flask_phpbb3 .backends .psycopg2 .Psycopg2Backend (
115+ werkzeug .contrib .cache .SimpleCache (),
116+ {
117+ 'TABLE_PREFIX' : '' ,
118+ 'CUSTOM_USER_FIELDS' : [],
119+ }
120+ )
121+
122+ self .assertListEqual (
123+ connection ._functions .keys (),
124+ [
125+ 'has_membership_resolve' ,
126+ 'get_autologin' ,
127+ 'get_session' ,
128+ 'has_membership' ,
129+ 'fetch_acl_options' ,
130+ 'get_unread_notifications_count' ,
131+ 'get_user' ,
132+ 'get_user_profile' ,
133+ ]
134+ )
135+
136+ def test_valid (self , mocked_db ):
137+ connection = flask_phpbb3 .backends .psycopg2 .Psycopg2Backend (
138+ werkzeug .contrib .cache .SimpleCache (),
139+ {
140+ 'TABLE_PREFIX' : '' ,
141+ 'CUSTOM_USER_FIELDS' : ['some_field' , 'another_field' ],
142+ }
143+ )
144+
145+ self .assertSetEqual (
146+ set (connection ._functions .keys ()),
147+ set ([
148+ 'has_membership_resolve' ,
149+ 'get_autologin' ,
150+ 'get_session' ,
151+ 'set_some_field' ,
152+ 'has_membership' ,
153+ 'fetch_acl_options' ,
154+ 'set_another_field' ,
155+ 'get_unread_notifications_count' ,
156+ 'get_user' ,
157+ 'get_user_profile' ,
158+ ]),
159+ )
160+
161+
162+ @mock .patch ('flask_phpbb3.backends.psycopg2.Psycopg2Backend._db' )
163+ class TestPreparedCustomStatements (unittest .TestCase ):
164+ def test_empty (self , mocked_db ):
165+ connection = flask_phpbb3 .backends .psycopg2 .Psycopg2Backend (
166+ werkzeug .contrib .cache .SimpleCache (),
167+ {
168+ 'TABLE_PREFIX' : '' ,
169+ 'CUSTOM_STATEMENTS' : {},
170+ }
171+ )
172+
173+ self .assertListEqual (
174+ connection ._functions .keys (),
175+ [
176+ 'has_membership_resolve' ,
177+ 'get_autologin' ,
178+ 'get_session' ,
179+ 'has_membership' ,
180+ 'fetch_acl_options' ,
181+ 'get_unread_notifications_count' ,
182+ 'get_user' ,
183+ 'get_user_profile' ,
184+ ]
185+ )
186+
187+ def test_addition (self , mocked_db ):
188+ connection = flask_phpbb3 .backends .psycopg2 .Psycopg2Backend (
189+ werkzeug .contrib .cache .SimpleCache (),
190+ {
191+ 'TABLE_PREFIX' : '' ,
192+ 'CUSTOM_STATEMENTS' : {
193+ 'some_custom_statement' : 'some query' ,
194+ },
195+ }
196+ )
197+
198+ self .assertListEqual (
199+ connection ._functions .keys (),
200+ [
201+ 'has_membership_resolve' ,
202+ 'get_autologin' ,
203+ 'get_session' ,
204+ 'has_membership' ,
205+ 'fetch_acl_options' ,
206+ 'get_unread_notifications_count' ,
207+ 'some_custom_statement' ,
208+ 'get_user' ,
209+ 'get_user_profile' ,
210+ ]
211+ )
212+ self .assertEqual (
213+ connection ._functions ['some_custom_statement' ],
214+ 'some query' ,
215+ )
216+
217+ def test_override (self , mocked_db ):
218+ connection = flask_phpbb3 .backends .psycopg2 .Psycopg2Backend (
219+ werkzeug .contrib .cache .SimpleCache (),
220+ {
221+ 'TABLE_PREFIX' : '' ,
222+ 'CUSTOM_STATEMENTS' : {
223+ 'get_autologin' : 'overriden' ,
224+ },
225+ }
226+ )
227+
228+ self .assertListEqual (
229+ connection ._functions .keys (),
230+ [
231+ 'has_membership_resolve' ,
232+ 'get_autologin' ,
233+ 'get_session' ,
234+ 'has_membership' ,
235+ 'fetch_acl_options' ,
236+ 'get_unread_notifications_count' ,
237+ 'get_user' ,
238+ 'get_user_profile' ,
239+ ]
240+ )
241+ self .assertEqual (
242+ connection ._functions ['get_autologin' ],
243+ 'overriden' ,
244+ )
0 commit comments