@@ -1253,6 +1253,118 @@ def test_string_rst(self):
12531253 p = StringHTMLProperty (
self .
client ,
'test' ,
'1' ,
None ,
'test' ,
u2s (
u'A string with [email protected] *embedded* \u00df ' ))
12541254 self .
assertEqual (
p .
rst (),
u2s (
u'A string with <a href="mailto:[email protected] ">[email protected] </a> *embedded* \u00df ' ))
12551255
1256+ class NumberIntegerHTMLPropertyTestCase (HTMLPropertyTestClass ):
1257+
1258+ def setUp (self ):
1259+ super (NumberIntegerHTMLPropertyTestCase , self ).setUp ()
1260+
1261+ db = self .client .db
1262+ db .issue .addprop (numberval = hyperdb .Number ())
1263+ db .issue .addprop (intval = hyperdb .Integer ())
1264+
1265+ self .client .db .issue .create (title = "title" ,
1266+ numberval = "3.14" ,
1267+ intval = "314" )
1268+
1269+ def tearDown (self ):
1270+ self .client .db .close ()
1271+ memorydb .db_nuke ('' )
1272+
1273+ def test_IntegerHTML (self ):
1274+ test_hyperdbInteger = self .client .db .issue .getprops ("1" )['intval' ]
1275+ test_Integer = test_hyperdbInteger .from_raw (
1276+ self .client .db .issue .get ("1" , 'intval' )
1277+ )
1278+
1279+ # client, classname, nodeid, prop, name, value,
1280+ # anonymous=0, offset=None
1281+ d = IntegerHTMLProperty (self .client , 'issue' , '1' ,
1282+ test_hyperdbInteger ,
1283+ 'intval' , test_Integer )
1284+
1285+ self .assertIsInstance (d ._value , int )
1286+
1287+ self .assertEqual (d .plain (), "314" )
1288+
1289+ input_expected = """<input id="issue1@intval" name="issue1@intval" size="30" step="1" type="number" value="314">"""
1290+ self .assertEqual (d .field (), input_expected )
1291+
1292+ input_expected = """<input id="issue1@intval" name="issue1@intval" size="30" step="50" type="number" value="314">"""
1293+ self .assertEqual (d .field (step = "50" ), input_expected )
1294+
1295+ input_expected = """<input id="issue1@intval" name="issue1@intval" size="30" type="text" value="314">"""
1296+ self .assertEqual (d .field (type = "text" ), input_expected )
1297+
1298+
1299+ # check permissions return
1300+ is_view_ok_orig = d .is_view_ok
1301+ is_edit_ok_orig = d .is_edit_ok
1302+ no_access = lambda : False
1303+
1304+ d .is_view_ok = no_access
1305+ self .assertEqual (d .plain (), "[hidden]" )
1306+
1307+ d .is_edit_ok = no_access
1308+ self .assertEqual (d .field (), "[hidden]" )
1309+
1310+ d .is_view_ok = is_view_ok_orig
1311+ self .assertEqual (d .field (), "314" )
1312+ d .is_edit_ok = is_edit_ok_orig
1313+
1314+ def test_NumberHTML (self ):
1315+ test_hyperdbNumber = self .client .db .issue .getprops ("1" )['numberval' ]
1316+ test_Number = test_hyperdbNumber .from_raw (
1317+ self .client .db .issue .get ("1" , 'numberval' )
1318+ )
1319+
1320+ # client, classname, nodeid, prop, name, value,
1321+ # anonymous=0, offset=None
1322+ d = NumberHTMLProperty (self .client , 'issue' , '1' ,
1323+ test_hyperdbNumber ,
1324+ 'numberval' , test_Number )
1325+
1326+ # string needed for memorydb/anydbm backend. Float?? when
1327+ # running against sql backends.
1328+ self .assertIsInstance (d ._value , float )
1329+
1330+ self .assertEqual (d ._value , 3.14 )
1331+
1332+ input_expected = """<input id="issue1@numberval" name="issue1@numberval" size="30" type="number" value="3.14">"""
1333+ self .assertEqual (d .field (), input_expected )
1334+
1335+ input_expected = """<input id="issue1@numberval" name="issue1@numberval" size="30" step="50" type="number" value="3.14">"""
1336+ self .assertEqual (d .field (step = "50" ), input_expected )
1337+
1338+ input_expected = """<input id="issue1@numberval" name="issue1@numberval" size="30" type="text" value="3.14">"""
1339+ self .assertEqual (d .field (type = "text" ), input_expected )
1340+
1341+ self .assertEqual (d .pretty ("%0.3f" ), "3.140" )
1342+ self .assertEqual (d .pretty ("%0.3d" ), "003" )
1343+ self .assertEqual (d .pretty ("%2d" ), " 3" )
1344+
1345+ # see what happens if for other values
1346+ value = d ._value
1347+ d ._value = "1" # integer
1348+ self .assertEqual (d .pretty ("%2d" ), "1" )
1349+ d ._value = "I'mNotAFloat" # not a number
1350+ self .assertEqual (d .pretty ("%2d" ), "I'mNotAFloat" )
1351+ d ._value = value
1352+
1353+ # check permissions return
1354+ is_view_ok_orig = d .is_view_ok
1355+ is_edit_ok_orig = d .is_edit_ok
1356+ no_access = lambda : False
1357+
1358+ d .is_view_ok = no_access
1359+ self .assertEqual (d .plain (), "[hidden]" )
1360+
1361+ d .is_edit_ok = no_access
1362+ self .assertEqual (d .field (), "[hidden]" )
1363+
1364+ d .is_view_ok = is_view_ok_orig
1365+ self .assertEqual (d .field (), "3.14" )
1366+ d .is_edit_ok = is_edit_ok_orig
1367+
12561368class ZUtilsTestcase (TemplatingTestCase ):
12571369
12581370 def test_Iterator (self ):
0 commit comments