comparison test/test_templating.py @ 6404:e29d5f4e0af4

issue2551132 - Setting form value in query string --- issues Code now uses value in query string even if there is a default_value set. Also handle the exception caused by an invalid value specified in the query string.
author John Rouillard <rouilj@ieee.org>
date Mon, 10 May 2021 16:47:51 -0400
parents a7e7314fb7d9
children f1f8d75edd97
comparison
equal deleted inserted replaced
6403:9957d8d10783 6404:e29d5f4e0af4
43 from roundup.anypy.strings import u2s, s2u 43 from roundup.anypy.strings import u2s, s2u
44 44
45 class MockDatabase(MockNull): 45 class MockDatabase(MockNull):
46 def getclass(self, name): 46 def getclass(self, name):
47 # limit class names 47 # limit class names
48 if name not in [ 'issue', 'user' ]: 48 if name not in [ 'issue', 'user', 'status' ]:
49 raise KeyError('There is no class called "%s"' % name) 49 raise KeyError('There is no class called "%s"' % name)
50 # Class returned must have hasnode(id) method that returns true 50 # Class returned must have hasnode(id) method that returns true
51 # otherwise designators like 'issue1' can't be hyperlinked. 51 # otherwise designators like 'issue1' can't be hyperlinked.
52 self.classes[name].hasnode = lambda id: True if int(id) < 10 else False 52 self.classes[name].hasnode = lambda id: True if int(id) < 10 else False
53 return self.classes[name] 53 return self.classes[name]
142 """Make sure lookup of a Link property works even in the 142 """Make sure lookup of a Link property works even in the
143 presence of multiple values in the form.""" 143 presence of multiple values in the form."""
144 def lookup(key) : 144 def lookup(key) :
145 self.assertEqual(key, key.strip()) 145 self.assertEqual(key, key.strip())
146 return "Status%s"%key 146 return "Status%s"%key
147 self.form.list.append(MiniFieldStorage("status", "1")) 147 self.form.list.append(MiniFieldStorage("issue@status", "1"))
148 self.form.list.append(MiniFieldStorage("status", "2")) 148 self.form.list.append(MiniFieldStorage("issue@status", "2"))
149 status = hyperdb.Link("status") 149 status = hyperdb.Link("status")
150 self.client.db.classes = dict \ 150 self.client.db.classes = dict \
151 ( issue = MockNull(getprops = lambda : dict(status = status)) 151 ( issue = MockNull(getprops = lambda : dict(status = status))
152 , status = MockNull(get = lambda id, name : id, lookup = lookup) 152 , status = MockNull(get = lambda id, name : id, lookup = lookup)
153 ) 153 )
154 self.client.form = self.form
154 cls = HTMLClass(self.client, "issue") 155 cls = HTMLClass(self.client, "issue")
155 cls["status"] 156
157 s = cls["status"]
158 self.assertEqual(s._value, '1')
159
160 def test_link_default(self):
161 """Make sure default value for link is returned
162 if new item and no value in form."""
163 def lookup(key) :
164 self.assertEqual(key, key.strip())
165 return "Status%s"%key
166 status = hyperdb.Link("status")
167 # set default_value
168 status.__dict__['_Type__default_value'] = "4"
169
170 self.client.db.classes = dict \
171 ( issue = MockNull(getprops = lambda : dict(status = status))
172 , status = MockNull(get = lambda id, name : id, lookup = lookup, get_default_value = lambda: 4)
173 )
174 self.client.form = self.form
175
176 cls = HTMLClass(self.client, "issue")
177 s = cls["status"]
178 self.assertEqual(s._value, '4')
179
180 def test_link_with_value_and_default(self):
181 """Make sure default value is not used if there
182 is a value in the form."""
183 def lookup(key) :
184 self.assertEqual(key, key.strip())
185 return "Status%s"%key
186 self.form.list.append(MiniFieldStorage("issue@status", "2"))
187 self.form.list.append(MiniFieldStorage("issue@status", "1"))
188 status = hyperdb.Link("status")
189 # set default_value
190 status.__dict__['_Type__default_value'] = "4"
191
192 self.client.db.classes = dict \
193 ( issue = MockNull(getprops = lambda : dict(status = status))
194 , status = MockNull(get = lambda id, name : id, lookup = lookup, get_default_value = lambda: 4)
195 )
196 self.client.form = self.form
197
198 cls = HTMLClass(self.client, "issue")
199 s = cls["status"]
200 self.assertEqual(s._value, '2')
156 201
157 def test_multilink(self): 202 def test_multilink(self):
158 """`lookup` of an item will fail if leading or trailing whitespace 203 """`lookup` of an item will fail if leading or trailing whitespace
159 has not been stripped. 204 has not been stripped.
160 """ 205 """

Roundup Issue Tracker: http://roundup-tracker.org/