@rosen-bridge/abstract-extractor 0.3.1 → 1.0.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 (49) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/ergo/AbstractErgoExtractor.d.ts +30 -5
  3. package/dist/ergo/AbstractErgoExtractor.d.ts.map +1 -1
  4. package/dist/ergo/AbstractErgoExtractor.js +72 -7
  5. package/dist/ergo/AbstractErgoExtractorAction.d.ts +37 -10
  6. package/dist/ergo/AbstractErgoExtractorAction.d.ts.map +1 -1
  7. package/dist/ergo/AbstractErgoExtractorAction.js +134 -1
  8. package/dist/ergo/AbstractErgoExtractorEntity.d.ts +11 -0
  9. package/dist/ergo/AbstractErgoExtractorEntity.d.ts.map +1 -0
  10. package/dist/ergo/AbstractErgoExtractorEntity.js +57 -0
  11. package/dist/ergo/index.d.ts +1 -0
  12. package/dist/ergo/index.d.ts.map +1 -1
  13. package/dist/ergo/index.js +2 -1
  14. package/dist/ergo/initializable/AbstractInitializable.d.ts +4 -3
  15. package/dist/ergo/initializable/AbstractInitializable.d.ts.map +1 -1
  16. package/dist/ergo/initializable/AbstractInitializable.js +9 -5
  17. package/dist/ergo/initializable/AbstractInitializableAction.d.ts +7 -2
  18. package/dist/ergo/initializable/AbstractInitializableAction.d.ts.map +1 -1
  19. package/dist/ergo/initializable/AbstractInitializableAction.js +11 -1
  20. package/dist/ergo/interfaces.d.ts +20 -1
  21. package/dist/ergo/interfaces.d.ts.map +1 -1
  22. package/dist/ergo/interfaces.js +8 -1
  23. package/lib/ergo/AbstractErgoExtractor.ts +105 -12
  24. package/lib/ergo/AbstractErgoExtractorAction.ts +185 -18
  25. package/lib/ergo/AbstractErgoExtractorEntity.ts +28 -0
  26. package/lib/ergo/index.ts +1 -0
  27. package/lib/ergo/initializable/AbstractInitializable.ts +22 -9
  28. package/lib/ergo/initializable/AbstractInitializableAction.ts +19 -3
  29. package/lib/ergo/interfaces.ts +24 -1
  30. package/package.json +6 -2
  31. package/tests/{AbstractExtractor.mock.ts → AbstractErgoExtractor.mock.ts} +11 -4
  32. package/tests/AbstractErgoExtractor.spec.ts +281 -0
  33. package/tests/AbstractErgoExtractorAction.mock.ts +45 -0
  34. package/tests/AbstractErgoExtractorAction.spec.ts +269 -0
  35. package/tests/initializable/AbstractInitializable.mock.ts +14 -3
  36. package/tests/initializable/AbstractInitializable.spec.ts +37 -5
  37. package/tests/initializable/AbstractInitializableAction.mock.ts +45 -0
  38. package/tests/initializable/AbstractInitializableAction.spec.ts +65 -0
  39. package/tests/testData.ts +38 -0
  40. package/tests/testUtils.ts +22 -0
  41. package/tsconfig.build.tsbuildinfo +1 -1
  42. package/dist/ergo/initializable/InitializableByAddress.d.ts +0 -19
  43. package/dist/ergo/initializable/InitializableByAddress.d.ts.map +0 -1
  44. package/dist/ergo/initializable/InitializableByAddress.js +0 -30
  45. package/dist/ergo/initializable/InitializableByToken.d.ts +0 -19
  46. package/dist/ergo/initializable/InitializableByToken.d.ts.map +0 -1
  47. package/dist/ergo/initializable/InitializableByToken.js +0 -30
  48. package/dist/tsconfig.tsbuildinfo +0 -1
  49. package/tests/AbstractExtractor.spec.ts +0 -102
@@ -1,102 +0,0 @@
1
- import { V1 } from '@rosen-clients/ergo-explorer';
2
- import { describe, it, expect, vitest } from 'vitest';
3
-
4
- import {
5
- OutputBox,
6
- ErgoExtractedData,
7
- AbstractErgoExtractorAction,
8
- } from '../lib';
9
- import { block, extractedData, tx } from './testData';
10
- import { MockedErgoExtractor } from './AbstractExtractor.mock';
11
-
12
- describe('AbstractErgoExtractor', () => {
13
- describe('processTransactions', () => {
14
- /**
15
- * @target processTransactions should initialize extractor with specified id and insert status into db
16
- * @dependencies
17
- * @scenario
18
- * - mock extractor
19
- * - mock `hasData` to return true for one box
20
- * - spy `extractBoxData` and `insertBoxes`
21
- * - run test (call `processTransactions`)
22
- * @expected
23
- * - to call `extractBoxData` for the specific box
24
- * - to insert the extracted box to database
25
- */
26
- it('should process boxes with data and insert data into database', async () => {
27
- const extractor = new MockedErgoExtractor();
28
- extractor.hasData = (box: V1.OutputInfo | OutputBox) => {
29
- if (box.boxId == tx.outputs[0].boxId) return true;
30
- return false;
31
- };
32
- const extractSpy = vitest.fn().mockReturnValue(extractedData);
33
- extractor.extractBoxData = extractSpy;
34
- const insertSpy = vitest.fn();
35
- extractor['actions'] = {
36
- insertBoxes: insertSpy,
37
- } as unknown as AbstractErgoExtractorAction<ErgoExtractedData>;
38
- extractor.processTransactions([tx], block);
39
-
40
- expect(extractSpy).toBeCalledTimes(1);
41
- expect(extractSpy).toBeCalledWith(tx.outputs[0]);
42
- expect(insertSpy).toBeCalledWith([extractedData], block, 'Test');
43
- });
44
-
45
- /**
46
- * @target processTransactions should extract spend info of transaction spend related boxes
47
- * @dependencies
48
- * @scenario
49
- * - mock extractor
50
- * - spy `extractBoxData`, `insertBoxes` and `spendBoxes`
51
- * - run test (call `processTransactions`)
52
- * @expected
53
- * - not to call `extractBoxData` and `insertBoxes` when there is not any box with data
54
- * - to extractor spend info of input boxes and call `spendBoxes`
55
- */
56
- it('should extract spend info of transaction spend related boxes', async () => {
57
- const extractor = new MockedErgoExtractor();
58
- const extractSpy = vitest.fn();
59
- extractor.extractBoxData = extractSpy;
60
- const insertSpy = vitest.fn();
61
- const spendSpy = vitest.fn();
62
- extractor['actions'] = {
63
- insertBoxes: insertSpy,
64
- spendBoxes: spendSpy,
65
- } as unknown as AbstractErgoExtractorAction<ErgoExtractedData>;
66
- extractor.processTransactions([tx], block);
67
-
68
- expect(extractSpy).not.toBeCalled();
69
- expect(insertSpy).not.toBeCalled();
70
- expect(spendSpy).toBeCalledWith(
71
- [
72
- { boxId: tx.inputs[0].boxId, txId: tx.id, index: 1 },
73
- { boxId: tx.inputs[1].boxId, txId: tx.id, index: 2 },
74
- ],
75
- block,
76
- 'Test'
77
- );
78
- });
79
- });
80
-
81
- describe('forkBlock', () => {
82
- /**
83
- * @target forkBlock should remove all data extracted from the specified block
84
- * @dependencies
85
- * @scenario
86
- * - mock extractor
87
- * - spy `deleteBlockBoxes`
88
- * - run test (call `forkBlock`)
89
- * @expected
90
- * - to call `deleteBlockBoxes` for the specific box
91
- */
92
- it('should remove all data extracted from the specified block', async () => {
93
- const extractor = new MockedErgoExtractor();
94
- const removeSpy = vitest.fn();
95
- extractor['actions'] = {
96
- deleteBlockBoxes: removeSpy,
97
- } as unknown as AbstractErgoExtractorAction<ErgoExtractedData>;
98
- extractor.forkBlock(block.hash);
99
- expect(removeSpy).toBeCalledWith(block.hash, 'Test');
100
- });
101
- });
102
- });