user-groups.test.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import mongoose from 'mongoose';
  2. import { getInstance } from '../setup-crowi';
  3. describe('UserGroupService', () => {
  4. let crowi;
  5. let UserGroup;
  6. const groupId1 = new mongoose.Types.ObjectId();
  7. const groupId2 = new mongoose.Types.ObjectId();
  8. const groupId3 = new mongoose.Types.ObjectId();
  9. beforeAll(async() => {
  10. crowi = await getInstance();
  11. UserGroup = mongoose.model('UserGroup');
  12. // Create Groups
  13. await UserGroup.insertMany([
  14. // No parent
  15. {
  16. _id: groupId1,
  17. name: 'v5_group1',
  18. description: 'description1',
  19. },
  20. // No parent
  21. {
  22. _id: groupId2,
  23. name: 'v5_group2',
  24. description: 'description2',
  25. },
  26. {
  27. _id: groupId3,
  28. name: 'v5_group3',
  29. parent: groupId1,
  30. description: 'description3',
  31. },
  32. ]);
  33. });
  34. /*
  35. * Update UserGroup
  36. */
  37. test('Updated values should be reflected. (name, description, parent)', async() => {
  38. const userGroup = await UserGroup.findOne({ _id: groupId1 });
  39. const newGroupName = 'v5_group1_new';
  40. const newGroupDescription = 'description1_new';
  41. const newParentId = groupId2;
  42. const updatedUserGroup = await crowi.userGroupService.updateGroup(userGroup._id, newGroupName, newGroupDescription, newParentId);
  43. expect(updatedUserGroup.name).toBe(newGroupName);
  44. expect(updatedUserGroup.description).toBe(newGroupDescription);
  45. expect(updatedUserGroup.parent).toStrictEqual(newParentId);
  46. });
  47. test('Should throw an error when trying to set existing group name', async() => {
  48. const userGroup1 = await UserGroup.findOne({ _id: groupId1 });
  49. const userGroup2 = await UserGroup.findOne({ _id: groupId2 });
  50. const result = crowi.userGroupService.updateGroup(userGroup1._id, userGroup2.name);
  51. await expect(result).rejects.toThrow('The group name is already taken');
  52. });
  53. test('Parent should be null when parent group is released', async() => {
  54. const userGroup = await UserGroup.findOne({ _id: groupId3 });
  55. const updatedUserGroup = await crowi.userGroupService.updateGroup(userGroup._id, userGroup.name, userGroup.description, null);
  56. expect(updatedUserGroup.parent).toBeNull();
  57. });
  58. });