PageRenderTime 28ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/gdata_tests/spreadsheet/service_test.py

https://gitlab.com/karambir/gdata
Python | 214 lines | 184 code | 12 blank | 18 comment | 3 complexity | 978bc1908419db073f87bb189ced0a13 MD5 | raw file
  1. #!/usr/bin/python
  2. #
  3. # Copyright (C) 2007 Google Inc.
  4. #
  5. # Licensed under the Apache License, Version 2.0 (the "License");
  6. # you may not use this file except in compliance with the License.
  7. # You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software
  12. # distributed under the License is distributed on an "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. # See the License for the specific language governing permissions and
  15. # limitations under the License.
  16. __author__ = 'api.laurabeth@gmail.com (Laura Beth Lincoln)'
  17. import unittest
  18. try:
  19. from xml.etree import ElementTree
  20. except ImportError:
  21. from elementtree import ElementTree
  22. import gdata.spreadsheet.service
  23. import gdata.service
  24. import atom.service
  25. import gdata.spreadsheet
  26. import atom
  27. import getpass
  28. username = ''
  29. password = ''
  30. ss_key = ''
  31. ws_key = ''
  32. class DocumentQueryTest(unittest.TestCase):
  33. def setUp(self):
  34. self.query = gdata.spreadsheet.service.DocumentQuery()
  35. def testTitle(self):
  36. self.query['title'] = 'my title'
  37. self.assert_(self.query['title'] == 'my title')
  38. self.assert_(self.query.ToUri() == '?title=my+title')
  39. def testTitleExact(self):
  40. self.query['title-exact'] = 'true'
  41. self.assert_(self.query['title-exact'] == 'true')
  42. self.assert_(self.query.ToUri() == '?title-exact=true')
  43. class CellQueryTest(unittest.TestCase):
  44. def setUp(self):
  45. self.query = gdata.spreadsheet.service.CellQuery()
  46. def testMinRow(self):
  47. self.query['min-row'] = '1'
  48. self.assert_(self.query['min-row'] == '1')
  49. self.assert_(self.query.ToUri() == '?min-row=1')
  50. def testMaxRow(self):
  51. self.query['max-row'] = '100'
  52. self.assert_(self.query['max-row'] == '100')
  53. self.assert_(self.query.ToUri() == '?max-row=100')
  54. def testMinCol(self):
  55. self.query['min-col'] = '2'
  56. self.assert_(self.query['min-col'] == '2')
  57. self.assert_(self.query.ToUri() == '?min-col=2')
  58. def testMaxCol(self):
  59. self.query['max-col'] = '20'
  60. self.assert_(self.query['max-col'] == '20')
  61. self.assert_(self.query.ToUri() == '?max-col=20')
  62. def testRange(self):
  63. self.query['range'] = 'A1:B4'
  64. self.assert_(self.query['range'] == 'A1:B4')
  65. self.assert_(self.query.ToUri() == '?range=A1%3AB4')
  66. def testReturnEmpty(self):
  67. self.query['return-empty'] = 'false'
  68. self.assert_(self.query['return-empty'] == 'false')
  69. self.assert_(self.query.ToUri() == '?return-empty=false')
  70. class ListQueryTest(unittest.TestCase):
  71. def setUp(self):
  72. self.query = gdata.spreadsheet.service.ListQuery()
  73. def testSpreadsheetQuery(self):
  74. self.query['sq'] = 'first=john&last=smith'
  75. self.assert_(self.query['sq'] == 'first=john&last=smith')
  76. self.assert_(self.query.ToUri() == '?sq=first%3Djohn%26last%3Dsmith')
  77. def testOrderByQuery(self):
  78. self.query['orderby'] = 'column:first'
  79. self.assert_(self.query['orderby'] == 'column:first')
  80. self.assert_(self.query.ToUri() == '?orderby=column%3Afirst')
  81. def testReverseQuery(self):
  82. self.query['reverse'] = 'true'
  83. self.assert_(self.query['reverse'] == 'true')
  84. self.assert_(self.query.ToUri() == '?reverse=true')
  85. class SpreadsheetsServiceTest(unittest.TestCase):
  86. def setUp(self):
  87. self.key = ss_key
  88. self.worksheet = ws_key
  89. self.gd_client = gdata.spreadsheet.service.SpreadsheetsService()
  90. self.gd_client.email = username
  91. self.gd_client.password = password
  92. self.gd_client.source = 'SpreadsheetsClient "Unit" Tests'
  93. self.gd_client.ProgrammaticLogin()
  94. def testGetSpreadsheetsFeed(self):
  95. entry = self.gd_client.GetSpreadsheetsFeed(self.key)
  96. self.assert_(isinstance(entry, gdata.spreadsheet.SpreadsheetsSpreadsheet))
  97. def testGetWorksheetsFeed(self):
  98. feed = self.gd_client.GetWorksheetsFeed(self.key)
  99. self.assert_(isinstance(feed, gdata.spreadsheet.SpreadsheetsWorksheetsFeed))
  100. entry = self.gd_client.GetWorksheetsFeed(self.key, self.worksheet)
  101. self.assert_(isinstance(entry, gdata.spreadsheet.SpreadsheetsWorksheet))
  102. def testGetCellsFeed(self):
  103. feed = self.gd_client.GetCellsFeed(self.key)
  104. self.assert_(isinstance(feed, gdata.spreadsheet.SpreadsheetsCellsFeed))
  105. entry = self.gd_client.GetCellsFeed(self.key, cell='R5C1')
  106. self.assert_(isinstance(entry, gdata.spreadsheet.SpreadsheetsCell))
  107. def testGetListFeed(self):
  108. feed = self.gd_client.GetListFeed(self.key)
  109. self.assert_(isinstance(feed, gdata.spreadsheet.SpreadsheetsListFeed))
  110. entry = self.gd_client.GetListFeed(self.key, row_id='cpzh4')
  111. self.assert_(isinstance(entry, gdata.spreadsheet.SpreadsheetsList))
  112. def testUpdateCell(self):
  113. self.gd_client.UpdateCell(row='5', col='1', inputValue='', key=self.key)
  114. self.gd_client.UpdateCell(row='5', col='1', inputValue='newer data',
  115. key=self.key)
  116. def testBatchUpdateCell(self):
  117. cell_feed = self.gd_client.GetCellsFeed(key=self.key)
  118. edit_cell = cell_feed.entry[0]
  119. old_cell_value = 'a1'
  120. # Create a batch request to change the contents of a cell.
  121. batch_feed = gdata.spreadsheet.SpreadsheetsCellsFeed()
  122. edit_cell.cell.inputValue = 'New Value'
  123. batch_feed.AddUpdate(edit_cell)
  124. result = self.gd_client.ExecuteBatch(batch_feed,
  125. url=cell_feed.GetBatchLink().href)
  126. self.assertEquals(len(result.entry), 1)
  127. self.assertEquals(result.entry[0].cell.inputValue, 'New Value')
  128. # Make a second batch request to change the cell's value back.
  129. edit_cell = result.entry[0]
  130. edit_cell.cell.inputValue = old_cell_value
  131. batch_feed = gdata.spreadsheet.SpreadsheetsCellsFeed()
  132. batch_feed.AddUpdate(edit_cell)
  133. restored = self.gd_client.ExecuteBatch(batch_feed,
  134. url=cell_feed.GetBatchLink().href)
  135. self.assertEquals(len(restored.entry), 1)
  136. self.assertEquals(restored.entry[0].cell.inputValue, old_cell_value)
  137. def testInsertUpdateRow(self):
  138. entry = self.gd_client.InsertRow({'a1':'new', 'b1':'row', 'c1':'was',
  139. 'd1':'here'}, self.key)
  140. entry = self.gd_client.UpdateRow(entry, {'a1':'newer',
  141. 'b1':entry.custom['b1'].text, 'c1':entry.custom['c1'].text,
  142. 'd1':entry.custom['d1'].text})
  143. self.gd_client.DeleteRow(entry)
  144. def testWorksheetCRUD(self):
  145. # Add a new worksheet.
  146. new_worksheet = self.gd_client.AddWorksheet('worksheet_title_test_12', '2',
  147. 3, self.key)
  148. self.assertEquals(new_worksheet.col_count.text, '3')
  149. self.assertEquals(new_worksheet.row_count.text, '2')
  150. self.assertEquals(new_worksheet.title.text, 'worksheet_title_test_12')
  151. # Change the dimensions and title of the new worksheet.
  152. new_worksheet.col_count.text = '1'
  153. new_worksheet.title.text = 'edited worksheet test12'
  154. edited_worksheet = self.gd_client.UpdateWorksheet(new_worksheet)
  155. self.assertEquals(edited_worksheet.col_count.text, '1')
  156. self.assertEquals(edited_worksheet.row_count.text, '2')
  157. self.assertEquals(edited_worksheet.title.text, 'edited worksheet test12')
  158. # Delete the new worksheet.
  159. result = self.gd_client.DeleteWorksheet(edited_worksheet)
  160. self.assertEquals(result, True)
  161. if __name__ == '__main__':
  162. print ('Spreadsheet Tests\nNOTE: Please run these tests only with a test '
  163. 'account. The tests may delete or update your data.')
  164. print ('These tests must be run on a sheet with this data:\n'
  165. 'a1,b1,c1,d1\n'
  166. '1,2,3,4')
  167. username = raw_input('Please enter your username: ')
  168. password = getpass.getpass()
  169. ss_key = raw_input('Please enter your spreadsheet key: ')
  170. ws_key = raw_input('Please enter your worksheet key (usually od6): ')
  171. unittest.main()