|
1 | 1 | const assert = require('assert') |
2 | | -const { Ok, usecase, step, Err } = require('@herbsjs/herbs') |
| 2 | +const { entity, field, usecase, step, request, Ok, Err } = require('@herbsjs/herbs') |
3 | 3 | const defaultResolver = require('../src/defaultResolver') |
4 | 4 |
|
5 | 5 | describe('GraphQL - Default Resolver', () => { |
@@ -43,6 +43,37 @@ describe('GraphQL - Default Resolver', () => { |
43 | 43 | assert.deepStrictEqual(ret, { id: 1 }) |
44 | 44 | }) |
45 | 45 |
|
| 46 | + it('should resolve a mutation with complex request and run a use case', async () => { |
| 47 | + // Given |
| 48 | + const AnEntity = entity('An Entity', { |
| 49 | + id: field(Number), |
| 50 | + field1: field(String) |
| 51 | + }) |
| 52 | + |
| 53 | + const AnComplexEntity = entity('An Complex Entity', { |
| 54 | + id: field(Number), |
| 55 | + field1: field(String), |
| 56 | + entity1: field(AnEntity) |
| 57 | + }) |
| 58 | + |
| 59 | + const AUseCase = () => |
| 60 | + usecase('Use Case X', { |
| 61 | + request: request.from(AnComplexEntity), |
| 62 | + response: Number, |
| 63 | + authorize: async () => Ok(), |
| 64 | + 'Step 1': step((ctx) => { return Ok(ctx.ret = ctx.req) } |
| 65 | + ) |
| 66 | + }) |
| 67 | + |
| 68 | + const resolver = defaultResolver(AUseCase) |
| 69 | + |
| 70 | + // When |
| 71 | + const ret = await resolver(null, { input: { id: 1, field1: 'xyz', field2: 123, entity1: { id: 1 } } }, { user: {} }, { operation: { operation: 'mutation' } }) |
| 72 | + |
| 73 | + // Then |
| 74 | + assert.deepStrictEqual(JSON.parse(JSON.stringify(ret)), { id: 1, field1: 'xyz', entity1: { id: 1 } }) |
| 75 | + }) |
| 76 | + |
46 | 77 | it('should not run a use case if not autorized and throw a ForbiddenError', async () => { |
47 | 78 | // Given |
48 | 79 | const AUseCase = { |
|
0 commit comments