v5.page.test.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. rootPage = await Page.findOne({ path: '/' });
  32. const createPageId1 = new mongoose.Types.ObjectId();
  33. await Page.insertMany([
  34. {
  35. _id: createPageId1,
  36. path: '/v5_empty_create_4',
  37. grant: Page.GRANT_PUBLIC,
  38. parent: rootPage._id,
  39. isEmpty: true,
  40. },
  41. {
  42. path: '/v5_empty_create_4/v5_create_5',
  43. grant: Page.GRANT_PUBLIC,
  44. creator: dummyUser1,
  45. lastUpdateUser: dummyUser1._id,
  46. parent: createPageId1,
  47. },
  48. ]);
  49. });
  50. describe('create', () => {
  51. test('Should create single page', async() => {
  52. const page = await Page.create('/v5_create1', 'create1', dummyUser1, {});
  53. expect(page).toBeTruthy();
  54. expect(page.parent).toStrictEqual(rootPage._id);
  55. });
  56. test('Should create empty-child and non-empty grandchild', async() => {
  57. const grandchildPage = await Page.create('/v5_empty_create2/v5_create_3', 'grandchild', dummyUser1, {});
  58. const childPage = await Page.findOne({ path: '/v5_empty_create2' });
  59. expect(childPage.isEmpty).toBe(true);
  60. expect(grandchildPage).toBeTruthy();
  61. expect(childPage).toBeTruthy();
  62. expect(childPage.parent).toStrictEqual(rootPage._id);
  63. expect(grandchildPage.parent).toStrictEqual(childPage._id);
  64. });
  65. test('Should create on empty page', async() => {
  66. const beforeCreatePage = await Page.findOne({ path: '/v5_empty_create_4' });
  67. expect(beforeCreatePage.isEmpty).toBe(true);
  68. const childPage = await Page.create('/v5_empty_create_4', 'body', dummyUser1, {});
  69. const grandchildPage = await Page.findOne({ parent: childPage._id });
  70. expect(childPage).toBeTruthy();
  71. expect(childPage.isEmpty).toBe(false);
  72. expect(childPage.revision.body).toBe('body');
  73. expect(grandchildPage).toBeTruthy();
  74. expect(childPage.parent).toStrictEqual(rootPage._id);
  75. expect(grandchildPage.parent).toStrictEqual(childPage._id);
  76. });
  77. });
  78. });