コード例 #1
0
    def test_get_or_addrow_basic(self):
        """ Basic test for get_or_addrow """
        utils.setupadvancedtables(self)
        self.connection.row_factory = objects.dict_factory
        table = self.connection.getadvancedtable("users")

        ## Make sure there's a user to get for the test and that it is exactly as expected
        ## AdvancedRows is formatted [ [tablename, [...rows...], ...]
        ## So, first (tablename,rows), and then second item (rows), and first row
        testuser = dict(utils.ADVANCEDROWS[0][1][0])
        testuserrow = table.quickselect(**testuser)
        self.assertTrue(testuserrow)
        testuserrow = testuserrow.first()
        testuserrowid = testuserrow.pop("userid")
        self.assertEqual(testuserrow,testuser)
        
        ## Test get_or_addrow returns a row that already exists
        result = table.get_or_addrow(**testuser)
        self.assertTrue(result)
        self.assertEqual(result.first(),testuserrowid)

        ## Test get_or_addrow adds a new row even if the row differs by one
        testuser['email'] = "*****@*****.**"
        result = table.get_or_addrow(**testuser)
        self.assertTrue(result)
        result = result.first()
        self.assertNotEqual(result,testuserrowid)
        resultrow = table.quickselect(pk = result)
        testuser['email'] = None
        self.assertNotEqual(resultrow,testuser)
コード例 #2
0
 def test_get_or_addrow_bad(self):
     """ Tests that get_or_addrow will raise a ValueError if passed a Non-Column argument """
     utils.setupadvancedtables(self)
     table = self.connection.getadvancedtable("users")
     ## TODO: Currently quick simple test, should be Expanded
     testuser = dict(utils.ADVANCEDROWS[0][1][0])
     ## Testuser is valid data, and then foobar is additional data
     self.assertRaisesRegex(ValueError,"get_or_addrow recieved invalid columns",table.get_or_addrow,foobar=True, **testuser)
     ## Only with invalid cols
     self.assertRaisesRegex(ValueError,"get_or_addrow recieved invalid columns",table.get_or_addrow,foobar=True)
コード例 #3
0
 def test_get_or_addrow_missingcols_notnull(self):
     """ Tests that get_or_addrow raises and ValueError when a NotNull column is missing """
     utils.setupadvancedtables(self)
     table = self.connection.getadvancedtable("notsecurity")
     ## Assumably testrow: dict(userid=1,salt=1234,hash="ABCDEF")
     testrow = dict(utils.ADVANCEDROWS[1][1][0])
     ## Sanity Check (that testrow is already in table)
     self.assertTrue(table.quickselect(**testrow))
     
     ## Actual Test
     ## NotSecurity requires all three columns (all are NOT NULL), so we'll incrementally remove columns
     while testrow:
         testrow.popitem()
         self.assertRaisesRegex(ValueError,"The following columns are required:.+",table.get_or_addrow,**testrow)
コード例 #4
0
    def test_queryparser_advancedrow(self):
        """ Tests that when the query parser receives an AdvancedRow, it uses the AdvanceRow's Table's PK """
        self.connection.row_factory = objects.advancedrow_factory
        utils.setupadvancedtables(self)

        ## Single level
        table = self.connection.getadvancedtable("users")
        user = table.quickselect(fname="John").first()
        ## Update where userid = user => user.userid
        newemail = "*****@*****.**"
        table.quickupdate(WHERE = {"userid":user}, email = newemail)
        newuser = table.quickselect(fname = "John").first()
        self.assertNotEqual(user,newuser)
        self.assertEqual(newuser.email,newemail)

        ## Multiple Levels
        commenttable = self.connection.getadvancedtable("comments")
        comment = commenttable.quickselect(commentid = 20).first()
        ## Select Where userid = comment => postid.userid => user.userid
        user = table.quickselect(userid = comment.pid.userid).first()
        self.assertEqual(user.userid,comment.pid.userid.userid)
コード例 #5
0
ファイル: test_sql.py プロジェクト: AdamantLife/alcustoms
 def setUp(self):
     utils.setupconnection(self)
     utils.setupadvancedtables(self)
     return super().setUp()
コード例 #6
0
ファイル: test_sql.py プロジェクト: AdamantLife/alcustoms
 def setUp(self):
     utils.setupconnection(self)
     utils.setupadvancedtables(self)
     self.maxDiff = None
     return super().setUp()
コード例 #7
0
ファイル: test_sql.py プロジェクト: AdamantLife/alcustoms
 def setUp(self):
     utils.setupconnection(self)
     utils.setupadvancedtables(self)
     self.samplerow = dict(commentid = 1,uid = 1, pid = 1, commenttime = "20160101T0001+0000", replyto = None, comment = "Thanks for reading, Everyone! It's my New Year's Resolution to write a post a day! Look forward to it!")
     return super().setUp()