memoQProjectTest.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. import unittest
  2. import memoQProject
  3. import json
  4. import os
  5. class MemoQProjectTest(unittest.TestCase):
  6. """Tests for memoQProject module."""
  7. def __init__(self, *args, **kwargs):
  8. super(MemoQProjectTest, self).__init__(*args, **kwargs)
  9. with open("testFiles/testConfig.json") as json_file:
  10. self.config = json.load(json_file)
  11. def test_get_project_by_domain(self):
  12. """ Test for get_project_by_domain method."""
  13. test = memoQProject.MemoQProject()
  14. test.get_project_by_domain(self.config["valid_domain"])
  15. self.assertNotEqual(test.project.get_project_guid(),
  16. None, "Guid shouldn't be none!")
  17. test.get_project_by_domain(self.config["wrong_domain"])
  18. self.assertEqual(test.project.get_project_guid(),
  19. None, "Guid should be none!")
  20. def test_get_project_by_guid(self):
  21. """ Test for get_project_by_guid method."""
  22. test = memoQProject.MemoQProject()
  23. valid_guid = "27e14066-0b73-44fc-a5ea-a828fed42e7f"
  24. wrong_guid = "00000000-0000-0000-0000-000000000001"
  25. test.get_project_by_guid(valid_guid)
  26. self.assertEqual(test.project.get_project_guid(),
  27. valid_guid, "Guids don't match!")
  28. test.get_project_by_guid(wrong_guid)
  29. self.assertEqual(test.project.get_project_guid(),
  30. None, "Guid should be none!")
  31. def test_template_project_options(self):
  32. """ Test for template_project_options method."""
  33. test = memoQProject.MemoQProject()
  34. test.project.languages.source = self.config["source_language"]
  35. options = test.template_project_options(
  36. self.config["project_template_guid"])
  37. fake_options = test.client.factory.create(
  38. '{http://kilgray.com/memoqservices/2007}TemplateBasedProjectCreateInfo')
  39. fake_options.TemplateGuid = self.config["project_template_guid"]
  40. fake_options.Name = test.project.name
  41. fake_options.SourceLanguageCode = test.project.languages.source
  42. fake_options.Domain = test.project.domain
  43. fake_options.CreatorUser = self.config["creator_guid"]
  44. self.assertEqual(options.Name, fake_options.Name,
  45. "Names should be equal!")
  46. self.assertEqual(options.TemplateGuid, fake_options.TemplateGuid,
  47. "Template guids should be equal!")
  48. self.assertEqual(options.Domain, fake_options.Domain,
  49. "Domains should be equal!")
  50. self.assertEqual(options.SourceLanguageCode, fake_options.SourceLanguageCode,
  51. "Source language codes should be equal!")
  52. def test_create_project_from_template(self):
  53. """ Test for create_project_from_template method."""
  54. test = memoQProject.MemoQProject()
  55. test.project.languages.source = self.config["source_language"]
  56. test.create_project_from_template(self.config["project_template_guid"])
  57. self.assertNotEqual(test.project.get_project_guid(),
  58. None, "Guid shouldn't be none!")
  59. test.delete()
  60. def test_project_options(self):
  61. """ Test for project_options method."""
  62. test = memoQProject.MemoQProject()
  63. test.project.languages.source = self.config["source_language"]
  64. test.project.languages.target = self.config["target_languages"]
  65. options = test.project_options()
  66. fake_options = test.client.factory.create(
  67. '{http://kilgray.com/memoqservices/2007}ServerProjectDesktopDocsCreateInfo')
  68. fake_options.Name = test.project.name
  69. fake_options.SourceLanguageCode = test.project.languages.source
  70. fake_options.TargetLanguageCodes.string = test.project.languages.target
  71. fake_options.Deadline = test.project.deadline
  72. fake_options.RecordVersionHistory = True
  73. fake_options.CreatorUser = self.config["creator_guid"]
  74. self.assertEqual(options.Name, fake_options.Name,
  75. "Names should be equal!")
  76. self.assertEqual(options.TargetLanguageCodes.string, fake_options.TargetLanguageCodes.string,
  77. "Target languages should be equal!")
  78. self.assertEqual(options.Deadline, fake_options.Deadline,
  79. "Deadlines should be equal!")
  80. self.assertEqual(options.SourceLanguageCode, fake_options.SourceLanguageCode,
  81. "Source language codes should be equal!")
  82. self.assertEqual(options.CreatorUser, fake_options.CreatorUser,
  83. "Creators should be equal!")
  84. def test_create_project(self):
  85. """ Test for create_project method."""
  86. test = memoQProject.MemoQProject()
  87. test.project.languages.source = self.config["source_language"]
  88. test.project.languages.target = self.config["target_languages"]
  89. test.create_project()
  90. self.assertNotEqual(test.project.get_project_guid(),
  91. None, "Guid shouldn't be none!")
  92. test.delete()
  93. def test_import_document(self):
  94. """ Test for import_document method."""
  95. test = memoQProject.MemoQProject()
  96. test.project.languages.source = self.config["source_language"]
  97. test.project.languages.target = self.config["target_languages"]
  98. test.create_project()
  99. self.assertNotEqual(test.project.get_project_guid(),
  100. None, "Guid shouldn't be none!")
  101. result = test.import_document(self.config["test_file_path"])
  102. self.assertTrue(result, "Result should be true!")
  103. test.delete()
  104. def test_get_project_documents(self):
  105. """ Test for get_project_documents method."""
  106. test = memoQProject.MemoQProject()
  107. test.project.languages.source = self.config["source_language"]
  108. test.project.languages.target = self.config["target_languages"]
  109. test.create_project()
  110. self.assertNotEqual(test.project.get_project_guid(),
  111. None, "Guid shouldn't be none!")
  112. result = test.import_document(self.config["test_file_path"])
  113. self.assertTrue(result, "Result should be true!")
  114. filename = os.path.basename(self.config["test_file_path"])
  115. test.get_project_documents()
  116. self.assertEqual(test.documents[0][0].DocumentName,
  117. filename, "Name of document doesn't match test filename!")
  118. test.delete()
  119. def test_export_documents(self):
  120. """ Test for export_documents method."""
  121. test = memoQProject.MemoQProject()
  122. test.project.languages.source = self.config["source_language"]
  123. test.project.languages.target = self.config["target_languages"]
  124. test.create_project()
  125. self.assertNotEqual(test.project.get_project_guid(),
  126. None, "Guid shouldn't be none!")
  127. result = test.import_document(self.config["test_file_path"])
  128. self.assertTrue(result, "Result should be true!")
  129. filename = os.path.basename(self.config["test_file_path"])
  130. test.get_project_documents()
  131. self.assertEqual(test.documents[0][0].DocumentName,
  132. filename, "Name of document doesn't match test filename!")
  133. export_result = test.export_documents(".")
  134. self.assertTrue(export_result, "Export result should be true!")
  135. test.delete()
  136. def test_export_documents2(self):
  137. """ Test for export_documents2 method."""
  138. test = memoQProject.MemoQProject()
  139. test.project.languages.source = self.config["source_language"]
  140. test.project.languages.target = self.config["target_languages"]
  141. test.create_project()
  142. self.assertNotEqual(test.project.get_project_guid(),
  143. None, "Guid shouldn't be none!")
  144. result = test.import_document(self.config["test_file_path"])
  145. self.assertTrue(result, "Result should be true!")
  146. filename = os.path.basename(self.config["test_file_path"])
  147. test.get_project_documents()
  148. self.assertEqual(test.documents[0][0].DocumentName,
  149. filename, "Name of document doesn't match test filename!")
  150. export_result = test.export_documents2(".")
  151. self.assertTrue(export_result, "Export result should be true!")
  152. test.delete()
  153. def test_statistics_options(self):
  154. """ Test for statistics_options method."""
  155. test = memoQProject.MemoQProject()
  156. fake_options = test.client.factory.create(
  157. '{http://kilgray.com/memoqservices/2007}StatisticsOptions')
  158. fake_options.Analysis_ProjectTMs = True
  159. fake_options.Analysis_Homogenity = True
  160. fake_options.ShowResultsPerFile = True
  161. fake_options.RepetitionPreferenceOver100 = True
  162. statistics_algorithm = test.client.factory.create(
  163. '{http://schemas.datacontract.org/2004/07/MemoQServices}StatisticsAlgorithm')
  164. fake_options.Algorithm.value = statistics_algorithm.MemoQ
  165. options = test.statistics_options()
  166. self.assertEqual(fake_options.Analysis_ProjectTMs, options.Analysis_ProjectTMs,
  167. "Project TMs option shouldn't be different!")
  168. self.assertEqual(fake_options.Analysis_Homogenity, options.Analysis_Homogenity,
  169. "Analysis Homogenity option shouldn't be different!")
  170. self.assertEqual(fake_options.Algorithm.value, options.Algorithm.value,
  171. "Algorithm value shouldn't be different!")
  172. def test_run_statistics(self):
  173. """ Test for run_statistics method."""
  174. test = memoQProject.MemoQProject()
  175. test.project.languages.source = self.config["source_language"]
  176. test.project.languages.target = self.config["target_languages"]
  177. test.create_project()
  178. self.assertNotEqual(test.project.get_project_guid(),
  179. None, "Guid shouldn't be none!")
  180. result = test.import_document(self.config["test_file_path"])
  181. self.assertTrue(result, "Result should be true!")
  182. statistics = test.run_statistics()
  183. self.assertNotEqual(statistics, None, "Statistics shouldn't be none!")
  184. test.delete()
  185. def test_save_statistics(self):
  186. """ Test for save_statistics method."""
  187. test = memoQProject.MemoQProject()
  188. test.project.languages.source = self.config["source_language"]
  189. test.project.languages.target = self.config["target_languages"]
  190. test.create_project()
  191. self.assertNotEqual(test.project.get_project_guid(),
  192. None, "Guid shouldn't be none!")
  193. result = test.import_document(self.config["test_file_path"])
  194. self.assertTrue(result, "Result should be true!")
  195. file_path = test.save_statistics(".")
  196. self.assertTrue(os.path.isfile(file_path), "File should exist!")
  197. os.remove(file_path)
  198. test.delete()
  199. def test_delete(self):
  200. """ Test for delete method."""
  201. test = memoQProject.MemoQProject()
  202. test.project.languages.source = self.config["source_language"]
  203. test.project.languages.target = self.config["target_languages"]
  204. test.create_project()
  205. self.assertNotEqual(test.project.get_project_guid(),
  206. None, "Guid shouldn't be none!")
  207. guid = test.project.get_project_guid()
  208. test.delete()
  209. test.get_project_by_guid(guid)
  210. self.assertNotEqual(test.project.get_project_guid(),
  211. guid, "Guids don't match!")
  212. if __name__ == "__main__":
  213. unittest.main()