Пример #1
0
class TestMongoAccess(unittest.TestCase):

    def setUp(self):
        self.db=MongoAccess()
        self.test_db_name="test_accees_db"
        self.test_table_name="test_table"
        self.db.setDatabase(self.test_db_name)

        post = {"author": "Mike","text": "My first blog post!"}
        self.db.insert(self.test_table_name,post)
        post2 = {"author": "John","text": "Testing as secong post!"}
        self.db.insert(self.test_table_name,post2)
        post3 = {"author": "John","text": "Testing as third post!"}
        self.db.insert(self.test_table_name,post3)


    def test_getTableList(self):
        tables=self.db.getTableList()
        self.assertEqual(len(tables)>0 ,True)

    def test_getTableListNoSystem(self):
        """tests if system.indexes table is removed it have not to be seen"""
        tables=self.db.getTableList()
        self.assertEqual(tables.count("system.indexes") ,0)


    def test_getTableListNoDb(self):
        """need to exit gracefully, if no db is set """
        my_db=MongoAccess()
        tables=my_db.getTableList()
        self.assertEqual(len(tables),0)

    def test_getAll(self):
        data=self.db.getAll(self.test_table_name)
        self.assertEqual(data.count(),3)

    def test_getAllNoDbSet(self):
        """testing get all data if no database is set"""
        my_db=MongoAccess()
        data=my_db.getAll(self.test_db_name)
        self.assertEqual(data ,None)


    def test_getTableColumns(self):
        post2 = {"author": "John","text": "Testing as secong post!"}
        self.db.insert(self.test_table_name,post2)
        post = {"co-author": "John","text": "Testing as third post!"}
        self.db.insert(self.test_table_name,post)

        col_data=self.db.getTableColumns(self.test_table_name)
        #print col_data
        sample_col_names=['_id', 'author', 'co-author', 'text']
        self.assertEqual(col_data ,sample_col_names)






    def test_getOne(self):
        data=self.db.getOne(self.test_table_name)
        self.assertEqual(data["author"],"Mike")

    def test_getOneFilter(self):
        data=self.db.getOne(self.test_table_name,{"text":"Testing as third post!"})
        self.assertEqual(data["author"],"John")

    def test_insertDuplicate(self):
        """tests if data is the same, will it be inserted or not. It have to be inserted """
        post3 = {"author": "John","text": "Testing as third post!"}
        self.db.insert(self.test_table_name,post3)
        data=self.db.getAll(self.test_table_name)
        self.assertEqual(data.count(),4)

    def test_saveWithId(self):
        post = {"author": "John","text": "Testing as third post!"}
        data=self.db.getOne(self.test_table_name,post)
        data["author"]="Jim"
        jims_text="Jims blog post"
        data["text"]=jims_text
        self.db.save(self.test_table_name,data)
        data=self.db.getOne(self.test_table_name,{"text":jims_text})
        self.assertEqual(data["author"],"Jim")

    def test_update(self):
        post = {"author": "John","text": "Testing as secong post!"}
        data=self.db.getOne(self.test_table_name,post)
        jims_text="Jims secong blog post"
        data["text"]=jims_text

        self.db.update(self.test_table_name,data)

        data=self.db.getOne(self.test_table_name,{"text":jims_text})
        self.assertEqual(data["text"],jims_text)
        
    def test_delete(self):
        row_count=self.db.getAll(self.test_table_name).count()
        row_to_delete=self.db.getOne(self.test_table_name)
        self.db.delete(self.test_table_name,row_to_delete)
        row_count_after=self.db.getAll(self.test_table_name).count()
        #print "before "+str(row_count)+" after "+str(row_count_after)
        self.assertEqual(row_count-1,row_count_after)


    def test_dropTable(self):
        pass

    def test_asJSON(self):
        data=self.db.getAll(self.test_table_name)
        json_data=self.db.asJSON(data)
        import json
        self.assertEqual(type(json.loads(json_data)),type([]))


    def test_changeTable(self):
        "testing if data is displayed properly after changing table"
        pass




    def tearDown(self):
        self.db.dropDatabase(self.test_db_name)
        pass