Yuki Takei 5 anni fa
parent
commit
f8b2e561f1
1 ha cambiato i file con 62 aggiunte e 0 eliminazioni
  1. 62 0
      src/test/service/config-manager.test.js

+ 62 - 0
src/test/service/config-manager.test.js

@@ -0,0 +1,62 @@
+const { getInstance } = require('../setup-crowi');
+
+describe('ConfigManager test', () => {
+  let crowi;
+  let configManager;
+
+  beforeEach(async(done) => {
+    crowi = await getInstance();
+    configManager = crowi.configManager;
+    done();
+  });
+
+
+  describe('updateConfigsInTheSameNamespace()', () => {
+
+    const configLoaderMock = {};
+    const configModelMock = {};
+
+    beforeEach(async(done) => {
+      configManager.configPubsub = {};
+
+      // prepare mocks for loadConfigs method
+      configManager.configLoader = configLoaderMock;
+
+      // prepare mocks for updateConfigsInTheSameNamespace method
+      configManager.configModel = configModelMock;
+
+      done();
+    });
+
+    test('invoke publishUpdateMessage() after loadConfigs() with correct updatedAt arg', async() => {
+      // define sleep function
+      const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
+
+      // replace methods with mock
+      configLoaderMock.load = jest.fn(async() => {
+        await sleep(500);
+      });
+      configManager.reloadConfigKeys = jest.fn();
+      configModelMock.bulkWrite = jest.fn();
+
+      let publishedUpdatedDate;
+      configManager.publishUpdateMessage = jest.fn((date) => {
+        publishedUpdatedDate = date;
+      });
+
+      expect(configManager.lastLoadedAt < new Date()).toBeTruthy();
+
+      const dummyConfig = { dummyKey: 'dummyValue' };
+      await configManager.updateConfigsInTheSameNamespace('dummyNs', dummyConfig);
+
+      expect(configModelMock.bulkWrite).toHaveBeenCalledTimes(1);
+      expect(configManager.publishUpdateMessage).toHaveBeenCalledTimes(1);
+      expect(configLoaderMock.load).toHaveBeenCalledTimes(1);
+      expect(configManager.reloadConfigKeys).toHaveBeenCalledTimes(1);
+      expect(configManager.lastLoadedAt.getTime() - publishedUpdatedDate.getTime() >= 500).toBeTruthy();
+    });
+
+  });
+
+
+});