memoQProjectTest.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  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. test.get_project_by_guid(self.config["valid_project_guid"])
  24. self.assertEqual(test.project.get_project_guid(),
  25. self.config["valid_project_guid"], "Guids don't match!")
  26. test.get_project_by_guid(self.config["wrong_project_guid"])
  27. self.assertEqual(test.project.get_project_guid(),
  28. None, "Guid should be none!")
  29. def test_template_project_options(self):
  30. """ Test for template_project_options method."""
  31. test = memoQProject.MemoQProject()
  32. options = test.template_project_options(
  33. self.config["project_template_guid"])
  34. self.assertIsNone(
  35. options, "Options should be None if source language not set!")
  36. test.project.languages.source = self.config["source_language"]
  37. options = test.template_project_options(
  38. self.config["project_template_guid"])
  39. fake_options = test.client.factory.create(
  40. '{http://kilgray.com/memoqservices/2007}TemplateBasedProjectCreateInfo')
  41. fake_options.TemplateGuid = self.config["project_template_guid"]
  42. fake_options.Name = test.project.name
  43. fake_options.SourceLanguageCode = test.project.languages.source
  44. fake_options.Domain = test.project.domain
  45. fake_options.CreatorUser = self.config["creator_guid"]
  46. self.assertEqual(options.Name, fake_options.Name,
  47. "Names should be equal!")
  48. self.assertEqual(options.TemplateGuid, fake_options.TemplateGuid,
  49. "Template guids should be equal!")
  50. self.assertEqual(options.Domain, fake_options.Domain,
  51. "Domains should be equal!")
  52. self.assertEqual(options.SourceLanguageCode, fake_options.SourceLanguageCode,
  53. "Source language codes should be equal!")
  54. def test_create_project_from_template(self):
  55. """ Test for create_project_from_template method."""
  56. test = memoQProject.MemoQProject()
  57. test.project.languages.source = self.config["source_language"]
  58. test.create_project_from_template(
  59. template_guid=self.config["project_template_guid"])
  60. self.assertNotEqual(test.project.get_project_guid(),
  61. None, "Guid shouldn't be none!")
  62. test.delete()
  63. # Testing override
  64. options = test.template_project_options(
  65. self.config["project_template_guid"])
  66. options.Name += "_override"
  67. options.Domain = "override"
  68. test.create_project_from_template(options=options)
  69. self.assertNotEqual(test.project.get_project_guid(),
  70. None, "Guid shouldn't be none!")
  71. self.assertEqual(options.Domain, test.project.domain)
  72. test.delete()
  73. def test_project_options(self):
  74. """ Test for project_options method."""
  75. test = memoQProject.MemoQProject()
  76. options = test.project_options()
  77. self.assertIsNone(
  78. options, "Options should be None if source language not set!")
  79. test.project.languages.source = self.config["source_language"]
  80. options = test.project_options()
  81. self.assertIsNone(
  82. options, "Options should be None if target languages not set!")
  83. test.project.languages.target = self.config["target_languages"]
  84. options = test.project_options()
  85. fake_options = test.client.factory.create(
  86. '{http://kilgray.com/memoqservices/2007}ServerProjectDesktopDocsCreateInfo')
  87. fake_options.Name = test.project.name
  88. fake_options.SourceLanguageCode = test.project.languages.source
  89. fake_options.TargetLanguageCodes.string = test.project.languages.target
  90. fake_options.Deadline = test.project.deadline
  91. fake_options.RecordVersionHistory = True
  92. fake_options.CreatorUser = self.config["creator_guid"]
  93. self.assertEqual(options.Name, fake_options.Name,
  94. "Names should be equal!")
  95. self.assertEqual(options.TargetLanguageCodes.string, fake_options.TargetLanguageCodes.string,
  96. "Target languages should be equal!")
  97. self.assertEqual(options.Deadline, fake_options.Deadline,
  98. "Deadlines should be equal!")
  99. self.assertEqual(options.SourceLanguageCode, fake_options.SourceLanguageCode,
  100. "Source language codes should be equal!")
  101. self.assertEqual(options.CreatorUser, fake_options.CreatorUser,
  102. "Creators should be equal!")
  103. def test_create_project(self):
  104. """ Test for create_project method."""
  105. test = memoQProject.MemoQProject()
  106. test.project.languages.source = self.config["source_language"]
  107. test.project.languages.target = self.config["target_languages"]
  108. test.create_project()
  109. self.assertNotEqual(test.project.get_project_guid(),
  110. None, "Guid shouldn't be none!")
  111. test.delete()
  112. # Testing override
  113. options = test.project_options()
  114. options.Name += "_override"
  115. options.Domain = "override"
  116. test.create_project(options=options)
  117. self.assertNotEqual(test.project.get_project_guid(),
  118. None, "Guid shouldn't be none!")
  119. self.assertEqual(options.Domain, test.project.domain)
  120. test.delete()
  121. def test_import_document(self):
  122. """ Test for import_document method."""
  123. test = memoQProject.MemoQProject()
  124. test.project.languages.source = self.config["source_language"]
  125. test.project.languages.target = self.config["target_languages"]
  126. test.create_project()
  127. self.assertNotEqual(test.project.get_project_guid(),
  128. None, "Guid shouldn't be none!")
  129. result = test.import_document(self.config["test_file_path"])
  130. self.assertTrue(result, "Result should be true!")
  131. test.delete()
  132. def test_get_project_documents(self):
  133. """ Test for get_project_documents method."""
  134. test = memoQProject.MemoQProject()
  135. test.project.languages.source = self.config["source_language"]
  136. test.project.languages.target = self.config["target_languages"]
  137. test.create_project()
  138. self.assertNotEqual(test.project.get_project_guid(),
  139. None, "Guid shouldn't be none!")
  140. result = test.import_document(self.config["test_file_path"])
  141. self.assertTrue(result, "Result should be true!")
  142. filename = os.path.basename(self.config["test_file_path"])
  143. test.get_project_documents()
  144. self.assertEqual(test.documents[0][0].DocumentName,
  145. filename, "Name of document doesn't match test filename!")
  146. test.delete()
  147. def test_export_documents(self):
  148. """ Test for export_documents method."""
  149. test = memoQProject.MemoQProject()
  150. test.project.languages.source = self.config["source_language"]
  151. test.project.languages.target = self.config["target_languages"]
  152. test.create_project()
  153. self.assertNotEqual(test.project.get_project_guid(),
  154. None, "Guid shouldn't be none!")
  155. result = test.import_document(self.config["test_file_path"])
  156. self.assertTrue(result, "Result should be true!")
  157. filename = os.path.basename(self.config["test_file_path"])
  158. test.get_project_documents()
  159. self.assertEqual(test.documents[0][0].DocumentName,
  160. filename, "Name of document doesn't match test filename!")
  161. export_result = test.export_documents(".")
  162. filepath = os.path.join(".", filename)
  163. self.assertTrue(export_result, "Export result should be true!")
  164. self.assertTrue(os.path.isfile(filepath), "File should exist!")
  165. os.remove(filepath)
  166. test.delete()
  167. def test_export_documents2(self):
  168. """ Test for export_documents2 method."""
  169. test = memoQProject.MemoQProject()
  170. test.project.languages.source = self.config["source_language"]
  171. test.project.languages.target = self.config["target_languages"]
  172. test.create_project()
  173. self.assertNotEqual(test.project.get_project_guid(),
  174. None, "Guid shouldn't be none!")
  175. result = test.import_document(self.config["test_file_path"])
  176. self.assertTrue(result, "Result should be true!")
  177. filename = os.path.basename(self.config["test_file_path"])
  178. test.get_project_documents()
  179. self.assertEqual(test.documents[0][0].DocumentName,
  180. filename, "Name of document doesn't match test filename!")
  181. export_result = test.export_documents2(".")
  182. filepath = os.path.join(".", filename)
  183. self.assertTrue(export_result, "Export result should be true!")
  184. self.assertTrue(os.path.isfile(filepath), "File should exist!")
  185. os.remove(filepath)
  186. test.delete()
  187. def test_statistics_options(self):
  188. """ Test for statistics_options method."""
  189. test = memoQProject.MemoQProject()
  190. fake_options = test.client.factory.create(
  191. '{http://kilgray.com/memoqservices/2007}StatisticsOptions')
  192. fake_options.Analysis_ProjectTMs = True
  193. fake_options.Analysis_Homogenity = True
  194. fake_options.ShowResultsPerFile = True
  195. fake_options.RepetitionPreferenceOver100 = True
  196. statistics_algorithm = test.client.factory.create(
  197. '{http://schemas.datacontract.org/2004/07/MemoQServices}StatisticsAlgorithm')
  198. fake_options.Algorithm.value = statistics_algorithm.MemoQ
  199. options = test.statistics_options()
  200. self.assertEqual(fake_options.Analysis_ProjectTMs, options.Analysis_ProjectTMs,
  201. "Project TMs option shouldn't be different!")
  202. self.assertEqual(fake_options.Analysis_Homogenity, options.Analysis_Homogenity,
  203. "Analysis Homogenity option shouldn't be different!")
  204. self.assertEqual(fake_options.Algorithm.value, options.Algorithm.value,
  205. "Algorithm value shouldn't be different!")
  206. def test_run_statistics(self):
  207. """ Test for run_statistics method."""
  208. test = memoQProject.MemoQProject()
  209. test.project.languages.source = self.config["source_language"]
  210. test.project.languages.target = self.config["target_languages"]
  211. test.create_project()
  212. self.assertNotEqual(test.project.get_project_guid(),
  213. None, "Guid shouldn't be none!")
  214. result = test.import_document(self.config["test_file_path"])
  215. self.assertTrue(result, "Result should be true!")
  216. statistics = test.run_statistics()
  217. self.assertNotEqual(statistics, None, "Statistics shouldn't be none!")
  218. test.delete()
  219. def test_save_statistics(self):
  220. """ Test for save_statistics method."""
  221. test = memoQProject.MemoQProject()
  222. test.project.languages.source = self.config["source_language"]
  223. test.project.languages.target = self.config["target_languages"]
  224. test.create_project()
  225. self.assertNotEqual(test.project.get_project_guid(),
  226. None, "Guid shouldn't be none!")
  227. result = test.import_document(self.config["test_file_path"])
  228. self.assertTrue(result, "Result should be true!")
  229. file_path = test.save_statistics(".")
  230. self.assertTrue(os.path.isfile(file_path), "File should exist!")
  231. os.remove(file_path)
  232. test.delete()
  233. def test_delete(self):
  234. """ Test for delete method."""
  235. test = memoQProject.MemoQProject()
  236. test.project.languages.source = self.config["source_language"]
  237. test.project.languages.target = self.config["target_languages"]
  238. test.create_project()
  239. self.assertNotEqual(test.project.get_project_guid(),
  240. None, "Guid shouldn't be none!")
  241. guid = test.project.get_project_guid()
  242. test.delete()
  243. test.get_project_by_guid(guid)
  244. self.assertNotEqual(test.project.get_project_guid(),
  245. guid, "Guids don't match!")
  246. if __name__ == "__main__":
  247. unittest.main()