@dashevo/wasm-dpp 0.23.0-dev.10
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.
- package/.babelrc +5 -0
- package/.editorconfig +13 -0
- package/.eslintignore +1 -0
- package/.eslintrc +15 -0
- package/.mocharc.yml +4 -0
- package/CHANGELOG.md +397 -0
- package/LICENSE +20 -0
- package/README.md +37 -0
- package/karma.conf.js +53 -0
- package/package.json +107 -0
- package/test/.eslintrc +12 -0
- package/test/integration/DashPlatformProtocol.spec.js +53 -0
- package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +148 -0
- package/test/integration/dataContract/DataContractFacade.spec.js +84 -0
- package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +357 -0
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +444 -0
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +2191 -0
- package/test/integration/document/Document.spec.js +90 -0
- package/test/integration/document/DocumentFacade.spec.js +155 -0
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +83 -0
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +1146 -0
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +294 -0
- package/test/integration/document/validation/validateDocumentFactory.spec.js +447 -0
- package/test/integration/error/consensus/createConsensusError.spec.js +21 -0
- package/test/integration/identity/IdentityFacade.spec.js +187 -0
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +422 -0
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +361 -0
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +595 -0
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +299 -0
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +66 -0
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +415 -0
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +134 -0
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +401 -0
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +205 -0
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +127 -0
- package/test/integration/identity/validation/validateIdentityFactory.spec.js +370 -0
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +497 -0
- package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +507 -0
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +418 -0
- package/test/integration/stateTransition/calculateStateTransitionFee.spec.js +35 -0
- package/test/integration/util/generateEntropy.spec.js +17 -0
- package/test/integration/util/serializer.spec.js +24 -0
- package/test/unit/DashPlatformProtocol.spec.js +79 -0
- package/test/unit/Identifier.spec.js +123 -0
- package/test/unit/Metadata.spec.js +37 -0
- package/test/unit/dataContract/DataContract.spec.js +407 -0
- package/test/unit/dataContract/DataContractFactory.spec.js +178 -0
- package/test/unit/dataContract/createDataContract.spec.js +57 -0
- package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +46 -0
- package/test/unit/dataContract/generateDataContractId.spec.js +19 -0
- package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +103 -0
- package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +84 -0
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +160 -0
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +48 -0
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +85 -0
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +158 -0
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +47 -0
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +121 -0
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +111 -0
- package/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js +93 -0
- package/test/unit/dataContract/validation/validateDataContractPatternsFactory.spec.js +64 -0
- package/test/unit/dataTrigger/DataTrigger.spec.js +132 -0
- package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +29 -0
- package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +109 -0
- package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +382 -0
- package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +101 -0
- package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +113 -0
- package/test/unit/dataTrigger/rejectDataTrigger.spec.js +51 -0
- package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +200 -0
- package/test/unit/decodeProtocolEntityFactory.spec.js +75 -0
- package/test/unit/document/Document.spec.js +444 -0
- package/test/unit/document/DocumentFactory.spec.js +376 -0
- package/test/unit/document/errors/InvalidDocumentError.spec.js +46 -0
- package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +66 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +168 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +171 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +25 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +31 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +122 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +75 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +128 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +811 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +279 -0
- package/test/unit/errors/consensus/codes.spec.js +102 -0
- package/test/unit/identity/Identity.spec.js +243 -0
- package/test/unit/identity/IdentityFactory.spec.js +274 -0
- package/test/unit/identity/IdentityPublicKey.spec.js +273 -0
- package/test/unit/identity/creditsConverter.spec.js +34 -0
- package/test/unit/identity/errors/InvalidIdentityError.spec.js +46 -0
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +184 -0
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +90 -0
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +71 -0
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +137 -0
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +108 -0
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +22 -0
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +219 -0
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +149 -0
- package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +21 -0
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +36 -0
- package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +47 -0
- package/test/unit/stateTransition/StateTransitionFactory.spec.js +160 -0
- package/test/unit/stateTransition/createStateTransitionFactory.spec.js +72 -0
- package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +51 -0
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +138 -0
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +372 -0
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +339 -0
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +86 -0
- package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +89 -0
- package/test/unit/version/validateProtocolVersionFactory.spec.js +80 -0
- package/webpack.config.js +49 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
const bs58 = require('bs58');
|
|
2
|
+
const AbstractDocumentTransition = require('../../../../../../../lib/document/stateTransition/DocumentsBatchTransition/documentTransition/AbstractDocumentTransition');
|
|
3
|
+
|
|
4
|
+
const generateRandomIdentifier = require('../../../../../../../lib/test/utils/generateRandomIdentifier');
|
|
5
|
+
|
|
6
|
+
const DataTrigger = require('../../../../../../../lib/dataTrigger/DataTrigger');
|
|
7
|
+
const DataTriggerExecutionResult = require('../../../../../../../lib/dataTrigger/DataTriggerExecutionResult');
|
|
8
|
+
const DataTriggerExecutionContext = require('../../../../../../../lib/dataTrigger/DataTriggerExecutionContext');
|
|
9
|
+
const getDpnsContractFixture = require('../../../../../../../lib/test/fixtures/getDpnsContractFixture');
|
|
10
|
+
const dpnsDocumentFixture = require('../../../../../../../lib/test/fixtures/getDpnsDocumentFixture');
|
|
11
|
+
const getDocumentsFixture = require('../../../../../../../lib/test/fixtures/getDocumentsFixture');
|
|
12
|
+
const getDocumentTransitionsFixture = require('../../../../../../../lib/test/fixtures/getDocumentTransitionsFixture');
|
|
13
|
+
const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture');
|
|
14
|
+
|
|
15
|
+
const dpnsCreateDomainDataTrigger = require('../../../../../../../lib/dataTrigger/dpnsTriggers/createDomainDataTrigger');
|
|
16
|
+
const dpnsDeleteDomainDataTrigger = require('../../../../../../../lib/dataTrigger/dpnsTriggers/createDomainDataTrigger');
|
|
17
|
+
const dpnsUpdateDomainDataTrigger = require('../../../../../../../lib/dataTrigger/dpnsTriggers/createDomainDataTrigger');
|
|
18
|
+
|
|
19
|
+
const executeDataTriggersFactory = require('../../../../../../../lib/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory');
|
|
20
|
+
|
|
21
|
+
const Identifier = require('../../../../../../../lib/identifier/Identifier');
|
|
22
|
+
|
|
23
|
+
describe('executeDataTriggersFactory', () => {
|
|
24
|
+
let childDocument;
|
|
25
|
+
let contractMock;
|
|
26
|
+
|
|
27
|
+
let dpnsTriggers;
|
|
28
|
+
|
|
29
|
+
let domainDocumentType;
|
|
30
|
+
|
|
31
|
+
let stateTransitionHeaderMock;
|
|
32
|
+
let context;
|
|
33
|
+
let documentTransitions;
|
|
34
|
+
let dpnsCreateDomainDataTriggerMock;
|
|
35
|
+
let dpnsUpdateDomainDataTriggerMock;
|
|
36
|
+
let dpnsDeleteDomainDataTriggerMock;
|
|
37
|
+
let getDataTriggersMock;
|
|
38
|
+
|
|
39
|
+
let executeDataTriggers;
|
|
40
|
+
let dataContract;
|
|
41
|
+
|
|
42
|
+
beforeEach(function beforeEach() {
|
|
43
|
+
dataContract = getDataContractFixture();
|
|
44
|
+
|
|
45
|
+
domainDocumentType = 'domain';
|
|
46
|
+
|
|
47
|
+
dpnsTriggers = [
|
|
48
|
+
dpnsCreateDomainDataTrigger,
|
|
49
|
+
dpnsDeleteDomainDataTrigger,
|
|
50
|
+
dpnsUpdateDomainDataTrigger,
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
contractMock = getDpnsContractFixture();
|
|
54
|
+
|
|
55
|
+
childDocument = dpnsDocumentFixture.getChildDocumentFixture();
|
|
56
|
+
|
|
57
|
+
dpnsCreateDomainDataTriggerMock = { execute: this.sinonSandbox.stub() };
|
|
58
|
+
dpnsUpdateDomainDataTriggerMock = { execute: this.sinonSandbox.stub() };
|
|
59
|
+
dpnsDeleteDomainDataTriggerMock = { execute: this.sinonSandbox.stub() };
|
|
60
|
+
|
|
61
|
+
dpnsCreateDomainDataTriggerMock
|
|
62
|
+
.execute.resolves(new DataTriggerExecutionResult());
|
|
63
|
+
|
|
64
|
+
dpnsUpdateDomainDataTriggerMock
|
|
65
|
+
.execute.resolves(new DataTriggerExecutionResult());
|
|
66
|
+
|
|
67
|
+
dpnsDeleteDomainDataTriggerMock
|
|
68
|
+
.execute.resolves(new DataTriggerExecutionResult());
|
|
69
|
+
|
|
70
|
+
const ownerId = bs58.decode('5zcXZpTLWFwZjKjq3ME5KVavtZa9YUaZESVzrndehBhq');
|
|
71
|
+
|
|
72
|
+
context = new DataTriggerExecutionContext(
|
|
73
|
+
null, ownerId, contractMock,
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
documentTransitions = getDocumentTransitionsFixture({
|
|
77
|
+
create: [childDocument],
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
getDataTriggersMock = this.sinonSandbox.stub();
|
|
81
|
+
|
|
82
|
+
getDataTriggersMock.returns([
|
|
83
|
+
dpnsCreateDomainDataTriggerMock,
|
|
84
|
+
]);
|
|
85
|
+
|
|
86
|
+
executeDataTriggers = executeDataTriggersFactory(getDataTriggersMock);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('should return an array of DataTriggerExecutionResult', async () => {
|
|
90
|
+
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
91
|
+
documentTransitions, context,
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
expect(dataTriggerExecutionResults).to.have.a.lengthOf(1);
|
|
95
|
+
|
|
96
|
+
const [result] = dataTriggerExecutionResults;
|
|
97
|
+
|
|
98
|
+
expect(result).to.be.an.instanceOf(DataTriggerExecutionResult);
|
|
99
|
+
expect(result.getErrors()).to.have.a.lengthOf(0);
|
|
100
|
+
expect(result.isOk()).to.be.true();
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it('should execute multiple data triggers if there is more than one data trigger for'
|
|
104
|
+
+ ' the same document and action in the contract', async () => {
|
|
105
|
+
getDataTriggersMock.returns([
|
|
106
|
+
dpnsCreateDomainDataTriggerMock,
|
|
107
|
+
dpnsCreateDomainDataTriggerMock,
|
|
108
|
+
dpnsCreateDomainDataTriggerMock,
|
|
109
|
+
]);
|
|
110
|
+
|
|
111
|
+
const expectedTriggersCount = 3;
|
|
112
|
+
expect(dpnsTriggers.length).to.equal(expectedTriggersCount);
|
|
113
|
+
|
|
114
|
+
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
115
|
+
documentTransitions, context,
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
expect(dataTriggerExecutionResults).to.have.a.lengthOf(expectedTriggersCount);
|
|
119
|
+
|
|
120
|
+
dataTriggerExecutionResults.forEach((dataTriggerExecutionResult) => {
|
|
121
|
+
expect(dataTriggerExecutionResult.getErrors()).to.have.a.lengthOf(0);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it('should return a result for each passed document with success or error', async function test() {
|
|
126
|
+
const doc1 = getDocumentsFixture(dataContract)[0];
|
|
127
|
+
const doc2 = getDocumentsFixture(dataContract)[1];
|
|
128
|
+
|
|
129
|
+
documentTransitions = getDocumentTransitionsFixture({
|
|
130
|
+
create: [doc1, doc1],
|
|
131
|
+
replace: [doc2],
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
const passingExecutionResult = new DataTriggerExecutionResult();
|
|
135
|
+
const executionResultWithErrors = new DataTriggerExecutionResult();
|
|
136
|
+
|
|
137
|
+
executionResultWithErrors.addError(new Error('Trigger error'));
|
|
138
|
+
|
|
139
|
+
const passingTriggerMockFunction = this.sinonSandbox.stub()
|
|
140
|
+
.resolves(passingExecutionResult);
|
|
141
|
+
const throwingTriggerMockFunction = this.sinonSandbox.stub()
|
|
142
|
+
.resolves(executionResultWithErrors);
|
|
143
|
+
|
|
144
|
+
const passingDataTriggerMock = new DataTrigger(
|
|
145
|
+
contractMock.getId(),
|
|
146
|
+
doc1.getType(),
|
|
147
|
+
AbstractDocumentTransition.ACTIONS.CREATE,
|
|
148
|
+
passingTriggerMockFunction,
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
const throwingDataTriggerMock = new DataTrigger(
|
|
152
|
+
contractMock.getId(),
|
|
153
|
+
doc2.getType(),
|
|
154
|
+
AbstractDocumentTransition.ACTIONS.REPLACE,
|
|
155
|
+
throwingTriggerMockFunction,
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
getDataTriggersMock
|
|
159
|
+
.withArgs(contractMock.getId(), doc1.getType(), AbstractDocumentTransition.ACTIONS.CREATE)
|
|
160
|
+
.returns([passingDataTriggerMock]);
|
|
161
|
+
|
|
162
|
+
getDataTriggersMock
|
|
163
|
+
.withArgs(contractMock.getId(), doc2.getType(), AbstractDocumentTransition.ACTIONS.REPLACE)
|
|
164
|
+
.returns([throwingDataTriggerMock]);
|
|
165
|
+
|
|
166
|
+
context = new DataTriggerExecutionContext(
|
|
167
|
+
null, generateRandomIdentifier(), contractMock, stateTransitionHeaderMock,
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
171
|
+
documentTransitions, context,
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
const expectedResultsCount = 3;
|
|
175
|
+
|
|
176
|
+
expect(documentTransitions.length).to.equal(expectedResultsCount);
|
|
177
|
+
expect(dataTriggerExecutionResults.length).to.equal(expectedResultsCount);
|
|
178
|
+
|
|
179
|
+
const passingResults = dataTriggerExecutionResults.filter((result) => result.isOk());
|
|
180
|
+
const failingResults = dataTriggerExecutionResults.filter((result) => !result.isOk());
|
|
181
|
+
|
|
182
|
+
expect(passingResults).to.have.a.lengthOf(2);
|
|
183
|
+
expect(failingResults).to.have.a.lengthOf(1);
|
|
184
|
+
|
|
185
|
+
expect(failingResults[0].getErrors()).to.have.a.lengthOf(1);
|
|
186
|
+
expect(failingResults[0].getErrors()[0].message).to
|
|
187
|
+
.equal('Trigger error');
|
|
188
|
+
|
|
189
|
+
expect(passingTriggerMockFunction.callCount).to.equal(2);
|
|
190
|
+
expect(throwingTriggerMockFunction.callCount).to.equal(1);
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
it("should not call any triggers if documents have no triggers associated with it's type or action", async () => {
|
|
194
|
+
getDataTriggersMock
|
|
195
|
+
.withArgs(
|
|
196
|
+
contractMock.getId(),
|
|
197
|
+
domainDocumentType,
|
|
198
|
+
AbstractDocumentTransition.ACTIONS.CREATE,
|
|
199
|
+
)
|
|
200
|
+
.returns([])
|
|
201
|
+
.withArgs(
|
|
202
|
+
contractMock.getId(),
|
|
203
|
+
domainDocumentType,
|
|
204
|
+
AbstractDocumentTransition.ACTIONS.DELETE,
|
|
205
|
+
)
|
|
206
|
+
.returns([dpnsDeleteDomainDataTriggerMock])
|
|
207
|
+
.withArgs(
|
|
208
|
+
contractMock.getId(),
|
|
209
|
+
domainDocumentType,
|
|
210
|
+
AbstractDocumentTransition.ACTIONS.REPLACE,
|
|
211
|
+
)
|
|
212
|
+
.returns([dpnsUpdateDomainDataTriggerMock]);
|
|
213
|
+
|
|
214
|
+
await executeDataTriggers(documentTransitions, context);
|
|
215
|
+
|
|
216
|
+
expect(dpnsDeleteDomainDataTriggerMock.execute).not.to.be.called();
|
|
217
|
+
expect(dpnsUpdateDomainDataTriggerMock.execute).not.to.be.called();
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
it("should call only one trigger if there's one document with a trigger and one without", async () => {
|
|
221
|
+
const dataContractId = getDataContractFixture().getId();
|
|
222
|
+
childDocument.dataContractId = dataContractId;
|
|
223
|
+
childDocument.dataContract.id = dataContractId;
|
|
224
|
+
childDocument.ownerId = Identifier.from(
|
|
225
|
+
getDocumentsFixture.ownerId,
|
|
226
|
+
);
|
|
227
|
+
|
|
228
|
+
documentTransitions = getDocumentTransitionsFixture({
|
|
229
|
+
create: [childDocument].concat(getDocumentsFixture(dataContract)),
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
getDataTriggersMock.resetBehavior();
|
|
233
|
+
getDataTriggersMock
|
|
234
|
+
.returns([])
|
|
235
|
+
.withArgs(
|
|
236
|
+
contractMock.getId(),
|
|
237
|
+
domainDocumentType,
|
|
238
|
+
AbstractDocumentTransition.ACTIONS.CREATE,
|
|
239
|
+
)
|
|
240
|
+
.returns([dpnsCreateDomainDataTriggerMock])
|
|
241
|
+
.withArgs(
|
|
242
|
+
contractMock.getId(),
|
|
243
|
+
domainDocumentType,
|
|
244
|
+
AbstractDocumentTransition.ACTIONS.DELETE,
|
|
245
|
+
)
|
|
246
|
+
.returns([dpnsDeleteDomainDataTriggerMock])
|
|
247
|
+
.withArgs(
|
|
248
|
+
contractMock.getId(),
|
|
249
|
+
domainDocumentType,
|
|
250
|
+
AbstractDocumentTransition.ACTIONS.REPLACE,
|
|
251
|
+
)
|
|
252
|
+
.returns([dpnsUpdateDomainDataTriggerMock]);
|
|
253
|
+
|
|
254
|
+
await executeDataTriggers(documentTransitions, context);
|
|
255
|
+
|
|
256
|
+
expect(dpnsCreateDomainDataTriggerMock.execute).to.be.calledOnce();
|
|
257
|
+
expect(dpnsDeleteDomainDataTriggerMock.execute).not.to.be.called();
|
|
258
|
+
expect(dpnsUpdateDomainDataTriggerMock.execute).not.to.be.called();
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
it("should not call any triggers if there's no triggers in the contract", async () => {
|
|
262
|
+
documentTransitions = getDocumentTransitionsFixture({
|
|
263
|
+
create: getDocumentsFixture(dataContract),
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
getDataTriggersMock.resetBehavior();
|
|
267
|
+
getDataTriggersMock
|
|
268
|
+
.returns([])
|
|
269
|
+
.withArgs(
|
|
270
|
+
contractMock.getId(),
|
|
271
|
+
domainDocumentType,
|
|
272
|
+
AbstractDocumentTransition.ACTIONS.CREATE,
|
|
273
|
+
)
|
|
274
|
+
.returns([dpnsCreateDomainDataTriggerMock])
|
|
275
|
+
.withArgs(
|
|
276
|
+
contractMock.getId(),
|
|
277
|
+
domainDocumentType,
|
|
278
|
+
AbstractDocumentTransition.ACTIONS.DELETE,
|
|
279
|
+
)
|
|
280
|
+
.returns([dpnsDeleteDomainDataTriggerMock])
|
|
281
|
+
.withArgs(
|
|
282
|
+
contractMock.getId(),
|
|
283
|
+
domainDocumentType,
|
|
284
|
+
AbstractDocumentTransition.ACTIONS.REPLACE,
|
|
285
|
+
)
|
|
286
|
+
.returns([dpnsUpdateDomainDataTriggerMock]);
|
|
287
|
+
|
|
288
|
+
await executeDataTriggers(documentTransitions, context);
|
|
289
|
+
|
|
290
|
+
expect(dpnsCreateDomainDataTriggerMock.execute).not.to.be.called();
|
|
291
|
+
expect(dpnsDeleteDomainDataTriggerMock.execute).not.to.be.called();
|
|
292
|
+
expect(dpnsUpdateDomainDataTriggerMock.execute).not.to.be.called();
|
|
293
|
+
});
|
|
294
|
+
});
|