/treeio/knowledge/tests.py

https://github.com/treeio/treeio · Python · 331 lines · 259 code · 51 blank · 21 comment · 0 complexity · dfd81914974da50ddc959db3ccd66da5 MD5 · raw file

  1. # encoding: utf-8
  2. # Copyright 2011 Tree.io Limited
  3. # This file is part of Treeio.
  4. # License www.tree.io/license
  5. """
  6. Knowledge base: test suites
  7. """
  8. from django.test import TestCase
  9. from django.test.client import Client
  10. from django.core.urlresolvers import reverse
  11. from django.contrib.auth.models import User as DjangoUser
  12. from treeio.core.models import User, Group, Perspective, ModuleSetting
  13. from treeio.knowledge.models import KnowledgeFolder, KnowledgeItem, KnowledgeCategory
  14. class KnowledgeModelsTest(TestCase):
  15. " Knowledge models tests"
  16. def test_model_folder(self):
  17. "Test folder model"
  18. obj = KnowledgeFolder(name='test', treepath='test')
  19. obj.save()
  20. self.assertEquals('test', obj.name)
  21. self.assertNotEquals(obj.id, None)
  22. obj.delete()
  23. def test_model_item(self):
  24. "Test item model"
  25. folder = KnowledgeFolder(name='test', treepath='test')
  26. folder.save()
  27. category = KnowledgeCategory(name='test', treepath='test')
  28. category.save()
  29. obj = KnowledgeItem(
  30. name='test', folder=folder, category=category, treepath='test')
  31. obj.save()
  32. self.assertEquals(folder, obj.folder)
  33. self.assertNotEquals(obj.id, None)
  34. obj.delete()
  35. def test_model_category(self):
  36. "Test category model"
  37. obj = KnowledgeCategory(name='test', details='test', treepath='test')
  38. obj.save()
  39. obj.delete()
  40. class KnowledgeViewsTest(TestCase):
  41. "Knowledge functional tests for views"
  42. username = "test"
  43. password = "password"
  44. def setUp(self):
  45. self.group, created = Group.objects.get_or_create(name='test')
  46. duser, created = DjangoUser.objects.get_or_create(username=self.username)
  47. duser.set_password(self.password)
  48. duser.save()
  49. self.user, created = User.objects.get_or_create(user=duser)
  50. self.user.save()
  51. perspective, created = Perspective.objects.get_or_create(name='default')
  52. perspective.set_default_user()
  53. perspective.save()
  54. ModuleSetting.set('default_perspective', perspective.id)
  55. self.folder = KnowledgeFolder(name='test', treepath='test')
  56. self.folder.set_default_user()
  57. self.folder.save()
  58. self.category = KnowledgeCategory(name='test', treepath='test')
  59. self.category.set_default_user()
  60. self.category.save()
  61. self.item = KnowledgeItem(name='test', folder=self.folder,
  62. category=self.category, treepath='test')
  63. self.item.set_default_user()
  64. self.item.save()
  65. # parent folder
  66. self.parent = KnowledgeFolder(name='test', treepath='test')
  67. self.parent.set_default_user()
  68. self.parent.save()
  69. self.client = Client()
  70. ######################################
  71. # Testing views when user is logged in
  72. ######################################
  73. def test_index_login(self):
  74. "Test index page with login at /knowledge/"
  75. response = self.client.post('/accounts/login',
  76. {'username': self.username, 'password': self.password})
  77. self.assertRedirects(response, '/')
  78. response = self.client.get(reverse('knowledge'))
  79. self.assertEquals(response.status_code, 200)
  80. def test_index_categories_login(self):
  81. "Test index page with login at /knowledge/categories/"
  82. response = self.client.post('/accounts/login',
  83. {'username': self.username, 'password': self.password})
  84. self.assertRedirects(response, '/')
  85. response = self.client.get(reverse('knowledge_categories'))
  86. self.assertEquals(response.status_code, 200)
  87. # Knowledge folders
  88. def test_knowledge_folder_add(self):
  89. "Test index page with login at /knowledge/folder/add/"
  90. response = self.client.post('/accounts/login',
  91. {'username': self.username, 'password': self.password})
  92. self.assertRedirects(response, '/')
  93. response = self.client.get(reverse('knowledge_folder_add'))
  94. self.assertEquals(response.status_code, 200)
  95. def test_knowledge_folder_add_typed(self):
  96. "Test index page with login at /knowledge/folder/add/<folderPath>"
  97. response = self.client.post('/accounts/login',
  98. {'username': self.username, 'password': self.password})
  99. self.assertRedirects(response, '/')
  100. response = self.client.get(
  101. reverse('knowledge_folder_add_folder', args=[self.parent.treepath]))
  102. self.assertEquals(response.status_code, 200)
  103. def test_knowledge_folder_view(self):
  104. "Test index page with login at /knowledge/folder/view/<knowledgeType_id>"
  105. response = self.client.post('/accounts/login',
  106. {'username': self.username, 'password': self.password})
  107. self.assertRedirects(response, '/')
  108. response = self.client.get(
  109. reverse('knowledge_folder_view', args=[self.folder.treepath]))
  110. self.assertEquals(response.status_code, 200)
  111. def test_knowledge_folder_edit(self):
  112. "Test index page with login at /knowledge/folder/edit/<knowledgeType_id>"
  113. response = self.client.post('/accounts/login',
  114. {'username': self.username, 'password': self.password})
  115. self.assertRedirects(response, '/')
  116. response = self.client.get(
  117. reverse('knowledge_folder_edit', args=[self.folder.id]))
  118. self.assertEquals(response.status_code, 200)
  119. def test_knowledge_folder_delete(self):
  120. "Test index page with login at /knowledge/folder/delete/<knowledgeType_id>"
  121. response = self.client.post('/accounts/login',
  122. {'username': self.username, 'password': self.password})
  123. self.assertRedirects(response, '/')
  124. response = self.client.get(
  125. reverse('knowledge_folder_delete', args=[self.folder.id]))
  126. self.assertEquals(response.status_code, 200)
  127. # Knowledge items
  128. def test_knowledge_item_add(self):
  129. "Test index page with login at /knowledge/item/add"
  130. response = self.client.post('/accounts/login',
  131. {'username': self.username, 'password': self.password})
  132. self.assertRedirects(response, '/')
  133. response = self.client.get(reverse('knowledge_item_add'))
  134. self.assertEquals(response.status_code, 200)
  135. def test_knowledge_item_add_typed(self):
  136. "Test index page with login at /knowledge/item/add/<folderPath>"
  137. response = self.client.post('/accounts/login',
  138. {'username': self.username, 'password': self.password})
  139. self.assertRedirects(response, '/')
  140. response = self.client.get(
  141. reverse('knowledge_item_add_folder', args=[self.folder.treepath]))
  142. self.assertEquals(response.status_code, 200)
  143. def test_knowledge_item_view(self):
  144. "Test index page with login at /knowledge/item/view/<knowledgeItem_id>"
  145. response = self.client.post('/accounts/login',
  146. {'username': self.username, 'password': self.password})
  147. self.assertRedirects(response, '/')
  148. response = self.client.get(reverse('knowledge_item_view',
  149. args=[self.item.folder.treepath, self.item.treepath]))
  150. self.assertEquals(response.status_code, 200)
  151. def test_knowledge_item_edit(self):
  152. "Test index page with login at /knowledge/item/edit/<knowledgeItem_id>"
  153. response = self.client.post('/accounts/login',
  154. {'username': self.username, 'password': self.password})
  155. self.assertRedirects(response, '/')
  156. response = self.client.get(
  157. reverse('knowledge_item_edit', args=[self.item.id]))
  158. self.assertEquals(response.status_code, 200)
  159. def test_knowledge_item_delete(self):
  160. "Test index page with login at /knowledge/item/delete/<knowledgeItem_id>"
  161. response = self.client.post('/accounts/login',
  162. {'username': self.username, 'password': self.password})
  163. self.assertRedirects(response, '/')
  164. response = self.client.get(
  165. reverse('knowledge_item_delete', args=[self.item.id]))
  166. self.assertEquals(response.status_code, 200)
  167. # Knowledge categories
  168. def test_knowledge_category_add(self):
  169. "Test index page with login at /knowledge/category/add"
  170. response = self.client.post('/accounts/login',
  171. {'username': self.username, 'password': self.password})
  172. self.assertRedirects(response, '/')
  173. response = self.client.get(reverse('knowledge_category_add'))
  174. self.assertEquals(response.status_code, 200)
  175. def test_knowledge_category_view(self):
  176. "Test index page with login at /knowledge/category/view/<knowledgeCategory_id>"
  177. response = self.client.post('/accounts/login',
  178. {'username': self.username, 'password': self.password})
  179. self.assertRedirects(response, '/')
  180. response = self.client.get(
  181. reverse('knowledge_category_view', args=[self.category.treepath]))
  182. self.assertEquals(response.status_code, 200)
  183. def test_knowledge_category_edit(self):
  184. "Test index page with login at /knowledge/category/edit/<knowledgeCategory_id>"
  185. response = self.client.post('/accounts/login',
  186. {'username': self.username, 'password': self.password})
  187. self.assertRedirects(response, '/')
  188. response = self.client.get(
  189. reverse('knowledge_category_edit', args=[self.category.id]))
  190. self.assertEquals(response.status_code, 200)
  191. def test_knowledge_category_delete(self):
  192. "Test index page with login at /knowledge/category/delete/<knowledgeCategory_id>"
  193. response = self.client.post('/accounts/login',
  194. {'username': self.username, 'password': self.password})
  195. self.assertRedirects(response, '/')
  196. response = self.client.get(
  197. reverse('knowledge_category_delete', args=[self.category.id]))
  198. self.assertEquals(response.status_code, 200)
  199. ######################################
  200. # Testing views when user is not logged in
  201. ######################################
  202. def test_index(self):
  203. "Test index page at /knowledge/"
  204. response = self.client.get('/knowledge/')
  205. # Redirects as unauthenticated
  206. self.assertRedirects(response, reverse('user_login'))
  207. def test_index_categories_out(self):
  208. "Testing /knowledge/categories/"
  209. response = self.client.get(reverse('knowledge_categories'))
  210. self.assertRedirects(response, reverse('user_login'))
  211. # Knowledge folders
  212. def test_knowledge_folder_add_out(self):
  213. "Testing /knowledge/folder/add/"
  214. response = self.client.get(reverse('knowledge_folder_add'))
  215. self.assertRedirects(response, reverse('user_login'))
  216. def test_knowledge_folder_add_typed_out(self):
  217. "Testing /knowledge/folder/add/<folderPath>"
  218. response = self.client.get(
  219. reverse('knowledge_folder_add_folder', args=[self.parent.treepath]))
  220. self.assertRedirects(response, reverse('user_login'))
  221. def test_knowledge_folder_view_out(self):
  222. "Testing /knowledge/folder/view/<knowledgeType_id>"
  223. response = self.client.get(
  224. reverse('knowledge_folder_view', args=[self.folder.treepath]))
  225. self.assertRedirects(response, reverse('user_login'))
  226. def test_knowledge_folder_edit_out(self):
  227. "Testing /knowledge/folder/edit/<knowledgeType_id>"
  228. response = self.client.get(
  229. reverse('knowledge_folder_edit', args=[self.folder.id]))
  230. self.assertRedirects(response, reverse('user_login'))
  231. def test_knowledge_folder_delete_out(self):
  232. "Testing /knowledge/folder/delete/<knowledgeType_id>"
  233. response = self.client.get(
  234. reverse('knowledge_folder_delete', args=[self.folder.id]))
  235. self.assertRedirects(response, reverse('user_login'))
  236. # Knowledge items
  237. def test_knowledge_item_add_out(self):
  238. "Testing /knowledge/item/add"
  239. response = self.client.get(reverse('knowledge_item_add'))
  240. self.assertRedirects(response, reverse('user_login'))
  241. def test_knowledge_item_add_typed_out(self):
  242. "Testing /knowledge/item/add/<folderPath>"
  243. response = self.client.get(
  244. reverse('knowledge_item_add_folder', args=[self.folder.treepath]))
  245. self.assertRedirects(response, reverse('user_login'))
  246. def test_knowledge_item_view_out(self):
  247. "Testing /knowledge/item/view/<knowledgeItem_id>"
  248. response = self.client.get(reverse('knowledge_item_view',
  249. args=[self.item.folder.treepath, self.item.treepath]))
  250. self.assertRedirects(response, reverse('user_login'))
  251. def test_knowledge_item_edit_out(self):
  252. "Testing /knowledge/item/edit/<knowledgeItem_id>"
  253. response = self.client.get(
  254. reverse('knowledge_item_edit', args=[self.item.id]))
  255. self.assertRedirects(response, reverse('user_login'))
  256. def test_knowledge_item_delete_out(self):
  257. "Testing /knowledge/item/delete/<knowledgeItem_id>"
  258. response = self.client.get(
  259. reverse('knowledge_item_delete', args=[self.item.id]))
  260. self.assertRedirects(response, reverse('user_login'))
  261. # Knowledge categories
  262. def test_knowledge_category_add_out(self):
  263. "Testing /knowledge/category/add"
  264. response = self.client.get(reverse('knowledge_category_add'))
  265. self.assertRedirects(response, reverse('user_login'))
  266. def test_knowledge_category_view_out(self):
  267. "Testing /knowledge/category/view/<knowledgeCategory_id>"
  268. response = self.client.get(
  269. reverse('knowledge_category_view', args=[self.category.treepath]))
  270. self.assertRedirects(response, reverse('user_login'))
  271. def test_knowledge_category_edit_out(self):
  272. "Testing /knowledge/category/edit/<knowledgeCategory_id>"
  273. response = self.client.get(
  274. reverse('knowledge_category_edit', args=[self.category.id]))
  275. self.assertRedirects(response, reverse('user_login'))
  276. def test_knowledge_category_delete_out(self):
  277. "Testing /knowledge/category/delete/<knowledgeCategory_id>"
  278. response = self.client.get(
  279. reverse('knowledge_category_delete', args=[self.category.id]))
  280. self.assertRedirects(response, reverse('user_login'))