migrate-mongo-config.test.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. describe('config/migrate-mongo-config.js', () => {
  2. beforeEach(async() => {
  3. jest.resetModules();
  4. });
  5. test('throws an error when MIGRATIONS_DIR is not set', () => {
  6. const initMongooseGlobalSettingsMock = jest.fn();
  7. // mock for mongoose-utils
  8. jest.doMock('../../src/server/util/mongoose-utils', () => {
  9. return {
  10. initMongooseGlobalSettings: initMongooseGlobalSettingsMock,
  11. };
  12. });
  13. const requireConfig = () => {
  14. require('../../config/migrate-mongo-config');
  15. };
  16. expect(requireConfig).toThrow('An env var MIGRATIONS_DIR must be set.');
  17. jest.dontMock('../../src/server/util/mongoose-utils');
  18. expect(initMongooseGlobalSettingsMock).not.toHaveBeenCalled();
  19. });
  20. /* eslint-disable indent */
  21. describe.each`
  22. MONGO_URI | expectedDbName
  23. ${'mongodb://example.com/growi'} | ${'growi'}
  24. ${'mongodb://user:pass@example.com/growi'} | ${'growi'}
  25. ${'mongodb://example.com/growi?replicaSet=mySet'} | ${'growi'}
  26. `('returns', ({ MONGO_URI, expectedDbName }) => {
  27. beforeEach(async() => {
  28. process.env.MIGRATIONS_DIR = 'testdir/migrations';
  29. });
  30. test(`when 'MONGO_URI' is '${MONGO_URI}`, () => {
  31. const initMongooseGlobalSettingsMock = jest.fn();
  32. const mongoOptionsMock = jest.fn();
  33. // mock for mongoose-utils
  34. jest.doMock('../../src/server/util/mongoose-utils', () => {
  35. return {
  36. initMongooseGlobalSettings: initMongooseGlobalSettingsMock,
  37. getMongoUri: () => {
  38. return MONGO_URI;
  39. },
  40. mongoOptions: mongoOptionsMock,
  41. };
  42. });
  43. const { mongodb, migrationsDir, changelogCollectionName } = require('../../config/migrate-mongo-config');
  44. jest.dontMock('../../src/server/util/mongoose-utils');
  45. expect(initMongooseGlobalSettingsMock).toHaveBeenCalledTimes(1);
  46. expect(mongodb.url).toBe(MONGO_URI);
  47. expect(mongodb.databaseName).toBe(expectedDbName);
  48. expect(mongodb.options).toBe(mongoOptionsMock);
  49. expect(migrationsDir).toBe('testdir/migrations');
  50. expect(changelogCollectionName).toBe('migrations');
  51. });
  52. });
  53. /* eslint-enable indent */
  54. });