@cratis/chronicle 6.32.1 → 6.33.0

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 (29) hide show
  1. package/dist/readModels/IReadModels.d.ts +14 -0
  2. package/dist/readModels/IReadModels.d.ts.map +1 -1
  3. package/dist/readModels/ReadModels.d.ts +6 -0
  4. package/dist/readModels/ReadModels.d.ts.map +1 -1
  5. package/dist/readModels/ReadModels.js +110 -0
  6. package/dist/readModels/ReadModels.js.map +1 -1
  7. package/dist/readModels/for_ReadModels/given/a_stored_read_model.d.ts +20 -0
  8. package/dist/readModels/for_ReadModels/given/a_stored_read_model.d.ts.map +1 -0
  9. package/dist/readModels/for_ReadModels/given/a_stored_read_model.js +79 -0
  10. package/dist/readModels/for_ReadModels/given/a_stored_read_model.js.map +1 -0
  11. package/dist/tsconfig.tsbuildinfo +1 -1
  12. package/package.json +1 -1
  13. package/readModels/IReadModels.ts +15 -0
  14. package/readModels/ReadModels.ts +118 -1
  15. package/readModels/for_ReadModels/given/a_stored_read_model.ts +62 -0
  16. package/readModels/for_ReadModels/when_releasing_a_document/with_a_default_subject.spec.ts +39 -0
  17. package/readModels/for_ReadModels/when_releasing_a_document/with_a_frozen_document.spec.ts +28 -0
  18. package/readModels/for_ReadModels/when_releasing_a_document/with_a_malformed_response.spec.ts +24 -0
  19. package/readModels/for_ReadModels/when_releasing_a_document/with_a_reported_failure.spec.ts +38 -0
  20. package/readModels/for_ReadModels/when_releasing_a_document/with_an_empty_released_value.spec.ts +19 -0
  21. package/readModels/for_ReadModels/when_releasing_a_document/with_an_unknown_subject_property.spec.ts +42 -0
  22. package/readModels/for_ReadModels/when_releasing_a_document/with_bookkeeping_fields.spec.ts +27 -0
  23. package/readModels/for_ReadModels/when_releasing_a_document/with_conflicting_or_missing_properties.spec.ts +32 -0
  24. package/readModels/for_ReadModels/when_releasing_a_document/with_empty_subject_metadata.spec.ts +56 -0
  25. package/readModels/for_ReadModels/when_releasing_a_document/with_invalid_subject_metadata.spec.ts +27 -0
  26. package/readModels/for_ReadModels/when_releasing_a_document/with_mixed_subjects.spec.ts +38 -0
  27. package/readModels/for_ReadModels/when_releasing_a_document/with_property_subjects.spec.ts +52 -0
  28. package/readModels/for_ReadModels/when_releasing_a_document/with_whitespace_subjects.spec.ts +24 -0
  29. package/readModels/for_ReadModels/when_releasing_a_document/without_subjects.spec.ts +24 -0
@@ -0,0 +1,24 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { beforeEach, chai, describe, it } from 'vitest';
5
+ import { AccountDocument, a_stored_read_model } from '../given/a_stored_read_model.js';
6
+
7
+ chai.should();
8
+
9
+ describe.each([
10
+ { __subject: ' \t' },
11
+ { __subject: 'owner', __subjects: { name: ' \t' } }
12
+ ])('when releasing a document with a whitespace-only subject %j', metadata => {
13
+ let context: a_stored_read_model;
14
+ let result: Record<string, unknown>;
15
+
16
+ beforeEach(async () => {
17
+ context = new a_stored_read_model();
18
+ context.release.mockResolvedValue({ HasError: false, Error: '', Payload: JSON.stringify({ name: 'released name' }) });
19
+ result = await context.readModels.releaseDocument(AccountDocument, { name: 'encrypted name', ...metadata });
20
+ });
21
+
22
+ it('should preserve the exact subject in the release request', () => context.requestFor(' \t').Subject.should.equal(' \t'));
23
+ it('should release the property', () => result.should.deep.equal({ name: 'released name' }));
24
+ });
@@ -0,0 +1,24 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { beforeEach, chai, describe, it } from 'vitest';
5
+ import { AccountDocument, a_stored_read_model } from '../given/a_stored_read_model.js';
6
+
7
+ chai.should();
8
+
9
+ describe('when releasing a document without subjects', () => {
10
+ let context: a_stored_read_model;
11
+ let document: Record<string, unknown>;
12
+ let result: Record<string, unknown>;
13
+
14
+ beforeEach(async () => {
15
+ context = new a_stored_read_model();
16
+ document = { id: 'account', name: 'unchanged', contact: { phone: 'unchanged phone' } };
17
+ result = await context.readModels.releaseDocument(AccountDocument, document);
18
+ });
19
+
20
+ it('should leave data values unchanged', () => result.should.deep.equal(document));
21
+ it('should not infer a subject from id or subject decorators', () => context.release.mock.calls.should.have.lengthOf(0));
22
+ it('should return a copy', () => result.should.not.equal(document));
23
+ it('should not share unreleased subtrees with the input', () => result.contact!.should.not.equal(document.contact));
24
+ });