From 6b103f7e3abb0ffb9c37f49688d2982d2cbf7ae2 Mon Sep 17 00:00:00 2001 From: geomapdev Date: Tue, 10 Oct 2017 08:42:17 -0700 Subject: [PATCH] updated test_validators IS_IN_DB --- gluon/tests/test_validators.py | 37 +++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/gluon/tests/test_validators.py b/gluon/tests/test_validators.py index e6cffc54..d5b93207 100644 --- a/gluon/tests/test_validators.py +++ b/gluon/tests/test_validators.py @@ -285,15 +285,16 @@ class TestValidators(unittest.TestCase): rtn = IS_IN_DB(db, 'ref_table.person_id', '%(name)s')(george_id) self.assertEqual(rtn, (george_id, None)) # Test it works with reference table.field and keyed table - db.define_table('ref_person', + db.define_table('person_keyed', Field('name'), primarykey=['name']) - ret=db.ref_person.insert(name='george') - rtn = IS_IN_DB(db, 'ref_person.name')('george') + db.person_keyed.insert(name='george') + db.person_keyed.insert(name='costanza') + rtn = IS_IN_DB(db, 'person_keyed.name')('george') self.assertEqual(rtn, ('george', None)) db.define_table('ref_table_field', Field('name'), - Field('person_name', 'reference ref_person.name') + Field('person_name', 'reference person_keyed.name') ) ret = db.ref_table_field.validate_and_insert(name='test reference table.field') self.assertFalse(list(ret.errors)) @@ -303,11 +304,37 @@ class TestValidators(unittest.TestCase): vldtr.options() rtn = vldtr('george') self.assertEqual(rtn, ('george', None)) + # Test it works with list:reference table + db.define_table('list_ref_table', + Field('name'), + Field('person_list', 'list:reference person')) + ret = db.list_ref_table.validate_and_insert(name='test list:reference table') + self.assertFalse(list(ret.errors)) + ret = db.list_ref_table.validate_and_insert(name='test list:reference table', person_list=[george_id,costanza_id]) + self.assertFalse(list(ret.errors)) + vldtr = IS_IN_DB(db, 'list_ref_table.person_list') + vldtr.options() + rtn = vldtr([george_id,costanza_id]) + self.assertEqual(rtn, ([george_id,costanza_id], None)) + # Test it works with list:reference table.field and keyed table + #db.define_table('list_ref_table_field', + # Field('name'), + # Field('person_list', 'list:reference person_keyed.name')) + #ret = db.list_ref_table_field.validate_and_insert(name='test list:reference table.field') + #self.assertFalse(list(ret.errors)) + #ret = db.list_ref_table_field.validate_and_insert(name='test list:reference table.field', person_list=['george','costanza']) + #self.assertFalse(list(ret.errors)) + #vldtr = IS_IN_DB(db, 'list_ref_table_field.person_list') + #vldtr.options() + #rtn = vldtr(['george','costanza']) + #self.assertEqual(rtn, (['george','costanza'], None)) db.person.drop() db.category.drop() - db.ref_person.drop() + db.person_keyed.drop() db.ref_table.drop() db.ref_table_field.drop() + db.list_ref_table.drop() + #db.list_ref_table_field.drop() def test_IS_NOT_IN_DB(self): from gluon.dal import DAL, Field