page.test.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. /* eslint-disable no-unused-vars */
  2. const mongoose = require('mongoose');
  3. const { getInstance } = require('../setup-crowi');
  4. let testUser1;
  5. let testUser2;
  6. let parentTag;
  7. let childTag;
  8. let parentForRename1;
  9. let parentForRename2;
  10. let parentForRename3;
  11. let parentForRename4;
  12. let parentForDuplicate;
  13. let parentForDelete;
  14. let parentForDeleteCompletely;
  15. let parentForRevert;
  16. let childForRename;
  17. let childForDuplicate;
  18. let childForDelete;
  19. let childForDeleteCompletely;
  20. let childForRevert;
  21. describe('PageService', () => {
  22. let crowi;
  23. let Page;
  24. let Revision;
  25. let User;
  26. let Tag;
  27. let PageTagRelation;
  28. beforeAll(async(done) => {
  29. crowi = await getInstance();
  30. User = mongoose.model('User');
  31. Page = mongoose.model('Page');
  32. Revision = mongoose.model('Revision');
  33. Tag = mongoose.model('Tag');
  34. PageTagRelation = mongoose.model('PageTagRelation');
  35. await User.insertMany([
  36. { name: 'someone1', username: 'someone1', email: 'someone1@example.com' },
  37. { name: 'someone2', username: 'someone2', email: 'someone2@example.com' },
  38. ]);
  39. testUser1 = await User.findOne({ username: 'someone1' });
  40. testUser2 = await User.findOne({ username: 'someone2' });
  41. await Page.insertMany([
  42. {
  43. path: '/parentForRename1',
  44. grant: Page.GRANT_PUBLIC,
  45. creator: testUser1,
  46. lastUpdateUser: testUser1,
  47. },
  48. {
  49. path: '/parentForRename2',
  50. grant: Page.GRANT_PUBLIC,
  51. creator: testUser1,
  52. lastUpdateUser: testUser1,
  53. },
  54. {
  55. path: '/parentForRename3',
  56. grant: Page.GRANT_PUBLIC,
  57. creator: testUser1,
  58. lastUpdateUser: testUser1,
  59. },
  60. {
  61. path: '/parentForRename4',
  62. grant: Page.GRANT_PUBLIC,
  63. creator: testUser1,
  64. lastUpdateUser: testUser1,
  65. },
  66. {
  67. path: '/parentForRename1/child',
  68. grant: Page.GRANT_PUBLIC,
  69. creator: testUser1,
  70. lastUpdateUser: testUser1,
  71. },
  72. {
  73. path: '/parentForDuplicate',
  74. grant: Page.GRANT_PUBLIC,
  75. creator: testUser1,
  76. lastUpdateUser: testUser1,
  77. },
  78. {
  79. path: '/parentForDuplicate/child',
  80. grant: Page.GRANT_PUBLIC,
  81. creator: testUser1,
  82. lastUpdateUser: testUser1,
  83. },
  84. {
  85. path: '/parentForDelete',
  86. grant: Page.GRANT_PUBLIC,
  87. creator: testUser1,
  88. lastUpdateUser: testUser1,
  89. },
  90. {
  91. path: '/parentForDelete/child',
  92. grant: Page.GRANT_PUBLIC,
  93. creator: testUser1,
  94. lastUpdateUser: testUser1,
  95. },
  96. {
  97. path: '/parentForDeleteCompletely',
  98. grant: Page.GRANT_PUBLIC,
  99. creator: testUser1,
  100. lastUpdateUser: testUser1,
  101. },
  102. {
  103. path: '/parentForDeleteCompletely/child',
  104. grant: Page.GRANT_PUBLIC,
  105. creator: testUser1,
  106. lastUpdateUser: testUser1,
  107. },
  108. {
  109. path: '/parentForRevert',
  110. grant: Page.GRANT_PUBLIC,
  111. creator: testUser1,
  112. lastUpdateUser: testUser1,
  113. },
  114. {
  115. path: '/parentForRevert/child',
  116. grant: Page.GRANT_PUBLIC,
  117. creator: testUser1,
  118. lastUpdateUser: testUser1,
  119. },
  120. ]);
  121. parentForRename1 = await Page.findOne({ path: '/parentForRename1' });
  122. parentForRename2 = await Page.findOne({ path: '/parentForRename2' });
  123. parentForRename3 = await Page.findOne({ path: '/parentForRename3' });
  124. parentForRename4 = await Page.findOne({ path: '/parentForRename4' });
  125. parentForDuplicate = await Page.findOne({ path: '/parentForDuplicate' });
  126. parentForDelete = await Page.findOne({ path: '/parentForDelete' });
  127. parentForDeleteCompletely = await Page.findOne({ path: '/parentForDeleteCompletely' });
  128. parentForRevert = await Page.findOne({ path: '/parentForRevert' });
  129. childForRename = await Page.findOne({ path: '/parentForRename1/child' });
  130. childForDuplicate = await Page.findOne({ path: '/parentForDuplicate/child' });
  131. childForDelete = await Page.findOne({ path: '/parentForDelete/child' });
  132. childForDeleteCompletely = await Page.findOne({ path: '/parentForDeleteCompletely/child' });
  133. childForRevert = await Page.findOne({ path: '/parentForRevert/child' });
  134. await Tag.insertMany([
  135. { name: 'Parent' },
  136. { name: 'Child' },
  137. ]);
  138. parentTag = await Tag.findOne({ name: 'Parent' });
  139. childTag = await Tag.findOne({ name: 'Child' });
  140. await PageTagRelation.insertMany([
  141. { relatedPage: parentForDuplicate, relatedTag: parentTag },
  142. { relatedPage: childForDuplicate, relatedTag: childTag },
  143. ]);
  144. done();
  145. });
  146. describe('rename page', () => {
  147. describe('renamePage()', () => {
  148. test('rename page without options', async() => {
  149. const resultPage = await crowi.pageService.renamePage(parentForRename1, '/renamed1', testUser2, {});
  150. const redirectedFromPage = await Page.findOne({ path: '/parentForRename1' });
  151. const redirectedFromPageRevision = await Revision.findOne({ path: '/parentForRename1' });
  152. expect(resultPage.path).toBe('/renamed1');
  153. expect(resultPage.grant).toBe(1);
  154. expect(resultPage.status).toBe(Page.STATUS_PUBLISHED);
  155. expect(resultPage.lastUpdateUser).toEqual(testUser1._id);
  156. expect(redirectedFromPage).toBeNull();
  157. expect(redirectedFromPageRevision).toBeNull();
  158. });
  159. // test('rename page with updateMetadata option', async() => {
  160. // parentForRename = await crowi.pageService.renamePage(parentForRename, '/parentForRename3', testUser2, { updateMetadata: true });
  161. // const redirectedFromPage = await Page.findOne({ path: '/parentForRename2' });
  162. // const redirectedFromPageRevision = await Revision.findOne({ path: '/parentForRename2' });
  163. // expect(parentForRename.path).toBe('/parentForRename3');
  164. // expect(parentForRename.grant).toBe(1);
  165. // expect(parentForRename.status).toBe(Page.STATUS_PUBLISHED);
  166. // expect(parentForRename.lastUpdateUser).toEqual(testUser2._id);
  167. // expect(redirectedFromPage).toBeNull();
  168. // expect(redirectedFromPageRevision).toBeNull();
  169. // });
  170. // test('rename page with createRedirectPage option', async() => {
  171. // parentForRename = await crowi.pageService.renamePage(parentForRename, '/parentForRename4', testUser2, { createRedirectPage: true });
  172. // const redirectedFromPage = await Page.findOne({ path: '/parentForRename3' });
  173. // const redirectedFromPageRevision = await Revision.findOne({ path: '/parentForRename3' });
  174. // expect(parentForRename.path).toBe('/parentForRename4');
  175. // expect(parentForRename.grant).toBe(1);
  176. // expect(parentForRename.status).toBe(Page.STATUS_PUBLISHED);
  177. // expect(parentForRename.lastUpdateUser).toEqual(testUser2._id);
  178. // expect(redirectedFromPage).not.toBeNull();
  179. // expect(redirectedFromPage.redirectTo).toBe('/parentForRename4');
  180. // expect(redirectedFromPageRevision).not.toBeNull();
  181. // expect(redirectedFromPageRevision.body).toBe('redirect /parentForRename4');
  182. // });
  183. // test('rename page with isRecursively', async() => {
  184. // parentForRename = await crowi.pageService.renamePage(parentForRename, '/parentForRename5', testUser2, { }, true);
  185. // const redirectedFromPage = await Page.findOne({ path: '/parentForRename4' });
  186. // const redirectedFromPageRevision = await Revision.findOne({ path: '/parentForRename4' });
  187. // expect(parentForRename.path).toBe('/parentForRename5');
  188. // expect(parentForRename.grant).toBe(1);
  189. // expect(parentForRename.status).toBe(Page.STATUS_PUBLISHED);
  190. // expect(parentForRename.lastUpdateUser).toEqual(testUser2._id);
  191. // expect(redirectedFromPage).toBeNull();
  192. // expect(redirectedFromPageRevision).toBeNull();
  193. // });
  194. });
  195. test('renameDescendants()', () => {
  196. expect(3).toBe(3);
  197. });
  198. });
  199. describe('duplicate page', () => {
  200. test('duplicate()', () => {
  201. expect(3).toBe(3);
  202. });
  203. test('duplicateDescendants()', () => {
  204. expect(3).toBe(3);
  205. });
  206. test('duplicateTags()', () => {
  207. expect(3).toBe(3);
  208. });
  209. });
  210. describe('delete page', () => {
  211. test('deletePage()', () => {
  212. expect(3).toBe(3);
  213. });
  214. test('deleteDescendants()', () => {
  215. expect(3).toBe(3);
  216. });
  217. });
  218. describe('delete page completely', () => {
  219. test('deleteCompletely()', () => {
  220. expect(3).toBe(3);
  221. });
  222. test('deleteMultipleCompletely()', () => {
  223. expect(3).toBe(3);
  224. });
  225. });
  226. describe('revert page', () => {
  227. test('revertDeletedPage()', () => {
  228. expect(3).toBe(3);
  229. });
  230. test('revertDeletedPages()', () => {
  231. expect(3).toBe(3);
  232. });
  233. });
  234. });