test: add a few test cases
This commit is contained in:
		
							parent
							
								
									bf2e315c9e
								
							
						
					
					
						commit
						204a516165
					
				@ -199,7 +199,7 @@ export class Resourcer {
 | 
			
		||||
 | 
			
		||||
  getAction(name: string, action: ActionName): Action {
 | 
			
		||||
    // 支持注册局部 action
 | 
			
		||||
    if (this.handlers.has(`${name}.${action}`)) {
 | 
			
		||||
    if (this.handlers.has(`${name}:${action}`)) {
 | 
			
		||||
      return this.getResource(name).getAction(`${name}:${action}`);
 | 
			
		||||
    }
 | 
			
		||||
    return this.getResource(name).getAction(action);
 | 
			
		||||
 | 
			
		||||
@ -22,17 +22,9 @@ describe('middleware', () => {
 | 
			
		||||
        ctx.body = [3,4];
 | 
			
		||||
        await next();
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
    console.log({
 | 
			
		||||
      username: process.env.TEST_DB_USER,
 | 
			
		||||
      password: process.env.TEST_DB_PASSWORD,
 | 
			
		||||
      database: process.env.TEST_DB_DATABASE,
 | 
			
		||||
      host: process.env.TEST_DB_HOST,
 | 
			
		||||
      port: process.env.TEST_DB_PORT as any,
 | 
			
		||||
      dialect: process.env.TEST_DB_DIALECT as any,
 | 
			
		||||
      dialectOptions: {
 | 
			
		||||
        charset: 'utf8mb4',
 | 
			
		||||
        collate: 'utf8mb4_unicode_ci',
 | 
			
		||||
      'foo2s.bar2s:list': async (ctx, next) => {
 | 
			
		||||
        ctx.body = [5,6];
 | 
			
		||||
        await next();
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
    database = new Database({
 | 
			
		||||
@ -84,4 +76,28 @@ describe('middleware', () => {
 | 
			
		||||
    response = await request(http.createServer(app.callback())).get('/api/bars/1/foo');
 | 
			
		||||
    expect(response.body).toEqual([3,4]);
 | 
			
		||||
  });
 | 
			
		||||
  it('shound work', async () => {
 | 
			
		||||
    database.table({
 | 
			
		||||
      name: 'foo2s',
 | 
			
		||||
      fields: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'belongsToMany',
 | 
			
		||||
          name: 'bar2s',
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    });
 | 
			
		||||
    database.table({
 | 
			
		||||
      name: 'bar2s',
 | 
			
		||||
      fields: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'belongsToMany',
 | 
			
		||||
          name: 'foo2s',
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
    });
 | 
			
		||||
    let response = await request(http.createServer(app.callback())).get('/api/foo2s/1/bar2s');
 | 
			
		||||
    expect(response.body).toEqual([5,6]);
 | 
			
		||||
    response = await request(http.createServer(app.callback())).get('/api/bar2s/1/foo2s');
 | 
			
		||||
    expect(response.body).toEqual([1,2]);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,6 @@ export default function middleware(options: MiddlewareOptions = {}) {
 | 
			
		||||
    paramsKey = 'params',
 | 
			
		||||
    nameRule = getNameByParams,
 | 
			
		||||
  } = options;
 | 
			
		||||
  console.log(resourcer)
 | 
			
		||||
  return async (ctx: ResourcerContext, next: () => Promise<any>) => {
 | 
			
		||||
    ctx.resourcer = resourcer;
 | 
			
		||||
    let params = parseRequest({
 | 
			
		||||
@ -34,7 +33,6 @@ export default function middleware(options: MiddlewareOptions = {}) {
 | 
			
		||||
    try {
 | 
			
		||||
      const resourceName = nameRule(params);
 | 
			
		||||
      if (!resourcer.isDefined(resourceName)) {
 | 
			
		||||
        console.log('undefined')
 | 
			
		||||
        const names = resourceName.split('.');
 | 
			
		||||
        const tableName = names.shift();
 | 
			
		||||
        if (database.isDefined(tableName)) {
 | 
			
		||||
@ -75,10 +73,9 @@ export default function middleware(options: MiddlewareOptions = {}) {
 | 
			
		||||
          return next();
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      console.log(resource);
 | 
			
		||||
      // console.log(resource);
 | 
			
		||||
      // action 需要 clone 之后再赋给 ctx
 | 
			
		||||
      ctx.action = resourcer.getAction(resourceName, params.actionName).clone();
 | 
			
		||||
      console.log(ctx.action);
 | 
			
		||||
      ctx.action.setContext(ctx);
 | 
			
		||||
      // 自带 query 处理的不太给力,需要用 qs 转一下
 | 
			
		||||
      const query = qs.parse(qs.stringify(ctx.query));
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user