Yuki Takei 2 лет назад
Родитель
Сommit
8d8b53d4dc
1 измененных файлов с 72 добавлено и 2 удалено
  1. 72 2
      apps/app/src/features/growi-plugin/server/models/growi-plugin.integ.ts

+ 72 - 2
apps/app/src/features/growi-plugin/server/models/growi-plugin.integ.ts

@@ -57,7 +57,11 @@ describe('GrowiPlugin find methods', () => {
     ]);
     ]);
   });
   });
 
 
-  describe('.findEnabledPlugins', () => {
+  afterAll(async() => {
+    await GrowiPlugin.deleteMany({});
+  });
+
+  describe.concurrent('.findEnabledPlugins', () => {
     it('shoud returns documents which isEnabled is true', async() => {
     it('shoud returns documents which isEnabled is true', async() => {
       // when
       // when
       const results = await GrowiPlugin.findEnabledPlugins();
       const results = await GrowiPlugin.findEnabledPlugins();
@@ -71,7 +75,7 @@ describe('GrowiPlugin find methods', () => {
     });
     });
   });
   });
 
 
-  describe('.findEnabledPluginsByType', () => {
+  describe.concurrent('.findEnabledPluginsByType', () => {
     it("shoud returns documents which type is 'template'", async() => {
     it("shoud returns documents which type is 'template'", async() => {
       // when
       // when
       const results = await GrowiPlugin.findEnabledPluginsByType(GrowiPluginType.Template);
       const results = await GrowiPlugin.findEnabledPluginsByType(GrowiPluginType.Template);
@@ -85,3 +89,69 @@ describe('GrowiPlugin find methods', () => {
   });
   });
 
 
 });
 });
+
+
+describe('GrowiPlugin activate/deactivate', () => {
+
+  beforeAll(async() => {
+    await GrowiPlugin.insertMany([
+      {
+        isEnabled: false,
+        installedPath: 'weseek/growi-plugin-example1',
+        organizationName: 'weseek',
+        origin: {
+          url: 'https://github.com/weseek/growi-plugin-example1',
+        },
+        meta: {
+          name: '@growi/growi-plugin-example1',
+          types: [GrowiPluginType.Script],
+        },
+      },
+    ]);
+  });
+
+  afterAll(async() => {
+    await GrowiPlugin.deleteMany({});
+  });
+
+  describe('.activatePlugin', () => {
+    it('shoud update the property "isEnabled" to true', async() => {
+      // setup
+      const plugin = await GrowiPlugin.findOne({});
+      assert(plugin != null);
+
+      expect(plugin.isEnabled).toBeFalsy(); // isEnabled: false
+
+      // when
+      const result = await GrowiPlugin.activatePlugin(plugin._id);
+      const pluginAfterActivated = await GrowiPlugin.findOne({ _id: plugin._id });
+
+      // then
+      expect(result).toEqual('@growi/growi-plugin-example1'); // equals to meta.name
+      expect(pluginAfterActivated).not.toBeNull();
+      assert(pluginAfterActivated != null);
+      expect(pluginAfterActivated.isEnabled).toBeTruthy(); // isEnabled: true
+    });
+  });
+
+  describe('.deactivatePlugin', () => {
+    it('shoud update the property "isEnabled" to true', async() => {
+      // setup
+      const plugin = await GrowiPlugin.findOne({});
+      assert(plugin != null);
+
+      expect(plugin.isEnabled).toBeTruthy(); // isEnabled: true
+
+      // when
+      const result = await GrowiPlugin.deactivatePlugin(plugin._id);
+      const pluginAfterActivated = await GrowiPlugin.findOne({ _id: plugin._id });
+
+      // then
+      expect(result).toEqual('@growi/growi-plugin-example1'); // equals to meta.name
+      expect(pluginAfterActivated).not.toBeNull();
+      assert(pluginAfterActivated != null);
+      expect(pluginAfterActivated.isEnabled).toBeFalsy(); // isEnabled: false
+    });
+  });
+
+});