/tests/gdata_tests/spreadsheet/service_test.py
Python | 214 lines | 184 code | 12 blank | 18 comment | 3 complexity | 978bc1908419db073f87bb189ced0a13 MD5 | raw file
- #!/usr/bin/python
- #
- # Copyright (C) 2007 Google Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- __author__ = 'api.laurabeth@gmail.com (Laura Beth Lincoln)'
- import unittest
- try:
- from xml.etree import ElementTree
- except ImportError:
- from elementtree import ElementTree
- import gdata.spreadsheet.service
- import gdata.service
- import atom.service
- import gdata.spreadsheet
- import atom
- import getpass
- username = ''
- password = ''
- ss_key = ''
- ws_key = ''
- class DocumentQueryTest(unittest.TestCase):
-
- def setUp(self):
- self.query = gdata.spreadsheet.service.DocumentQuery()
-
- def testTitle(self):
- self.query['title'] = 'my title'
- self.assert_(self.query['title'] == 'my title')
- self.assert_(self.query.ToUri() == '?title=my+title')
-
- def testTitleExact(self):
- self.query['title-exact'] = 'true'
- self.assert_(self.query['title-exact'] == 'true')
- self.assert_(self.query.ToUri() == '?title-exact=true')
-
- class CellQueryTest(unittest.TestCase):
-
- def setUp(self):
- self.query = gdata.spreadsheet.service.CellQuery()
-
- def testMinRow(self):
- self.query['min-row'] = '1'
- self.assert_(self.query['min-row'] == '1')
- self.assert_(self.query.ToUri() == '?min-row=1')
-
- def testMaxRow(self):
- self.query['max-row'] = '100'
- self.assert_(self.query['max-row'] == '100')
- self.assert_(self.query.ToUri() == '?max-row=100')
-
- def testMinCol(self):
- self.query['min-col'] = '2'
- self.assert_(self.query['min-col'] == '2')
- self.assert_(self.query.ToUri() == '?min-col=2')
-
- def testMaxCol(self):
- self.query['max-col'] = '20'
- self.assert_(self.query['max-col'] == '20')
- self.assert_(self.query.ToUri() == '?max-col=20')
-
- def testRange(self):
- self.query['range'] = 'A1:B4'
- self.assert_(self.query['range'] == 'A1:B4')
- self.assert_(self.query.ToUri() == '?range=A1%3AB4')
-
- def testReturnEmpty(self):
- self.query['return-empty'] = 'false'
- self.assert_(self.query['return-empty'] == 'false')
- self.assert_(self.query.ToUri() == '?return-empty=false')
-
- class ListQueryTest(unittest.TestCase):
- def setUp(self):
- self.query = gdata.spreadsheet.service.ListQuery()
-
- def testSpreadsheetQuery(self):
- self.query['sq'] = 'first=john&last=smith'
- self.assert_(self.query['sq'] == 'first=john&last=smith')
- self.assert_(self.query.ToUri() == '?sq=first%3Djohn%26last%3Dsmith')
-
- def testOrderByQuery(self):
- self.query['orderby'] = 'column:first'
- self.assert_(self.query['orderby'] == 'column:first')
- self.assert_(self.query.ToUri() == '?orderby=column%3Afirst')
-
- def testReverseQuery(self):
- self.query['reverse'] = 'true'
- self.assert_(self.query['reverse'] == 'true')
- self.assert_(self.query.ToUri() == '?reverse=true')
-
- class SpreadsheetsServiceTest(unittest.TestCase):
- def setUp(self):
- self.key = ss_key
- self.worksheet = ws_key
- self.gd_client = gdata.spreadsheet.service.SpreadsheetsService()
- self.gd_client.email = username
- self.gd_client.password = password
- self.gd_client.source = 'SpreadsheetsClient "Unit" Tests'
- self.gd_client.ProgrammaticLogin()
-
- def testGetSpreadsheetsFeed(self):
- entry = self.gd_client.GetSpreadsheetsFeed(self.key)
- self.assert_(isinstance(entry, gdata.spreadsheet.SpreadsheetsSpreadsheet))
-
- def testGetWorksheetsFeed(self):
- feed = self.gd_client.GetWorksheetsFeed(self.key)
- self.assert_(isinstance(feed, gdata.spreadsheet.SpreadsheetsWorksheetsFeed))
- entry = self.gd_client.GetWorksheetsFeed(self.key, self.worksheet)
- self.assert_(isinstance(entry, gdata.spreadsheet.SpreadsheetsWorksheet))
-
- def testGetCellsFeed(self):
- feed = self.gd_client.GetCellsFeed(self.key)
- self.assert_(isinstance(feed, gdata.spreadsheet.SpreadsheetsCellsFeed))
- entry = self.gd_client.GetCellsFeed(self.key, cell='R5C1')
- self.assert_(isinstance(entry, gdata.spreadsheet.SpreadsheetsCell))
-
- def testGetListFeed(self):
- feed = self.gd_client.GetListFeed(self.key)
- self.assert_(isinstance(feed, gdata.spreadsheet.SpreadsheetsListFeed))
- entry = self.gd_client.GetListFeed(self.key, row_id='cpzh4')
- self.assert_(isinstance(entry, gdata.spreadsheet.SpreadsheetsList))
-
- def testUpdateCell(self):
- self.gd_client.UpdateCell(row='5', col='1', inputValue='', key=self.key)
- self.gd_client.UpdateCell(row='5', col='1', inputValue='newer data',
- key=self.key)
- def testBatchUpdateCell(self):
- cell_feed = self.gd_client.GetCellsFeed(key=self.key)
- edit_cell = cell_feed.entry[0]
- old_cell_value = 'a1'
- # Create a batch request to change the contents of a cell.
- batch_feed = gdata.spreadsheet.SpreadsheetsCellsFeed()
- edit_cell.cell.inputValue = 'New Value'
- batch_feed.AddUpdate(edit_cell)
- result = self.gd_client.ExecuteBatch(batch_feed,
- url=cell_feed.GetBatchLink().href)
- self.assertEquals(len(result.entry), 1)
- self.assertEquals(result.entry[0].cell.inputValue, 'New Value')
-
- # Make a second batch request to change the cell's value back.
- edit_cell = result.entry[0]
- edit_cell.cell.inputValue = old_cell_value
- batch_feed = gdata.spreadsheet.SpreadsheetsCellsFeed()
- batch_feed.AddUpdate(edit_cell)
- restored = self.gd_client.ExecuteBatch(batch_feed,
- url=cell_feed.GetBatchLink().href)
- self.assertEquals(len(restored.entry), 1)
- self.assertEquals(restored.entry[0].cell.inputValue, old_cell_value)
-
- def testInsertUpdateRow(self):
- entry = self.gd_client.InsertRow({'a1':'new', 'b1':'row', 'c1':'was',
- 'd1':'here'}, self.key)
- entry = self.gd_client.UpdateRow(entry, {'a1':'newer',
- 'b1':entry.custom['b1'].text, 'c1':entry.custom['c1'].text,
- 'd1':entry.custom['d1'].text})
- self.gd_client.DeleteRow(entry)
- def testWorksheetCRUD(self):
- # Add a new worksheet.
- new_worksheet = self.gd_client.AddWorksheet('worksheet_title_test_12', '2',
- 3, self.key)
- self.assertEquals(new_worksheet.col_count.text, '3')
- self.assertEquals(new_worksheet.row_count.text, '2')
- self.assertEquals(new_worksheet.title.text, 'worksheet_title_test_12')
- # Change the dimensions and title of the new worksheet.
- new_worksheet.col_count.text = '1'
- new_worksheet.title.text = 'edited worksheet test12'
- edited_worksheet = self.gd_client.UpdateWorksheet(new_worksheet)
- self.assertEquals(edited_worksheet.col_count.text, '1')
- self.assertEquals(edited_worksheet.row_count.text, '2')
- self.assertEquals(edited_worksheet.title.text, 'edited worksheet test12')
- # Delete the new worksheet.
- result = self.gd_client.DeleteWorksheet(edited_worksheet)
- self.assertEquals(result, True)
-
-
- if __name__ == '__main__':
- print ('Spreadsheet Tests\nNOTE: Please run these tests only with a test '
- 'account. The tests may delete or update your data.')
- print ('These tests must be run on a sheet with this data:\n'
- 'a1,b1,c1,d1\n'
- '1,2,3,4')
- username = raw_input('Please enter your username: ')
- password = getpass.getpass()
- ss_key = raw_input('Please enter your spreadsheet key: ')
- ws_key = raw_input('Please enter your worksheet key (usually od6): ')
- unittest.main()