diff test/test_cgi.py @ 5067:e424987d294a

Add support for an integer type to join the existing number type. Commit patch supplied for issue2550886. This can be used for properties used for ordering, counts etc. where a decimal point isn't needed. Developed by Anthony (antmail). Doc updates written by John Rouillard.
author John Rouillard <rouilj@ieee.org>
date Sun, 05 Jun 2016 00:17:26 -0400
parents 47ab150b7325
children 92d33d3125a0
line wrap: on
line diff
--- a/test/test_cgi.py	Tue May 31 09:16:09 2016 +0200
+++ b/test/test_cgi.py	Sun Jun 05 00:17:26 2016 -0400
@@ -107,9 +107,10 @@
 
         test = self.instance.backend.Class(self.db, "test",
             string=hyperdb.String(), number=hyperdb.Number(),
-            boolean=hyperdb.Boolean(), link=hyperdb.Link('test'),
-            multilink=hyperdb.Multilink('test'), date=hyperdb.Date(),
-            messages=hyperdb.Multilink('msg'), interval=hyperdb.Interval())
+            intval=hyperdb.Integer(), boolean=hyperdb.Boolean(),
+            link=hyperdb.Link('test'), multilink=hyperdb.Multilink('test'),
+            date=hyperdb.Date(), messages=hyperdb.Multilink('msg'),
+            interval=hyperdb.Interval())
 
         # compile the labels re
         classes = '|'.join(self.db.classes.keys())
@@ -623,6 +624,62 @@
             self.fail('number "no" raised "required missing"')
 
     #
+    # Integer
+    #
+    def testEmptyInteger(self):
+        self.assertEqual(self.parseForm({'intval': ''}),
+            ({('test', None): {}}, []))
+        self.assertEqual(self.parseForm({'intval': ' '}),
+            ({('test', None): {}}, []))
+        self.assertRaises(FormError, self.parseForm, {'intval': ['', '']})
+
+    def testInvalidInteger(self):
+        self.assertRaises(FormError, self.parseForm, {'intval': 'hi, mum!'})
+
+    def testSetInteger(self):
+        self.assertEqual(self.parseForm({'intval': '1'}),
+            ({('test', None): {'intval': 1}}, []))
+        self.assertEqual(self.parseForm({'intval': '0'}),
+            ({('test', None): {'intval': 0}}, []))
+        self.assertEqual(self.parseForm({'intval': '\n0\n'}),
+            ({('test', None): {'intval': 0}}, []))
+
+    def testSetIntegerReplaceOne(self):
+        nodeid = self.db.test.create(intval=1)
+        self.assertEqual(self.parseForm({'intval': '1'}, 'test', nodeid),
+            ({('test', nodeid): {}}, []))
+        self.assertEqual(self.parseForm({'intval': '0'}, 'test', nodeid),
+            ({('test', nodeid): {'intval': 0}}, []))
+
+    def testSetIntegerReplaceZero(self):
+        nodeid = self.db.test.create(intval=0)
+        self.assertEqual(self.parseForm({'intval': '0'}, 'test', nodeid),
+            ({('test', nodeid): {}}, []))
+
+    def testSetIntegerReplaceNone(self):
+        nodeid = self.db.test.create()
+        self.assertEqual(self.parseForm({'intval': '0'}, 'test', nodeid),
+            ({('test', nodeid): {'intval': 0}}, []))
+        self.assertEqual(self.parseForm({'intval': '1'}, 'test', nodeid),
+            ({('test', nodeid): {'intval': 1}}, []))
+
+    def testEmptyIntegerSet(self):
+        nodeid = self.db.test.create(intval=0)
+        self.assertEqual(self.parseForm({'intval': ''}, 'test', nodeid),
+            ({('test', nodeid): {'intval': None}}, []))
+        nodeid = self.db.test.create(intval=1)
+        self.assertEqual(self.parseForm({'intval': ' '}, 'test', nodeid),
+            ({('test', nodeid): {'intval': None}}, []))
+
+    def testRequiredInteger(self):
+        self.assertRaises(FormError, self.parseForm, {'intval': '',
+            ':required': 'intval'})
+        try:
+            self.parseForm({'intval': '0', ':required': 'intval'})
+        except FormError:
+            self.fail('intval "no" raised "required missing"')
+
+    #
     # Date
     #
     def testEmptyDate(self):

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