Commit 90ab7156 authored by nanahira's avatar nanahira

put in fork using

parent 0c209b23
......@@ -92,7 +92,11 @@ export function DefinePlugin<T>(
}
static get using() {
const list = reflector.getArray(KoishiAddUsingList, newClass);
let list = reflector.getArray(KoishiAddUsingList, newClass);
const fork = reflector.get('KoishiFork', newClass);
if (fork) {
list = [...list, ...reflector.getArray(KoishiAddUsingList, fork)];
}
return _.uniq(list);
}
......
import { RegisterSchema, SchemaProperty, StarterPlugin } from '..';
import { Fork, RegisterSchema, SchemaProperty, StarterPlugin } from '..';
import { Assets, Bot, Cache } from 'koishi';
import { Inject, PluginName, UsingService } from '../src/decorators';
import { DefinePlugin } from '../src/register';
......@@ -11,10 +11,15 @@ class Config {
}
describe('InjectUsing', () => {
@DefinePlugin()
@UsingService('foo')
class MyFork extends StarterPlugin(Config) {}
@PluginName('foo-plugin')
@UsingService('router')
@DefinePlugin({ using: ['database'], schema: Config })
@UsingService('http')
@Fork(MyFork)
class MyPlugin extends StarterPlugin(Config) {
@Inject(true)
cache: Cache;
......@@ -31,12 +36,13 @@ describe('InjectUsing', () => {
expect(MyPlugin['Config']).toEqual(Config);
const usingList = (MyPlugin as any).using as ServiceName[];
expect(usingList).toBeInstanceOf(Array);
expect(usingList.length).toEqual(5);
expect(usingList.length).toEqual(6);
expect(usingList.includes('database')).toEqual(true);
expect(usingList.includes('assets')).toEqual(true);
expect(usingList.includes('cache')).toEqual(true);
expect(usingList.includes('router')).toEqual(true);
expect(usingList.includes('bots')).toEqual(false);
expect(usingList.includes('http')).toEqual(true);
expect(usingList.includes('foo')).toEqual(true);
});
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment