v5.page.test.js 3.0 KB

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