def test_addmultiple_objects(self): """ Tests that addmultiple can process multiple objects """ testtable = self.connection.getadvancedtable("testtable") ## The more values used, the less likely that random happenstance would result in the correct row/rowid pairing input = [utils.TestObject(name="Foo",value=1),utils.TestObject(name="Bar",value=2),utils.TestObject(name="Bizz",value=3),utils.TestObject(name="Bazz",value = 4)] rowids = testtable.addmultiple(*input) ## Check that we got the correct number of rowids back self.assertEqual(len(rowids),len(input)) ## Check that the rowids are what we would expect self.assertListEqual(rowids,[1,2,3,4]) ## Get objects back out to ensure they went in correctly testtable.row_factory = objects.object_to_factory(utils.TestObject) self.assertListEqual(testtable.selectall(),input)
def test_addmultiple_mixed(self): """ Tests that addmultiple can process multiple dicts and objects mixed together""" testtable = self.connection.getadvancedtable("testtable") ## The more values used, the less likely that random happenstance would result in the correct row/rowid pairing input = [utils.TestObject(name="Foo",value=1),dict(name="Bar",value=2),dict(name="Bizz",value=3),utils.TestObject(name="Bazz",value = 4)] rowids = testtable.addmultiple(*input) ## Check that we got the correct number of rowids back self.assertEqual(len(rowids),len(input)) ## Check that the rowids are what we would expect self.assertListEqual(rowids,[1,2,3,4]) ## We're going to convert them all to objects for comparison testtable.row_factory = objects.object_to_factory(utils.TestObject) ## We're also comparing rowid, since that isn't tested in this manner elsewhere self.assertListEqual(testtable.selectall(rowid = True),[utils.TestObject(name="Foo",value=1,rowid = 1),utils.TestObject(name="Bar",value=2,rowid = 2), utils.TestObject(name="Bizz",value=3, rowid = 3),utils.TestObject(name="Bazz",value = 4, rowid = 4)])
def test_addrow_object(self): """ Tests that an object can be passed which will be parsed by parseobject """ testtable = self.connection.getadvancedtable("testtable") obj = utils.TestObject(name="Hello",value=1) ## Add object rowid = testtable.addrow(object = obj) rows = testtable.quickselect(rowid=True, pk = rowid) self.assertListEqual(rows,[(1,"Hello",1),])
def test_addrow_bad_objectandkwargs(self): """ Tests that it is an error to specify both an object to add and kwargs for addrow """ testtable = self.connection.getadvancedtable("testtable") obj = utils.TestObject(name="Hello",value=1) self.assertRaises(ValueError,testtable.addrow, object = obj, name = "Hello", value = 1)
def test_select_replacements_bad(self): """ Tests that select only accepts lists, tuples, and dicts as replacements """ testtable = self.connection.getadvancedtable("testtable") ## Various random stuff self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = "None") self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = 1) self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = 1.0000000) self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = True) self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = set()) self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = (x for x in range(10))) self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = utils.TestObject) self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = utils.TestObject()) self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = lambda: None) self.assertRaises(ValueError,testtable.select,query = "value = ?", replacements = utils.populatetesttable)