v5.page.test.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import mongoose from 'mongoose';
  2. import { getInstance } from '../setup-crowi';
  3. describe('Page', () => {
  4. let crowi;
  5. let Page;
  6. let Revision;
  7. let User;
  8. let Tag;
  9. let PageTagRelation;
  10. let Bookmark;
  11. let Comment;
  12. let ShareLink;
  13. let PageRedirect;
  14. let xssSpy;
  15. let rootPage;
  16. let dummyUser1;
  17. beforeAll(async() => {
  18. crowi = await getInstance();
  19. await crowi.configManager.updateConfigsInTheSameNamespace('crowi', { 'app:isV5Compatible': true });
  20. jest.restoreAllMocks();
  21. User = mongoose.model('User');
  22. Page = mongoose.model('Page');
  23. Revision = mongoose.model('Revision');
  24. Tag = mongoose.model('Tag');
  25. PageTagRelation = mongoose.model('PageTagRelation');
  26. Bookmark = mongoose.model('Bookmark');
  27. Comment = mongoose.model('Comment');
  28. ShareLink = mongoose.model('ShareLink');
  29. PageRedirect = mongoose.model('PageRedirect');
  30. dummyUser1 = await User.findOne({ username: 'v5DummyUser1' });
  31. if (dummyUser1 == null) {
  32. dummyUser1 = await User.create({ name: 'v5DummyUser1', username: 'v5DummyUser1', email: 'v5DummyUser1@example.com' });
  33. }
  34. rootPage = await Page.findOne({ path: '/' });
  35. if (rootPage == null) {
  36. const pages = await Page.insertMany([
  37. {
  38. path: '/',
  39. grant: Page.GRANT_PUBLIC,
  40. },
  41. ]);
  42. rootPage = pages[0];
  43. }
  44. const createPageId1 = new mongoose.Types.ObjectId();
  45. await Page.insertMany([
  46. {
  47. _id: createPageId1,
  48. path: '/v5_empty_create_4',
  49. grant: Page.GRANT_PUBLIC,
  50. parent: rootPage._id,
  51. isEmpty: true,
  52. },
  53. {
  54. path: '/v5_empty_create_4/v5_create_5',
  55. grant: Page.GRANT_PUBLIC,
  56. creator: dummyUser1,
  57. lastUpdateUser: dummyUser1._id,
  58. parent: createPageId1,
  59. },
  60. ]);
  61. });
  62. describe('create', () => {
  63. test('Should create single page', async() => {
  64. const page = await Page.create('/v5_create1', 'create1', dummyUser1, {});
  65. expect(page).toBeTruthy();
  66. expect(page.parent).toStrictEqual(rootPage._id);
  67. });
  68. test('Should create empty-child and non-empty grandchild', async() => {
  69. const grandchildPage = await Page.create('/v5_empty_create2/v5_create_3', 'grandchild', dummyUser1, {});
  70. const childPage = await Page.findOne({ path: '/v5_empty_create2' });
  71. expect(grandchildPage).toBeTruthy();
  72. expect(childPage).toBeTruthy();
  73. expect(childPage.parent).toStrictEqual(rootPage._id);
  74. expect(grandchildPage.parent).toStrictEqual(childPage._id);
  75. });
  76. test('Should create on empty page', async() => {
  77. const beforeCreatePage = await Page.findOne({ path: '/v5_empty_create_4' });
  78. expect(beforeCreatePage.isEmpty).toBe(true);
  79. const childPage = await Page.create('/v5_empty_create_4', 'body', dummyUser1, {});
  80. const grandchildPage = await Page.findOne({ parent: childPage._id });
  81. expect(childPage).toBeTruthy();
  82. expect(childPage.isEmpty).toBe(false);
  83. expect(grandchildPage).toBeTruthy();
  84. expect(childPage.parent).toStrictEqual(rootPage._id);
  85. expect(grandchildPage.parent).toStrictEqual(childPage._id);
  86. });
  87. });
  88. });