@api-client/core 0.19.11 → 0.19.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/build/src/browser.d.ts +3 -1
  2. package/build/src/browser.d.ts.map +1 -1
  3. package/build/src/browser.js +2 -0
  4. package/build/src/browser.js.map +1 -1
  5. package/build/src/index.d.ts +3 -1
  6. package/build/src/index.d.ts.map +1 -1
  7. package/build/src/index.js +2 -0
  8. package/build/src/index.js.map +1 -1
  9. package/build/src/modeling/ApiValidation.d.ts +26 -0
  10. package/build/src/modeling/ApiValidation.d.ts.map +1 -0
  11. package/build/src/modeling/ApiValidation.js +73 -0
  12. package/build/src/modeling/ApiValidation.js.map +1 -0
  13. package/build/src/modeling/DomainValidation.d.ts +10 -4
  14. package/build/src/modeling/DomainValidation.d.ts.map +1 -1
  15. package/build/src/modeling/DomainValidation.js +55 -72
  16. package/build/src/modeling/DomainValidation.js.map +1 -1
  17. package/build/src/modeling/ExposedEntity.js +4 -4
  18. package/build/src/modeling/ExposedEntity.js.map +1 -1
  19. package/build/src/modeling/validation/api_model_rules.d.ts +1 -2
  20. package/build/src/modeling/validation/api_model_rules.d.ts.map +1 -1
  21. package/build/src/modeling/validation/api_model_rules.js +3 -29
  22. package/build/src/modeling/validation/api_model_rules.js.map +1 -1
  23. package/build/src/modeling/validation/association_validation.d.ts +4 -4
  24. package/build/src/modeling/validation/association_validation.d.ts.map +1 -1
  25. package/build/src/modeling/validation/association_validation.js.map +1 -1
  26. package/build/src/modeling/validation/entity_validation.d.ts +6 -6
  27. package/build/src/modeling/validation/entity_validation.d.ts.map +1 -1
  28. package/build/src/modeling/validation/entity_validation.js.map +1 -1
  29. package/build/src/modeling/validation/property_validation.d.ts +3 -3
  30. package/build/src/modeling/validation/property_validation.d.ts.map +1 -1
  31. package/build/src/modeling/validation/property_validation.js.map +1 -1
  32. package/build/src/modeling/validation/rules.d.ts +2 -2
  33. package/build/src/modeling/validation/rules.d.ts.map +1 -1
  34. package/build/src/modeling/validation/rules.js.map +1 -1
  35. package/build/src/modeling/validation/semantic_validation.d.ts +2 -2
  36. package/build/src/modeling/validation/semantic_validation.d.ts.map +1 -1
  37. package/build/src/modeling/validation/semantic_validation.js.map +1 -1
  38. package/build/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +2 -2
  40. package/src/modeling/ApiValidation.ts +86 -0
  41. package/src/modeling/DomainValidation.ts +57 -74
  42. package/src/modeling/ExposedEntity.ts +4 -4
  43. package/src/modeling/validation/api_model_rules.ts +4 -34
  44. package/src/modeling/validation/association_validation.ts +6 -6
  45. package/src/modeling/validation/entity_validation.ts +11 -11
  46. package/src/modeling/validation/property_validation.ts +4 -4
  47. package/src/modeling/validation/rules.ts +6 -3
  48. package/src/modeling/validation/semantic_validation.ts +11 -11
  49. package/tests/unit/modeling/domain_validation.spec.ts +7 -13
  50. package/tests/unit/modeling/exposed_entity.spec.ts +5 -5
  51. package/tests/unit/modeling/exposed_entity_setter_validation.spec.ts +5 -5
  52. package/tests/unit/modeling/validation/api_model_rules.spec.ts +24 -9
@@ -43,12 +43,12 @@ test.group('ExposedEntity Path Setter Validation', () => {
43
43
 
44
44
  // Set exp1 resource path to something specific
45
45
  exp1.hasCollection = false
46
- exp1.setResourcePath('/shared/path')
46
+ exp1.setResourcePath('/shared')
47
47
 
48
48
  // Try to set exp2 resource path to same
49
49
  assert.throws(
50
- () => exp2.setResourcePath('/shared/path'),
51
- 'Resource path "/shared/path" is already in use by another root entity.'
50
+ () => exp2.setResourcePath('/shared'),
51
+ 'Resource path "/shared" is already in use by another root entity.'
52
52
  )
53
53
  })
54
54
 
@@ -67,8 +67,8 @@ test.group('ExposedEntity Path Setter Validation', () => {
67
67
  assert.equal(exp1.collectionPath, '/new-path')
68
68
 
69
69
  exp1.hasCollection = false // allow arbitrary resource path
70
- exp1.setResourcePath('/custom/resource')
71
- assert.equal(exp1.resourcePath, '/custom/resource')
70
+ exp1.setResourcePath('/custom')
71
+ assert.equal(exp1.resourcePath, '/custom')
72
72
  })
73
73
 
74
74
  test('does not validate collision for non-root entities', ({ assert }) => {
@@ -9,8 +9,8 @@ import {
9
9
  validateApiModelMetadata,
10
10
  validateExposedEntity,
11
11
  validateAction,
12
- validateApiModel,
13
12
  } from '../../../../src/modeling/validation/api_model_rules.js'
13
+ import { ApiValidation } from '../../../../src/modeling/ApiValidation.js'
14
14
  import { ExposedEntity } from '../../../../src/modeling/ExposedEntity.js'
15
15
  import { ListAction } from '../../../../src/modeling/actions/ListAction.js'
16
16
  import { DeleteAction } from '../../../../src/modeling/actions/DeleteAction.js'
@@ -235,6 +235,19 @@ test.group('ApiModel Validation', () => {
235
235
  assert.isTrue(issues.some((i) => i.code === 'EXPOSURE_INVALID_RESOURCE_PATH_FORMAT'))
236
236
  })
237
237
 
238
+ test('validateExposedEntity - path integrity (no collection)', ({ assert }) => {
239
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
240
+ const model = new ApiModel({}, domain)
241
+ const exposure = new ExposedEntity(model, {
242
+ entity: { key: 'fake' },
243
+ hasCollection: false,
244
+ })
245
+ exposure.resourcePath = '/invalid/two_segments'
246
+ exposure.actions = [new ReadAction(exposure)]
247
+ const issues = validateExposedEntity(exposure, model)
248
+ assert.isTrue(issues.some((i) => i.code === 'EXPOSURE_INVALID_RESOURCE_PATH_FORMAT'))
249
+ })
250
+
238
251
  test('validateAction - List needs pagination', ({ assert }) => {
239
252
  const model = new ApiModel()
240
253
  const exposure = new ExposedEntity(model, { entity: { key: '1' } })
@@ -305,9 +318,10 @@ test.group('ApiModel Validation', () => {
305
318
  },
306
319
  domain
307
320
  )
308
- const result = validateApiModel(model)
309
- assert.isTrue(result.isValid)
310
- assert.isEmpty(result.issues.filter((i) => i.severity === 'error'))
321
+ const validator = new ApiValidation(model)
322
+ const report = validator.validate()
323
+ assert.equal(validator.errorCount, 0)
324
+ assert.isEmpty(report.filter((i) => i.severity === 'error'))
311
325
  })
312
326
 
313
327
  test('validateApiModel - fails on multiple errors', ({ assert }) => {
@@ -315,10 +329,11 @@ test.group('ApiModel Validation', () => {
315
329
  info: { name: '' },
316
330
  })
317
331
  // Now it's missing name, missing domain, missing security context, missing contact.
318
- const result = validateApiModel(model)
319
- assert.isFalse(result.isValid)
320
- assert.isTrue(result.issues.some((i) => i.code === 'API_MISSING_NAME'))
321
- assert.isTrue(result.issues.some((i) => i.code === 'API_MISSING_DOMAIN'))
322
- assert.isTrue(result.issues.some((i) => i.code === 'API_MISSING_AUTHENTICATION'))
332
+ const validator = new ApiValidation(model)
333
+ const report = validator.validate()
334
+ assert.isAbove(validator.errorCount, 0)
335
+ assert.isTrue(report.some((i) => i.code === 'API_MISSING_NAME'))
336
+ assert.isTrue(report.some((i) => i.code === 'API_MISSING_DOMAIN'))
337
+ assert.isTrue(report.some((i) => i.code === 'API_MISSING_AUTHENTICATION'))
323
338
  })
324
339
  })